Local CI 用于在推送代码之前,在本地运行完整的 CI 流水线。其核心理念是:在你开始改动之前 CI 是绿色的,因此任何失败都由你的改动引起。
用途 在本地验证代码改动,避免为了触发远程 CI 而反复推送。当需要测试、运行检查或验证代码改动时使用。
运行方式 使用以下命令运行完整 CI:
npx run-local-ci run --quiet --all --pause-on-failure
管道是安全的——pause-on-failure 在通过 | tee log、> log.txt 等重定向时仍然有效。当 stdout 不是 TTY 时,启动器会分离运行,前台进程会在某个步骤暂停的瞬间以退出码 77 退出,从而释放管道,同时容器保持暂停状态以便重试。
重试 当某个步骤失败时,运行会自动暂停。修复问题后重试:
npx run-local-ci retry --name <runner-name>
若要从更早的步骤重新运行:
npx run-local-ci retry --name <runner-name> --from-step <N>
重复此过程直到所有作业通过。当 local-ci 可以在本地运行时,不要通过推送来触发远程 CI。
机器可读输出(--json) 用于程序化监控时,添加 --json(或设置 LOCAL_CI_JSON=1)会在 stdout 上输出 NDJSON 事件流——每行一个 JSON 对象。事件包括:
- run.start(带 schemaVersion: 1、runId)
- job.start、job.finish(status: passed|failed)
- step.start、step.finish(status: passed|failed|skipped)
- run.paused(携带 runner + retry_cmd)
- run.finish(status: passed|failed)
- diagnostic
--json 与 --quiet 解耦,并且在 --json 下会自动抑制 diff 渲染器,以免 ANSI 序列与事件流冲突。结合上述退出码 77 的暂停信号,这为智能体提供了稳健的契约:解析 run.paused 事件、做出反应并调用 retry——无需纯文本 grep。
适用场景 适用于需要在推送前本地验证 CI 的开发者,以及需要以程序化方式监控 CI 运行状态的自动化智能体。
限制 资料未提供关于支持的操作系统、依赖环境、收费方式或价格等信息。