如何从命令行验证我的YAML文件?

65 yaml

我在从YAML配置文件中提取问题:

致命错误:解析块映射时; 预期<block end>,但发现BlockEntry

虽然有很多在线YAML验证器,我已经尝试并帮助过,但我想从命令行验证我的YAML文件并将其集成到我的持续集成管道中.

如何在命令行上验证YAML文件的语法?

Tom*_*art 115

使用基本的Ruby安装,这应该工作:

ruby -ryaml -e "p YAML.load(STDIN.read)" < data.yaml
Run Code Online (Sandbox Code Playgroud)

Python版本(thx @Murphy):

pip install pyyaml
python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml
Run Code Online (Sandbox Code Playgroud)

  • 如果您从末尾删除 `puts y`,那么您将获得更标准的 UNIX 行为:如果文件有效,则不会打印任何内容,如果文件无效,则您将看到异常和堆栈跟踪。 (2认同)
  • 如果您真的只是将其用作 ci 测试管道的一部分,那么根本不需要“puts”。如果有效,返回代码只是“0”,否则非零,您将获得异常堆栈跟踪。如果您正在查看 CLI 输出,也会减少它的噪音。 (2认同)
  • `python -c '导入 yaml, sys; yaml.safe_load(sys.stdin)' &lt; data.yaml` 给python爱好者.. (2认同)

Jam*_*iew 23

你可以使用yamlint。它在 Homebrew 等中可用。它可用于语法验证和 linting。


小智 17

鉴于您正在使用的服务器上安装了perl,并且它具有一些基本的YAML工具,您可以使用...

perl -MYAML -e 'use YAML;YAML::LoadFile("./file.yaml")'
Run Code Online (Sandbox Code Playgroud)

应该注意的是,这对文件的解释是严格的,但是很有用.

  • 找不到YAML.pm (3认同)
  • / usr/bin/perl -MCPAN -e'安装YAML' (3认同)

小智 16

为了更正您的.yaml文件,我推荐使用 yamllint 工具。它可以从本地控制台轻松启动。

该软件包yamllint适用于所有主要操作系统。

它可以从系统的软件包源安装。(例如sudo apt-get install yamllint)。 有关快速启动和安装的信息,请参阅文档。

  • `yamllint` 默认情况下将很多事情称为“错误”,这实际上是完全可以接受的。例如,行太长,或者缩进“错误”。我确信它可以定制来修复这些问题,但对于许多常见的用例来说它太挑剔了。 (5认同)