agentleFS
jimyagjimyag/dotfiles/skills/loop-on-ci/SKILL.md

loop-on-ci

Skill11 starsChanged 27 days agoMITView on GitHub

在已有 GitHub PR 需要持续观察 Actions 检查、读取失败作业日志、修复问题、重新运行并跟到全部检查变绿时使用。适用于围绕同一个 PR 反复验证,而不是一次性状态查询。

5 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use make-pr-easy-to-review.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • jaydubya818Skill

    make-pr-easy-to-review

    Use when a correct pull request needs clearer history, description, or reviewer guidance.

    Also in 3 projects that use this

The file

Files
SKILL.md

持续跟进 GitHub Actions

目标

围绕当前 PR 的 GitHub Actions 检查持续修复问题,直到全部通过或确认阻塞点。以 GitHub 当前 PR、工作流、作业、步骤和日志为证据,优先通过 gh 获取。

核心原则

  • 每轮先确认 PR 来源分支提交 SHA,避免分析旧运行记录或旧日志。
  • 按 PR -> head SHA -> workflow runs -> jobs -> steps/logs 获取证据,例如 gh pr view <PR> --json headRefOid,statusCheckRollup、gh run list --commit <SHA> --json databaseId,name,status,conclusion、gh run view <id> --log-failed。
  • 一次只处理一个明确失败原因;每次推送后重新读取 PR 来源分支版本与新运行记录。
  • codecov/project、codecov/patch、flag 或 component 失败转给 codecov-coverage。

基本流程

  1. 确认目标仓库、PR、当前分支、工作区和 PR 来源分支提交 SHA。
  2. 用 gh 获取该提交对应的工作流运行记录;gh 不可用时按下述边界回退。
  3. 对失败运行记录获取作业,再读取失败作业的步骤和完整日志。
  4. 用日志与代码/配置建立根因证据链;证据不足时报告缺失项,不猜测偶发不稳定。
  5. 修复当前 PR 引入的问题,运行仓库允许且与改动对应的验证。
  6. 提交并推送后确认 PR 来源分支版本已更新,再等待并读取新运行记录;不要复用旧运行记录的结论。
  7. 需要重跑时优先用 gh run rerun <id> --job <job-id> 重跑单个作业;只有多个失败作业共享同一原因时才重跑全部失败作业。重跑规则见下文“失败归属与重跑”。
  8. 重复直到全部 GitHub Actions 检查通过,或遇到权限、外部依赖、经可用的授权只读查询仍无法获取必要日志、来源分支版本并发更新等明确阻塞。

失败归属与重跑

  • 先排除不属于本 PR 的失败:错误指向本 PR 未触及的服务且重跑一次后同样失败,或同一检查在基准分支上也失败。确认后在汇报中说明失败的检查、为什么不属于本 PR,以及是否已有修复;发 PR 评论须在已有授权范围内。
  • 已有能让本 PR 变绿的修复(其他 PR、导致失败的提交的 revert、自己开的修复 PR)时,把同样的修改带进本 PR 并推送;基准分支合入后它会自然变成空改动。
  • 失败出现在本 PR 未触及的代码上时,先用 git merge-base --is-ancestor <基准分支提交> <来源分支提交> 确认是否基于过期基准;基准过期时报告需要 rebase,不当作偶发失败重跑。
  • 其余失败都按本 PR 的问题定位根因。“偶发”不是根因:只有为确认上述归属、作业在执行测试前就失败(检出、安装、runner 丢失),或同一提交上曾经通过时才重跑,总共最多一次;再次失败视为真实失败。
  • 不跳过、禁用或隔离测试来变绿;不用空提交或关闭再打开 PR 来重新触发 CI。
  • 查询运行状态使用结构化字段(如 gh run view <id> --json status,conclusion)。不要把 gh run watch、测试或构建输出通过 tail、head 管道读取,管道会吞掉真实退出码,把失败或仍在运行的作业显示成成功。

堆叠 PR

  • 只处理合并前沿,即最底层未合并的 PR;上层 PR 的失败和评审意见先记录,不为它们打断前沿正在运行的检查。
  • 同一个栈只由一个执行者跟进 CI;开始前确认没有其他 Agent 或会话正在处理。
  • 跟进 CI 期间不改变栈结构:不 rebase、不改基准分支、不 force-push。修复提交在拥有该代码的分支上,需要 rebase 时报告给栈的负责人。
  • 按冲突、评审意见、CI 的顺序处理,已知修复合并为一次推送;冲突只报告需要 rebase 的分支并停止,不转去修 CI。
  • 前沿合入后再以新的最底层 PR 为前沿继续。

能力与权限边界

  • 默认使用当前已认证身份的 gh CLI/API。gh 未安装或未认证时,可用 GitHub 连接器做只读查询,并核对目标仓库与 PR head。不得把工具能力缺口当作 CI 或日志不存在。
  • 只使用当前任务已授权的身份和权限范围;收到明确权限拒绝时,说明缺失权限,不通过更换凭据或身份绕过。
  • 回退入口不授权重跑、提交、推送或其他写操作;写操作仍须处于当前任务已有授权范围内。
  • 非 GitHub Actions 检查不伪装成 Actions 作业。Codecov 使用 codecov-coverage;其他外部 CI 只报告名称和链接,除非用户另行指定处理方式。

何时不要使用

  • 只是读取一次 PR 或工作流状态,不需要持续跟进。
  • 当前还没有 PR。
  • 只是 Codecov 覆盖率查询或门槛失败,使用 codecov-coverage。
  • 本地测试或普通代码异常,使用 systematic-debugging。

输出要求

  • PR、当前来源分支提交 SHA 和本轮工作流运行记录。
  • 每个失败作业的关键日志证据与代码/配置路径。
  • 已做的修复、验证、提交和推送和重新运行状态。
  • 当前是否全部通过;未通过时给出准确阻塞点。

统一约束

  • 证据与验收:遵循 ../_shared/common-acceptance.md,本 skill 只补充其中没有的要求。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.