如何从命令行验证我的 YAML 文件?
我在从 YAML 配置文件中提取内容时遇到问题:
致命错误:解析块映射时;预期<块结束>,但发现块入口
虽然有很多在线 YAML 验证器(我已经尝试过并提供了帮助),但我想从命令行验证我的 YAML 文件并将其集成到我的持续集成管道中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
通过基本的 Ruby 安装,这应该可以工作:
Python 版本(thx @Murphy):
With basic Ruby installation this should work:
Python version (thx @Murphy):
您可以使用 yamllint。它可用于 Homebrew 等。它可用于语法验证以及 linting。
You could use yamllint. It's available in Homebrew, etc. It can be used for syntax validation as well as for linting.
要更正您的
.yaml
文件,我推荐使用 yamllint 工具。它可以从本地控制台轻松启动。包
yamllint
适用于所有主要操作系统。它可以从系统的包源安装。 (例如 sudo apt-get install yamllint )。
查看快速入门和安装文档。
To correct your
.yaml
files I recommend the tool yamllint. It can be launched easily from the local console.The package
yamllint
is available for all major operating systems.It's installable from the system's package sources. (e.g.
sudo apt-get install yamllint
).See documentation for quick start and installation.
假设您在正在使用的服务器上安装了 perl,并且它具有一些基本的 YAML 工具,您可以使用...
应该注意的是,这对文件的解释将是严格的,但很有用。
Given that you have a perl install on the server you are working on, and it has some of the basic YAML tools, you can use...
It should be noted that this will be strict in it's interpretation of the file, but useful.
使用yq工具!
它还显示所有值,您可以通过重定向输出来抑制它(无论如何都会显示错误):
安装 yq 工具:
酿造安装 yq
snap brew install yq
更多信息请参见 yq GitHub 页面(包括 Windows 二进制文件):https:// /github.com/mikefarah/yq
Use the yq tool!
It also displays all the values, you can suppress that by redirecting the output (anyway errors will be displayed):
Install yq tool:
brew install yq
snap brew install yq
More on the yq GitHub page (including Windows binaries): https://github.com/mikefarah/yq
我首选的方法是使用 yamllint (
pip install yamllint
)yamllint -d "{extends: default, Rules: {quoted-strings: enable}}" 。
因为我真的想要捕获报价错误,
例如
validate: bash -c ' ' \""
这是有效的 yaml,因为 yaml 只会引用该字符串并将其转换为:
validate: "bash -c ' ' \\\"\""
而验证命令的开头显然缺少一个引号。
因此,普通的 yaml 检查器不会检测到这一点,yamllint 甚至不会在其默认配置中检测到这一点,因此请打开引用字符串检查器。
My preferd way is using yamllint (
pip install yamllint
)yamllint -d "{extends: default, rules: {quoted-strings: enable}}" .
Since I really want to catch quote errors,
e.g.
validate: bash -c ' ' \""
This is valid yaml, since yaml will just quote the string and turn it into:
validate: "bash -c ' ' \\\"\""
Whilst there was just clearly a quote missing at the beginning of the validate comand.
So a normal yaml checker will not detect this, yamllint wil not even detect this in it's default configuration, so turn on quoted-strings checker.
另一个选项是 yaml-lint ,它取决于 Node.JS:
npm install -g yaml-lint
yamllint file.yaml
Another option is yaml-lint that depends on Node.JS:
npm install -g yaml-lint
yamllint file.yaml
如果您的环境中没有安装解释器,但仍然出现 curl,那么您可以使用在线 linter 项目,例如 Lint-Trilogy:
它提供验证结果,包括。错误描述(如果有)为 json 或 csv,或者在足够的情况下,为纯文本 true 或 false。
它也可以作为 docker 文件提供。因此,如果您经常需要基于 REST 的 linter,也许在 CI/CD 管道中,那么在您的站点上托管自己的实例可能会很方便。
If you got no interpreter installed in your environment but still got a curl, then you could use an online linter project like Lint-Trilogy:
It delivers the validation result incl. error descriptions (if any) as json or csv or, where sufficient, as plain text true or false.
It's available as docker file, too. So if you often need a REST based linter, perhaps in a CI/CD pipeline, it may be handy to host an own instance on your site.
或者交替安装(免费)Eclipse IDE,然后安装 YEdit yaml 编辑器,然后使用语法突出显示、错误标志和大纲视图查看 yaml。一次性设置成本对我来说非常有效。
Or alternately installed (free) Eclipse IDE and then YEdit yaml editor and see your yaml with syntax highlighting, error flags, and outline views. One time setup cost works pretty well for me.