9ba9b3da0f
When BUILD_VENUE=ci, init confirms tea/glab/gh/curl (or a custom command) and writes .pouch/builder/ci-status.sh. wait_ci.sh only polls that script and no longer guesses forge CLIs.
1.6 KiB
1.6 KiB
CI 状态查询脚本
BUILD_VENUE=ci 时,流水线状态由项目脚本查询。builder 只轮询这份脚本,
不在 skill 里猜 gh / glab / tea / curl。
初始化
选 ci 后确认查询方式,再生成脚本:
<skill-dir>/scripts/init_ci_status.sh --root <project> --kind tea|glab|gh|curl
写出 .pouch/builder/ci-status.sh(可执行、进 git)。makefile.builder 写:
BUILD_VENUE ?= ci
CI_STATUS_SCRIPT ?= .pouch/builder/ci-status.sh
相对路径只能在 .pouch/builder/ 下。凭据仍放 .env.builder(如 GITEA_TOKEN),
不要写进脚本参数或日志。
用户给了自定义命令时,把该命令写进同一份脚本,输出必须符合下方契约。
调用
.pouch/builder/ci-status.sh --sha <40-character-sha>
只查询、不触发流水线。BUILDER_PROJECT_ROOT 是项目根。
输出
退出 0 且 stdout 含 STATUS= 键值(可多行或同一行):
| STATUS | 含义 |
|---|---|
empty |
该 SHA 还没有流水线 |
running |
已出现、尚未结束 |
success |
该 SHA 的流水线成功 |
failed |
失败、取消或超时 |
error |
查询本身失败(鉴权、CLI 缺失) |
可选:ID=、PIPELINE=(URL)、JOBS=。
| 退出码 | 含义 |
|---|---|
| 0 | 已查出状态(含 empty/running/failed) |
| 2 | 用法错误 |
| 3 | 无法查询(缺 CLI、未登录、被拒绝) |
wait_ci.sh 按这份输出轮询:empty 超过出现窗口记 no_pipeline;
success 才继续 obtain;failed 原样失败。