关于 local-ci
Local CI 是一个用于在推送前本地运行完整 CI 流水线的命令行工具。它支持失败时暂停并从指定步骤重试,也可输出供程序或 Agent 监控的 NDJSON 事件流。
主要功能
- 01本地运行完整 CI 流水线
- 02失败时自动暂停
- 03从失败或指定步骤重试
- 04输出 NDJSON 事件流
- 05提供结构化运行状态
适用场景
- 01推送前检查代码变更
- 02修复失败步骤后继续运行
- 03让 Agent 监控 CI 进度
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ redwoodjs/ local-ci --skill local-ci安装后在 Claude Code 中输入/local-ci确认已加载。
详细介绍
本地 CI
推送前,请在本地运行完整的 CI 流水线。开始前 CI 已通过,任何失败都由你的更改导致。
运行
npx run-local-ci run --quiet --all --pause-on-failure
管道安全可靠——暂停时,失败机制在 | tee log、> log.txt 等情况下同样有效。当标准输出不是 TTY 时,启动器会将运行转入后台,并在某个步骤暂停的瞬间让前台进程以 77 退出,释放管道,同时容器保持暂停状态,以便执行 retry。
重试
当某个步骤失败时,运行会自动暂停。修复问题后,重试:
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),以便在标准输出中生成 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 时会自动抑制差异渲染器,避免 ANSI 序列与事件流冲突。结合上述退出码 77 的暂停信号,这为 Agent 提供了可靠的约定:解析 run.paused 事件、作出响应,然后调用 retry——无需通过纯文本 grep 查找。
评论
支持 Markdown