SuperAPI AI 工具集

deployment-checker

部署与运维

查看项目

更新于 10-15 13:46

技能介绍

deployment-checker 是自主部署流水线的第 2 阶段技能,用于在代码合并后验证线上部署是否成功。

用途 它在 PR 合并后轮询团队的健康检查端点,直到线上部署的 sha 与合并 PR 的 sha 匹配,或达到超时。完成后输出结构化结果,并给 PR 打上 deployed 或 deploy-failed 标签。其设计目标是轮询期间零 token 消耗——Claude 代理仅在设置轮询和处理结果时运行,实际等待全部由 bash 脚本承担。

触发方式

  • 由 /post-merge 在 PR 合并后自动派发。
  • 手动调用:/deployment-checker PR_NUMBER org/repo,例如 /deployment-checker 42 fellowship-dev/pylot。参数为 PR_NUMBER=$1 和 REPO=$2。

主要流程

  1. 去重门(Dedup Gate):检查 PR 上是否已存在 deployed 或 deploy-failed 标签,若已存在则直接退出并返回 already complete,避免重复校验。
  2. 读取上下文:从 job context(由 /post-merge 设置)提取参数,包括 EXPECTED_SHA(等待的合并提交 sha)、HEALTH_URL(轮询端点)、TIMEOUT_MINUTES(最大等待分钟,默认 5)、CHECKER_SCRIPT(团队 bash 轮询脚本路径)、POLL_INTERVAL(轮询间隔秒数,默认 30)。若 HEALTH_URL 或 CHECKER_SCRIPT 缺失,报错并以状态 1 退出。
  3. 运行 bash 轮询脚本:由团队特定脚本执行实际轮询,使 Claude 在等待期间不参与。脚本成功退出码为 0,失败或超时非 0。标准输出格式如 deploy_status=success sha=abc123 或 deploy_status=failed reason=OOM。结果通过 python3 正则解析(避免 macOS/BSD 上不可用的 grep -P)。
  4. 打标签并评论:成功时创建(若缺失)并添加 deployed 标签(颜色 0e8a16),并评论部署已验证,包含状态、部署 SHA、健康 URL、等待时长;失败或超时时创建并添加 deploy-failed 标签(颜色 d93f0b),评论失败原因、健康 URL、超时时间与预期 SHA,并提示手动检查。
  5. 写入报告:把结果写入 reports 目录下的 Markdown 报告文件,包含日期、PR 链接与标题、状态、SHA、原因和轮询输出。

团队脚本接口 每个团队在 CLAUDE.md 配置脚本路径,脚本须满足:

  • 输入环境变量:HEALTH_URL(必需,用于 GET 健康检查的 URL)、EXPECTED_SHA(可选,等待的 git sha)、TIMEOUT_MINUTES(可选,默认 5)、POLL_INTERVAL(可选,默认 30)。
  • 退出码:0 表示部署确认,1 表示超时或失败。
  • 标准输出最后一行格式:deploy_status=success sha=abc123def456,或 deploy_status=failed reason=timeout_after_5min / health_check_returned_503。 资料提供了示例最小脚本,使用 curl 轮询并结合 python3 解析响应中的 sha 字段,在匹配或健康检查返回 200 时成功,否则超时失败。

注意事项

  • 轮询期间零 token 消耗,Claude 仅在脚本前后运行。
  • SHA 比较是可选的:若 EXPECTED_SHA 为空,则仅确认健康端点返回 200。
  • 超时可按团队配置,例如 Pylot(自动拉取)5 分钟,Lexgo(GitHub Actions + Fly.io)30 分钟。
  • deployed 标签会通过 event-rules 链接到 /post-deploy,无需手动交接。
  • 单体仓库(monorepo)场景下,可为每个目标派发一个 deployment-checker 作业。

限制与缺失信息 资料未提供该技能的收费、价格、支持平台、具体性能指标以及除上述内容外的其他使用步骤,相关信息暂未提供。