yamllint 是什么
yamllint 检查 YAML 的语法与风格:缩进是否一致、单行是否超宽、布尔值是否用了有歧义的写法、括号与列表是否对齐等。它主要盯 CI 配置与 Kubernetes manifest 这类由机器读取的文件——这类文件出错时往往只报一句解析失败,定位成本高,机器检查比人工评审可靠。
基本信息
| 检查项 | 缩进、行宽、truthy、括号对齐、行尾空格等 |
|---|---|
| 配置文件 | .yamllint(也可用 -c 指定其他路径) |
| 内置配置 | default(默认严格)与 relaxed(宽松) |
| 输出格式 | -f parsable / standard / colored |
| 运行时机 | 本地手动、pre-commit 钩子或 CI |
典型使用场景
- CI 流水线配置提交前校验,避免整条流水线起不来
- Kubernetes manifest 及多文档文件的缩进一致性检查
- Ansible playbook、清单文件等运维侧 YAML 的统一风格
- 用 pre-commit 钩子在提交时拦截,问题不进入仓库
- 多仓库共享同一份配置,保证风格判定一致
- 排查缩进看起来一致却解析失败这类隐形字符问题
常用命令
常用命令
yamllint . # 检查当前目录下的 YAML 文件
yamllint -c .yamllint ci.yml # 用指定配置检查单个文件
yamllint -d relaxed . # 使用内置的宽松配置
yamllint -f parsable . > yamllint.txt # 输出便于 CI 解析的格式
pre-commit run yamllint --all-files # 通过 pre-commit 统一执行常见检查项
| 检查项 | 检查内容 | 常见触发 |
|---|---|---|
| indentation | 缩进层级与宽度一致 | 同一文件里混用不同缩进 |
| line-length | 单行最大长度 | 长 URL 或带参数的长命令 |
| truthy | 布尔值写法规范 | 用 yes / on 而不是 true |
| trailing-spaces | 行尾多余空格 | 复制粘贴带入 |
| comments | 注释符号后的空格与缩进 | 注释紧贴井号、缩进不齐 |
YAML 对缩进与布尔写法非常敏感:缩进混用制表符会直接解析失败,yes / on 在不同解析器里可能被当作字符串;提交前拦下来,比流水线跑一半失败便宜得多。
配置按场景取舍:Kubernetes manifest 里的长镜像名与 URL 常需要更宽的行长上限,CI 配置可以更严格;把配置文件放进仓库并随文件一起评审,本地编辑器插件与 CI 用同一份配置,结论才不会两样。