# PR #21527 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD] Fix AMD CI monitor GitHub API rate limit exhaustion
- 合并时间：2026-03-27 17:55
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21527

---

# 执行摘要

此 PR 修复了 AMD CI 监控中的 GitHub API 速率限制问题，通过引入共享快照机制减少重复 API 调用，提升 CI 稳定性和效率。变更涉及 GitHub Actions 工作流和 Python 脚本，适合 CI 维护者精读以了解基础设施优化策略。

# 功能与动机

动机是解决 AMD CI 监控工作流因频繁 GitHub API 调用导致的速率限制耗尽问题，引用 PR body 中表述：“This should address the root cause in #21515 by replacing per-matrix GitHub API fetches with a single shared snapshot artifact.” 目标是通过一次性数据获取替代分散调用，避免 API 限制影响监控执行。

# 实现拆解

- **GitHub Actions 工作流变更**：在 `.github/workflows/amd-ci-job-monitor.yml` 中新增 `fetch-actions-data` job，使用 Python 脚本查询 GitHub Actions 数据并保存为快照 artifact，供后续 job 复用。关键代码片段：
  ```yaml
  jobs:
    fetch-actions-data:
      runs-on: ubuntu-latest
      steps:
        - name: Fetch Actions data snapshot
          run: python scripts/ci/utils/query_job_status.py --repo ${{ github.repository }} --workflow "${{ steps.select-workflows.outputs.workflows }}" --hours ${{ inputs.hours || '24' }} --dump-data-file actions-job-snapshot.json
        - name: Upload Actions data snapshot
          uses: actions/upload-artifact@v4
  ```
- **Python 脚本增强**：修改 `scripts/ci/utils/query_job_status.py`，添加快照支持（`--dump-data-file` 和 `--input-data-file` 参数）和 runner fleet 报告模式（`--runner-report`）。新增函数如 `is_rate_limit_error` 识别速率限制错误，`_new_fetch_metadata` 管理快照元数据。例如，runner 报告统计 runner 并发度和队列分布，帮助分析 CI 资源使用。

# 评论区精华

Review 中无实质性讨论，仅有一个 bot 评论概括变更要点，无争议或未解决疑虑。人类审核者直接批准，表明变更被快速接受。

# 风险与影响

- **风险**：快照数据可能因 API 失败而过时，影响监控准确性；新增 Python 依赖（tabulate）安装失败可导致工作流中断；工作流配置错误可能破坏 CI 流程；快照步骤增加执行时间，降低实时性。
- **影响**：对用户，CI 监控更稳定，减少失败；对系统，降低 API 负载，提升效率；对团队，基础设施改进便于维护，runner 分析提供更多 insights。

# 关联脉络

与近期 PR 如 #21533（调整 AMD CI 分区）和 #21516（修复 CI 测试超时）相关，都涉及 CI 基础设施优化，反映仓库对 CI 稳定性的持续关注。这些变更共同指向一个趋势：通过减少外部依赖（如 API 调用）和改进监控来增强 CI 可靠性，支持 AMD 硬件测试的扩展。