配置文件写错一个缩进,可能导致生产环境崩溃。这类错误本应在部署前就被发现,但大多数项目缺乏系统化的配置验证方案。config-file-validator 是波音公司开源的一款跨平台 CLI 工具,专门解决这一问题——用单一工具统一验证项目中的所有配置文件。

项目概览

属性内容
GitHubBoeing/config-file-validator
Stars501
语言Go
特点零依赖、15+格式支持、Schema验证
最后更新1天前

它解决了什么问题

现代项目的配置散落在各处:

  • package.json 定义依赖和脚本
  • docker-compose.yml 编排服务
  • .github/workflows/*.yml 配置 CI/CD
  • terraform/*.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-jsonschema800+Python,Schema 验证强需 Python 环境
kubeval3.2kKubernetes 专用仅验证 Kubernetes
prettier50k+格式化为主非验证工具
config-file-validator501多格式统一验证Schema 生态较新

适合谁用

config-file-validator 很适合:

  • 维护多技术栈项目的团队(同时用 JSON/YAML/TOML 等)
  • 希望统一 CI/CD 流程的 DevOps 工程师
  • 追求零依赖、单二进制部署的场景
  • 需要在提交前本地快速验证配置的开发者

不太适合:

  • 单一技术栈且已有成熟验证方案的项目
  • 需要深度自定义验证规则的场景

总结

波音公司将内部实践开源,体现了工程团队对配置管理的重视。501 个 stars 说明它还处于成长阶段,但功能已经相当扎实——尤其是「一个工具覆盖所有配置」的设计理念,解决了许多项目的痛点。

如果你的项目里散落着各种格式的配置文件,而验证流程又各自为政,这款工具值得纳入工具链。

属性内容
仓库https://github.com/Boeing/config-file-validator
许可证Apache 2.0
语言Go
维护者Boeing