跳转到内容

cnb-rs build watch

cnb-rs build watch <sn> [--interval <SECS>] [--max-wait <SECS>] [--exit-status]
cnb-rs run watch <sn>     # 命令组 alias

Polling 构建状态直到进入终态(success / error / failed / cancel / cancelled / canceled)。 对齐 gh run watch

适合在 CI 脚本里等待某次构建完成后再走后续步骤,或本地终端实时观察远程构建进度。

选项

  • <sn>:构建号(必填)
  • -i, --interval <SECS>:Polling 间隔(秒),默认 5
  • --max-wait <SECS>:最大等待时长(秒),默认 7200(2 小时)
  • --exit-status:终态时按构建结果决定退出码
    • success → 退出码 0
    • 其他终态 → 退出码 1
    • 对齐 gh run watch --exit-status

继承的全局选项:

  • --repo <REPO>:指定仓库路径(格式:group/repo
  • --json:以 JSON 格式输出每次 poll snapshot(适合脚本流式消费)
  • --domain <DOMAIN>:指定目标域名(默认:cnb.cool

与 gh 的差异

  • gh run watch 输出每条 job 的实时进度(基于 GitHub Actions 流式日志)
  • CNB 端没有公开的流式日志 API,watch 只能轮询 get_build_status,所以只刷新「总状态 + 已等时长」,不能逐 step 显示
  • 想看流水线 / stage 分段进度,可在 watch 之外手动用 cnb-rs build status <sn> 查看一次完整快照

示例

bash
# 等待构建完成(每 5 秒 poll 一次,最长等 2 小时)
$ cnb-rs build watch cnb-1qa-1i3f5ecau
Watching cnb-1qa-1i3f5ecau (interval=5s, max-wait=7200s)
 cnb-1qa-1i3f5ecau pending (已等 10s)
 cnb-1qa-1i3f5ecau running (已等 1m 25s)
 构建 cnb-1qa-1i3f5ecau 已结束: success (总耗时 12m 03s)

# 1 秒高频 poll、最长 5 分钟
$ cnb-rs build watch cnb-1qa-1i3f5ecau -i 1 --max-wait 300

# CI 脚本:用 exit-status 决定 pipeline 是否继续
$ cnb-rs build watch cnb-1qa-1i3f5ecau --exit-status && deploy.sh

# JSON 流式输出供脚本消费
$ cnb-rs build watch cnb-1qa-1i3f5ecau --json
{"elapsed_ms":1,"sn":"cnb-1qa-1i3f5ecau","status":"pending"}
{"elapsed_ms":5023,"sn":"cnb-1qa-1i3f5ecau","status":"running"}
{"elapsed_ms":723451,"sn":"cnb-1qa-1i3f5ecau","status":"success"}

行为细节

  • 终态匹配 大小写无关:Success / SUCCESS / success 都识别为同一终态
  • 超时退出 (elapsed > --max-wait):以非零退出码 bail「等待超时」
  • 网络错误:单次 get_build_status 失败直接 bail(不重试),便于上层脚本快速感知
  • interval < 1:自动按 1 秒处理,防止打爆服务端

另请参阅

Released under the MIT License.