travis CI的.travis.yml配置文件是否支持YAML指令?

travis CI的.travis.yml配置文件是否支持YAML指令?,yaml,travis-ci,Yaml,Travis Ci,YAML支持一种称为指令的语言特性,如图所示,我试图使用的特定指令是版本指令。该指令只是放在YAML文档开头的字符串“%YAML 1.1”,其中1.1是文档的兼容YAML规范版本。通过标记我的文档的YAML版本,我正在寻求YAML配置内容的明显清晰性 Travis CI开发人员通过Travis yaml gem的“dogfooding”为Travis CI配置文件开发。这个linter能够给出特定的错误和错误位置-它非常有助于验证.travis.yml文件是否有效,并且在配置我的travis C

YAML支持一种称为指令的语言特性,如图所示,我试图使用的特定指令是版本指令。该指令只是放在YAML文档开头的字符串“%YAML 1.1”,其中1.1是文档的兼容YAML规范版本。通过标记我的文档的YAML版本,我正在寻求YAML配置内容的明显清晰性

Travis CI开发人员通过Travis yaml gem的“dogfooding”为Travis CI配置文件开发。这个linter能够给出特定的错误和错误位置-它非常有助于验证.travis.yml文件是否有效,并且在配置我的travis CI构建作业时,我非常自由地使用它。尽管使用的YAML指令是有效的YAML,但travis YAML linter说使用该指令是一个错误(它甚至拒绝阅读文档的其余部分!)


本质上,我的问题是关于上述YAML指令以及Travis CI对该指令的支持。Travis CI是否支持有效的YAML指令,如“%YAML 1.2”?.travis.yml文件是否实际使用了某种程度上不兼容的YAML解析器,并将其配置为专门用于解析.travis.yml,而不仅仅是普通的YAML解析器?

linting工具会毫无问题地验证以下YAML:

%YAML 1.1
---
language: python
python:
  - "2.7"
  - "3.5"
  - "3.6"
# command to run tests
script: nosetests
因此,我怀疑您的YAML不知何故存在错误(您是否忘记了将指令与文档其余部分分开的
--


请注意,travis linter不支持YAML 1.2(2009年指定),仅支持较旧的YAML 1.1规范。如果您在上面的YAML文件中将
1.1
更改为
1.2
,那么linter将在第1行第1列给出
发现不兼容的YAML文档,并错误地调用语法错误

是的,我不知何故丢失了
--
行。我一定是因为某种原因错误地删除了它,但现在我重新插入了它,那么linter对指令没有任何问题。谢谢另一方面,你知道为什么linter认为
env:matrix:includes:
键中的
language:generic
无效吗?实际生成计算机按预期运行配置,文档表明允许使用这样的密钥。事实上,如果删除该选项,则构建将失败,且未选择任何语言!我不确定如果没有正确的格式来源,我是否会得到额外的问题。但是
language:generic
是一个普通的标量值,因为
后面没有空格,如果linter不喜欢这样,那就是不正确的。我发布了YAML文档,删除了敏感数据。我知道文档还没有准备好使用,因为部署部分还没有完成。shell脚本不相关,所以我也忽略了它们。YAML很好。我怀疑这是linter和实际travis代码在语义检查方面的差异。如果两者的代码都不共享,那么这种情况很容易发生(并且不使用Travis-YAML格式中的YAML标记来表示语义不同的元素,这就不容易发现)。