Prhub

#21527 [AMD] Fix AMD CI monitor GitHub API rate limit exhaustion

原始 PR 作者 bingxche 合并时间 2026-03-27 17:55 文件变更 2 提交数 4 评论 1 代码增减 +1077 / -65

执行摘要

修复 AMD CI 监控中的 GitHub API 速率限制问题,通过引入共享快照减少重复 API 调用。

根据 PR body,动机是修复 #21515 的根本原因,通过用单个共享快照替代每个矩阵的 GitHub API 获取,以避免速率限制耗尽。具体表述为 'This should address the root cause in #21515 by replacing per-matrix GitHub API fetches with a single shared snapshot artifact.'

建议 CI 维护者、对 GitHub Actions 优化或 CI 监控设计感兴趣的工程师精读此 PR。重点关注共享快照机制如何减少 API 调用、runner fleet 分析的数据模型设计,以及错误处理策略,这些对优化类似基础设施有参考价值。

讨论亮点

Review 中没有实质性讨论,仅有一个 gemini-code-assist[bot] 的评论概述了变更,无争议或未解决疑虑。唯一的人类审核者 HaiShaw 直接批准,无评论。

实现拆解

实现分为两个关键部分:

  1. .github/workflows/amd-ci-job-monitor.yml 中添加 fetch-actions-data job,使用 query_job_status.py 脚本生成 Actions 数据快照并上传为 artifact,供其他 job(如 custom-reportdynamic-report)下载使用。
  2. 修改 scripts/ci/utils/query_job_status.py 脚本,新增 --dump-data-file--input-data-file 参数支持快照读写,并添加 --runner-report 模式进行跨工作流 runner 性能分析,包括并发度、忙碌时段和队列分布统计;同时改进错误处理,添加函数如 is_rate_limit_error 来识别速率限制错误。
文件 模块 状态 重要度
.github/workflows/amd-ci-job-monitor.yml CI 工作流 modified 7.0
scripts/ci/utils/query_job_status.py CI 工具脚本 modified 8.0

关键符号

is_rate_limit_error _new_workflow_fetch_stats _new_fetch_metadata _record_workflow_fetch_failure _record_skipped_run

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

代码变更概述 other

gemini-code-assist[bot] 评论概述了 PR 的增强点,如添加 runner fleet 分析和数据快照功能,但无具体反馈或争议。

结论:无争议,变更被直接接受和批准。 · 已解决

风险与影响

技术风险包括:

  1. 快照数据可能因网络问题或 GitHub API 失败而过时或不完整,影响监控准确性(例如,_record_skipped_run 函数记录的跳过运行可能导致数据缺失)。
  2. 新增的 Python 依赖(如 tabulate)在安装失败时可能导致工作流执行中断。
  3. 修改的工作流文件配置错误(如 job 依赖或 artifact 路径)可能破坏 CI 流程。
  4. 快照机制引入的额外步骤增加工作流执行时间,可能影响监控实时性。

影响范围:对用户(开发者或 CI 维护者),AMD CI 监控更稳定,减少因速率限制导致的失败,提升体验。对系统,减少 GitHub API 调用次数,降低负载,提高监控效率并可能减少费用。对团队,改进 CI 基础设施,便于维护和扩展监控功能,增强跨工作流 runner 分析能力。

快照数据时效性风险 新增依赖安装失败 工作流配置错误

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论