SuperAPI AI 工具集

git-ci

部署与运维

查看项目

更新于 10-15 12:04

技能介绍

git-ci 是一个面向 CI/CD 状态查询的技能,覆盖 GitHub Actions(通过 gh)与 GitLab CI(通过 glab)两大平台,用于检查流水线状态、失败任务、运行日志、工作流管理以及合并就绪评估。所有查询配方都使用最小字段集,以提升 token 效率。

用途

该技能适用于以下场景:检查 CI 状态(如“检查是否通过”“什么失败了”、流水线状态);监视 CI 运行(等待完成、出错时快速失败);调试失败(查看失败任务的日志、识别不稳定的测试);评估合并就绪(所有检查为绿、评审已批准、无冲突);列出工作流运行(最近的流水线、特定工作流历史);配置 CI 允许列表(只读 CI 命令的自动批准模式)。

主要能力

技能提供按平台划分的命令配方。GitHub 侧包括:用 gh pr checks 查询当前分支 CI 状态;用 gh pr checks --watch --fail-fast 监视直到完成;用 gh run list 列出最近运行;用 gh run view 查看特定运行详情;用 gh run view --log-failed 查看失败日志;用 gh pr view 评估合并就绪;用 gh variable list 和 gh secret list 查看变量与密钥。GitLab 侧包括:用 glab ci status 查询当前分支状态;用 glab ci get 查看完整详情;用 glab ci status --live 实时监视;用 glab ci list 列出流水线;用 glab ci view 查看特定流水线;用 glab ci trace 查看任务日志;用 glab mr view -F json 评估合并就绪;用 glab variable list 查看变量。

使用方式

首先进行提供方检测:运行 git remote get-url origin,若远程 URL 包含 github.com 则使用 gh 与 GitHub Actions;若包含 gitlab.com 或自托管 GitLab 则使用 glab 与 GitLab CI;若存在歧义或两者都有,则询问用户。命令应严格按技能所示使用,因为命令设计为匹配自动批准允许列表模式,随意更改标志可能触发权限提示。使用 gh 时应始终配合 --json 过滤输出字段,完整 JSON 输出会浪费 token。

关键规则

查询当前分支 CI 状态应使用 gh pr checks(而非 gh run),该子命令直接映射到 PR 所需的状态检查;GitLab 中应使用 glab ci status。gh pr checks 接受的字段恰好为 bucket、completedAt、description、event、link、name、startedAt、state、workflow,没有 conclusion 字段,未知字段会导致命令以 Unknown JSON field 中止。绿色勾选并不总代表任务已完成,应读取 description 字段:应用和机器人检查可能对未实际执行工作的结果报告 state: SUCCESS / bucket: pass,例如 CodeRabbit 在从未评审代码时发布 Review rate limited 作为成功检查。description 是结果所在之处,默认不返回,且 gh pr view --json statusCheckRollup 会完全丢弃它。

评审机器人检查(GitHub)

评审机器人以提交状态形式发布结果,且始终为绿色。在检查列表中它与其他 CI 任务并列显示为 CodeRabbit -- Review rate limited 并带勾选,读起来像“全部通过”,实际含义是代码从未被评审。可用 gh pr checks --json name,state,bucket,description --jq '.[] | select(.name|ascii_downcase|startswith("coderabbit"))' 读取机器人行。state 只能区分运行中与已完成,两种完成结果都是 success。资料提到,在某个账户的 25 个 PR 中,62 轮里有 15 轮返回 Review rate limited,即约四分之一的情况下绿色勾选旁边实际什么都没评审。gh pr view --json statusCheckRollup 只返回 context/state/targetUrl(无 description),gh api repos/{owner}/{repo}/commits/{sha}/check-runs 完全不列出它,因为它是一个提交状态,可通过 gh api repos/{owner}/{repo}/commits/{sha}/status 按 sha 读取。

合并就绪

GitHub 使用 gh pr view --json mergeable,reviewDecision,statusCheckRollup,isDraft,mergeStateStatus。其中 mergeable 为 MERGEABLE、CONFLICTING 或 UNKNOWN;reviewDecision 为 APPROVED、CHANGES_REQUESTED、REVIEW_REQUIRED 或空;isDraft 为布尔值;mergeStateStatus 为 CLEAN、BLOCKED、BEHIND、DIRTY、UNSTABLE。statusCheckRollup 回答的是“检查是否通过”,而非“每个检查是否做了自己的工作”,它不携带 description,因此当评审机器人把关合并时,应配合 gh pr checks --json ...,description 调用。GitLab 使用 glab mr view -F json | jq '{merge_status:.merge_status,conflicts:.has_conflicts,blocking:.blocking_discussions_resolved,draft:.draft}'。

限制与验证状态

资料明确说明:GitHub 相关命令已针对 gh v2.102.0(2026-09-30)验证,每个 gh 子命令和标志都对照其 --help 检查过;如果 gh --version 更新,应在依赖标志细节前阅读 v2.102.0 之后的发行说明。glab 尚未验证,没有固定版本,依赖某个 glab 标志前应先检查 glab <cmd> --help。glab 配方遵循 GitLab 文档,但未在真实实例上演练过,而 GitHub 配方已演练。此外,技能还提供参考文档:references/ci-queries.md 包含高级模式(失败检查提取、必需检查、工作流列表、缓存管理、规则集),references/allowlist.md 包含分层 Bash(command:*) 模式,覆盖所有只读 CI 操作,可安全地在 Claude Code settings.json 或 OpenCode 配置中自动批准。