用途
gh-fix-ci 用于在用户要求调试或修复 GitHub PR 中失败的检查时提供帮助,重点处理在 GitHub Actions 中运行的检查。它使用 gh(GitHub CLI)来定位失败的 PR 检查、获取 GitHub Actions 日志、总结失败上下文,并主动进行修复。
前置条件
需要先使用标准 GitHub CLI 完成一次认证,例如运行 gh auth login,然后通过 gh auth status 确认。通常需要 repo 与 workflow 权限范围。
输入
- repo:仓库内的路径(默认 .)
- pr:PR 编号或 URL(可选;默认使用当前分支的 PR)
- 针对仓库主机的 gh 认证
快速开始
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"
如需机器友好的输出以便总结,可添加 --json。
工作流程
-
验证 gh 认证:在仓库中运行 gh auth status。如果未认证,请用户先运行 gh auth login(确保 repo + workflow 权限范围)再继续。
-
解析 PR:优先使用当前分支的 PR,运行 gh pr view --json number,url。如果用户提供了 PR 编号或 URL,则直接使用。
-
检查失败的检查(仅 GitHub Actions):
- 首选运行附带脚本(可处理 gh 字段变动与作业日志回退): python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>" 添加 --json 可获得机器友好输出。
- 手动回退方式: gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow 如果某字段被拒绝,使用 gh 报告的可用字段重新运行。
- 对每个失败的检查,从 detailsUrl 中提取 run id,并运行: gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headSha gh run view <run_id> --log
- 如果运行日志显示仍在进行中,直接获取作业日志: gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
-
界定非 GitHub Actions 检查:如果 detailsUrl 不是 GitHub Actions 运行,则标记为外部,仅报告 URL。不要尝试 Buildkite 或其他提供商,保持工作流程精简。
-
向用户总结失败:提供失败的检查名称、运行 URL(如有)以及简洁的日志片段。明确说明缺失的日志。
-
主动修复(无需用户批准),提交并推送。
-
重新检查状态:更改后,建议重新运行相关测试和 gh pr checks 以确认。
附带资源
scripts/inspect_pr_checks.py:获取失败的 PR 检查、拉取 GitHub Actions 日志并提取失败片段。当失败仍然存在时以非零状态退出,因此可用于自动化。
使用示例:
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "123"
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --json
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40
适用场景
适用于需要调试或修复 GitHub PR 中失败的 GitHub Actions 检查的场景,例如在持续集成流程中快速定位失败原因并自动修复。
限制
仅处理 GitHub Actions 检查;对于非 GitHub Actions 的检查,仅标记为外部并报告 URL,不处理 Buildkite 等其他提供商。需要预先完成 gh 认证并具备相应权限范围。