2016-11-28 27 views
0

我是新來YAML,只知道JSON和XML格式YAML語法問題

我有TravisCI此.yml配置和它有一些奇怪的語法錯誤,我無法弄清楚如何解決它。

本來我有這個,一切都還順利:

language: node_js 
node_js: 
    - '7' 
    - '6' 
    - '5' 
    - '4' 
script: 'npm install istanbul && node cli.js --coverage test/testsrc/es5-es6/a.js' 
after_script: 'npm install coveralls && cat coverage/lcov.info | ./node_modules/.bin/coveralls' 
notifications: 
    email: false 
    slack: 
    rooms: 
     - sumanjs:gvauyHhXXXXXpV5v8LlQOAcI#general 

不過,我看到,我們需要得到容器提供一些C++庫,所以我不得不有的一些東西添加到.yml文件根據這些指令:

https://docs.travis-ci.com/user/languages/javascript-with-nodejs#Node.js-v4-(or-io.js-v3)-compiler-requirements

所以現在我有這個,這是無效的,但我不知道爲什麼:

language: node_js 
node_js: 
    - '7': 
    env: 
     - CXX=g++-4.8 
    addons: 
     apt: 
     sources: 
      - ubuntu-toolchain-r-test 
     packages: 
      - g++-4.8 
    - '6': 
    env: 
     - CXX=g++-4.8 
    addons: 
     apt: 
     sources: 
      - ubuntu-toolchain-r-test 
     packages: 
      - g++-4.8 
    - '5': 
    env: 
    - CXX=g++-4.8 
    addons: 
    apt: 
     sources: 
     - ubuntu-toolchain-r-test 
     packages: 
     - g++-4.8 
    - '4': 
    env: 
    - CXX=g++-4.8 
    addons: 
    apt: 
     sources: 
     - ubuntu-toolchain-r-test 
     packages: 
     - g++-4.8 
script: 'npm install istanbul && node cli.js --coverage test/testsrc/es5-es6/a.js' 
after_script: 'npm install coveralls && cat coverage/lcov.info | ./node_modules/.bin/coveralls' 
notifications: 
    email: false 
    slack: 
    rooms: 
     - sumanjs:gvauyHhXXXXXcuzpV5QOAcI#general 

我把這個交給一個YAML棉短絨和它說:

enter image description here

回答

2

這不是太奇怪了。您具有密鑰'7'作爲映射的第一個鍵值對,該映射是作爲鍵node_js(即文件中該標量的第二次出現)的值的序列的第一個元素。

該鍵的縮進位置是從行首開始的四個位置,因此映射的所有內容都應至少包含該縮進。 env:但是沒有縮進四個位置,所以這是一個錯誤。

如果鍵'7'的值是(不可見的)null那麼縮進env多一個。如果該值是(除其他之外)具有密鑰env的映射,則縮進env至少兩個以上的位置。

+0

謝謝,我更新了問題,使其更清楚,我開始了有效的yml,添加了一些東西,現在它是無效的,仍然試圖找出這一點 –

0

顯然使用正確的格式是像這樣:

language: node_js 
node_js: 
    - '7' 
    - '6' 
    - '5' 
    - '4' 
env: 
    - CXX=g++-4.8 
addons: 
    apt: 
    sources: 
     - ubuntu-toolchain-r-test 
    packages: 
     - g++-4.8 

script: 'npm install istanbul && node cli.js --coverage test/testsrc/es5-es6/a.js' 
after_script: 'npm install coveralls && cat coverage/lcov.info | ./node_modules/.bin/coveralls' 
notifications: 
    email: false 
    slack: 
    rooms:XXXXXXXXXzpV5v8LXXcI#travis-ci 

如果我們想將env /插件鍵適用於單獨Node.js的版本,但是,我不知道怎麼會工作。

+0

有一件事是一個正確的YAML文件,因爲你必須進一步縮進'env'就像我在我的答案中指出的那樣。另一件事是,YAML一旦可以加載,是否在語義上是Travis的正確輸入。後面的部分我無法幫助你。 – Anthon

+0

是的,這是真的,我個人缺少關於Travis的困難情況的語法和語義正確的yaml的信息。這似乎適用於Travis,但我不確定爲什麼env/addon鍵/值沒有爲每個Node.js版本單獨定義(4,5,6,7),所以我仍然在語義上和語義上都處於黑暗中, 好吧 :) –