config-file-validator:501⭐的跨平台配置验证工具,波音出品
配置文件写错一个缩进,可能导致生产环境崩溃。这类错误本应在部署前就被发现,但大多数项目缺乏系统化的配置验证方案。config-file-validator 是波音公司开源的一款跨平台 CLI 工具,专门解决这一问题——用单一工具统一验证项目中的所有配置文件。
项目概览
| 属性 | 内容 |
|---|---|
| GitHub | Boeing/config-file-validator |
| Stars | 501 |
| 语言 | Go |
| 特点 | 零依赖、15+格式支持、Schema验证 |
| 最后更新 | 1天前 |
它解决了什么问题
现代项目的配置散落在各处:
package.json定义依赖和脚本docker-compose.yml编排服务.github/workflows/*.yml配置 CI/CDterraform/*.tf管理基础设施.env存储环境变量
手动检查这些文件的语法既低效又容易遗漏。更糟糕的是,很多配置错误只有在运行时才会暴露——比如 YAML 的缩进错误可能导致整个部署流程失败。
config-file-validator 的定位是「配置文件的守门员」:在代码合并前、部署前,自动检查所有配置文件的语法正确性。
核心特性
📦 单一二进制,零依赖
不同于需要 Node.js、Python 或 Java 运行时的验证工具,config-file-validator 是单个可执行文件:
# 直接下载使用,无需安装运行时
curl -L -o validator https://github.com/Boeing/config-file-validator/releases/latest/download/validator-linux-amd64
chmod +x validator
./validator
🗂️ 15+ 格式支持
涵盖主流配置格式:
| 格式 | 语法验证 | Schema验证 |
|---|---|---|
| JSON | ✅ | ✅ |
| YAML | ✅ | ✅ |
| TOML | ✅ | ✅ |
| XML | ✅ | ✅ (XSD) |
| HCL | ✅ | ❌ |
| INI | ✅ | ❌ |
| ENV | ✅ | ❌ |
| CSV | ✅ | ❌ |
| Properties | ✅ | ❌ |
🔍 智能文件识别
工具内置了来自 GitHub Linguist 的常见配置文件映射表,能自动识别无扩展名的配置文件:
.babelrc→ 按 JSONC 验证Pipfile→ 按 TOML 验证pom.xml→ 按 XML 验证.gitconfig→ 按 INI 验证
无需额外配置,直接运行即可。
🧪 Schema 验证
JSON 和 YAML 文件可配置 JSON Schema 验证,且自动集成 SchemaStore:
# 自动识别 tsconfig.json 并应用官方 Schema
validator tsconfig.json
# 自定义 Schema 映射
validator --schema-mapping '{"*.config.yaml": "./schemas/config.json"}' .
快速开始
安装
# macOS (Homebrew)
brew tap Boeing/tap
brew install config-file-validator
# Go install
go install github.com/Boeing/config-file-validator/v2@latest
# 或直接下载二进制
# https://github.com/Boeing/config-file-validator/releases
基本用法
# 验证当前目录所有配置文件
validator
# 验证指定目录
validator ./configs
# 验证特定文件
validator docker-compose.yml k8s/deployment.yaml
# 排除路径
validator --exclude="vendor,node_modules" .
# 递归验证
validator --recursive .
# 输出 JSON 格式(CI/CD 友好)
validator --output=json .
# 静默模式(仅返回退出码)
validator --quiet .
CI/CD 集成示例
GitHub Actions:
name: Config Validation
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Boeing/config-file-validator-action@v2
with:
paths: '.'
recursive: 'true'
同类工具对比
| 工具 | Stars | 特点 | 局限 |
|---|---|---|---|
| check-jsonschema | 800+ | Python,Schema 验证强 | 需 Python 环境 |
| kubeval | 3.2k | Kubernetes 专用 | 仅验证 Kubernetes |
| prettier | 50k+ | 格式化为主 | 非验证工具 |
| config-file-validator | 501 | 多格式统一验证 | Schema 生态较新 |
适合谁用
config-file-validator 很适合:
- 维护多技术栈项目的团队(同时用 JSON/YAML/TOML 等)
- 希望统一 CI/CD 流程的 DevOps 工程师
- 追求零依赖、单二进制部署的场景
- 需要在提交前本地快速验证配置的开发者
不太适合:
- 单一技术栈且已有成熟验证方案的项目
- 需要深度自定义验证规则的场景
总结
波音公司将内部实践开源,体现了工程团队对配置管理的重视。501 个 stars 说明它还处于成长阶段,但功能已经相当扎实——尤其是「一个工具覆盖所有配置」的设计理念,解决了许多项目的痛点。
如果你的项目里散落着各种格式的配置文件,而验证流程又各自为政,这款工具值得纳入工具链。
| 属性 | 内容 |
|---|---|
| 仓库 | https://github.com/Boeing/config-file-validator |
| 许可证 | Apache 2.0 |
| 语言 | Go |
| 维护者 | Boeing |