我是YAML的新手,只知道JSON和XML格式
我有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文件中添加一些东西:
所以现在我有了这个,这是无效的,但我不明白为什么:
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 linter上,它说:
答案 0 :(得分:2)
这不是那么奇怪。您有一个键'7'
作为映射的第一个键值对,该映射是序列的第一个元素,即键node_js
的值(即文件中该标量的第二个出现)。
键的缩进是从行的开头开始的四个位置,因此它所属的映射的所有内容应该至少具有缩进。
env:
但是没有缩进四个位置,所以这是一个错误。
如果键'7'
的值为(不可见)null
,则再缩进env
。如果值是(以及其他)具有键env
)的映射,则缩进env
至少两个位置。
答案 1 :(得分: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 / addons密钥应用于Node.js版本,我不确定它是如何工作的。