CI Gate 用于在推送代码前于本地运行完整的 CI 检查,做到快速失败、完整报告。
用途:在本地复现 CI 流程,提前发现 lint、类型、测试和漏洞问题。
主要能力:
- 自动检测项目类型。根据工作目录中的标记文件判断技术栈:go.mod 对应 Go(go vet ./...、golangci-lint run ./...、go test -race -count=1 ./...、govulncheck ./...);package.json 对应 JS/TS(lint、typecheck、test,并按 bun.lockb、pnpm-lock.yaml、yarn.lock 识别包管理器,否则用 npm;存在 turbo.json 时改用 turbo run lint typecheck test);Cargo.toml 对应 Rust(cargo clippy -- -D warnings、cargo test、cargo audit);pyproject.toml 对应 Python(ruff check .、ruff format --check .、python -m pytest)。若存在多个标记文件,则对所有检测到的技术栈运行检查。
- 前置检查。运行前用 command -v 检查所需工具,把所有缺失工具汇总为一份列表统一报告。缺少关键工具(go、cargo、node、python)时停止并告知用户;仅缺少可选工具(golangci-lint、govulncheck、cargo-audit、turbo)时给出警告并跳过对应检查继续。
- 并行执行。在单次 Bash 调用中用后台任务并行运行所有检查,记录每项的退出码、耗时(通过 SECONDS)以及 stderr/stdout。
- 输出。先打印汇总表(Check、Status、Duration),对任何 FAIL 行在表下打印完整错误输出。任一检查失败则以退出码 1 结束,全部通过则为 0。
- --fix 模式。若 $ARGUMENTS 含 --fix,先运行自动修复:Go 用 golangci-lint run --fix ./...;JS/TS 用 <pm> run lint -- --fix(npm 需要 -- 转发参数)或 turbo run lint -- --fix;Rust 用 cargo clippy --fix --allow-dirty -- -D warnings;Python 用 ruff check --fix .、ruff format .。随后重新运行全部检查验证。不带 --fix 时不修改任何内容。
- 幂等性。不带 --fix 为只读、无副作用;带 --fix 的改动可通过 git diff 查看。
适用场景:提交或推送前的本地质量门禁,多语言仓库的统一检查。
限制:需本地已安装对应工具链;可选工具缺失时相关检查会被跳过;具体安装方式与更多配置资料暂未提供。