2016-11-28 25 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),所以我仍然在语义上和语义上都处于黑暗中, 好吧 :) –