我有问题从 YAML 配置文件拉:
致命错误: 当解析块映射时; 预期 < 块结束 > ,但找到了块条目
虽然有很多在线 YAML 验证器,我已经尝试过并帮助过它们,但是我想从命令行验证我的 YAML 文件,并将其集成到我的持续集成管道中。
假设您在正在使用的服务器上安装了 perl,并且它具有一些基本的 YAML 工具,那么您可以使用..。
perl -MYAML -e 'use YAML;YAML::LoadFile("./file.yaml")'
应该注意的是,这将是严格的解释文件,但有用的。
对于基本的 Ruby 安装,这个应该可以工作:
ruby -ryaml -e "p YAML.load(STDIN.read)" < data.yaml
Python 版本(thx@Murphy) :
pip install pyyaml python -c 'import yaml, sys; print(yaml.safe_load(sys.stdin))' < data.yaml
或者交替安装(免费) Eclipse IDE 和 yEdit yaml 编辑器,查看带有语法突显、错误标志和大纲视图的 yaml。一次性安装成本对我来说相当不错。
你可以用 Yamllint。可以在家酿等。它既可以用于语法验证,也可以用于链接。
为了更正您的 .yaml文件,我推荐使用 yamllint 工具。它可以很容易地从本地控制台启动。
.yaml
yamllint软件包适用于所有主要操作系统。
yamllint
它可以从系统的包源安装(例如 sudo apt-get install yamllint)。 请参阅有关快速启动和安装的文档。
sudo apt-get install yamllint
如果您的环境中没有安装解释器,但仍然有一个 卷发,那么您可以使用在线线程项目,如 林特三部曲:
curl -X POST --data "data=$(cat myfile.yml)" https://www.lint-trilogy.com/lint/yaml/json
它提供验证结果,包括错误描述(如果有的话)作为 json 或 csv,如果足够的话,作为纯文本 没错或 假的。
还有码头档案。因此,如果您经常需要一个基于 REST 的行程(可能是在 CI/CD 管道中) ,那么在您的站点上托管一个自己的实例可能会很方便。
我更喜欢的方式是 yamllint -d "{extends: default, rules: {quoted-strings: enable}}" .
yamllint -d "{extends: default, rules: {quoted-strings: enable}}" .
因为我真的想抓住引用错误, 例如 validate: bash -c ' ' \""
validate: bash -c ' ' \""
这是有效的 yaml,因为 yaml 只引用字符串并将其转换为: validate: "bash -c ' ' \\\"\""
validate: "bash -c ' ' \\\"\""
虽然在 valid命令的开头明显缺少一个引号。
所以普通 yamllint 检查器不会检测到这一点,yamllint 甚至不会在它的默认配置中检测到这一点,所以打开引号字符串检查器。