执行摘要
本PR将AMD CI工作流的触发方式从push改为每6小时调度运行,以减少main合并时的冗余运行压力,并引入等待作业实现调度运行中的阶段并行执行。变更优化了资源使用,但需关注并发设置和作业依赖风险,已在review中修复关键bug。
功能与动机
为什么做:根据PR body,主要动机是“移除push触发器以避免每次合并到main时的冗余CI运行,减少AMD runner压力”,同时“添加schedule触发器(每6小时)以定期验证main分支”。这旨在平衡CI资源消耗和main分支稳定性验证需求。
实现拆解
关键改动点(基于文件 .github/workflows/pr-test-amd.yml):
- 触发器变更:将
on: push 替换为 on: schedule,使用cron表达式 '0 */6 * * *' 每6小时运行。
- 并发控制:调整
concurrency 组逻辑,使调度运行和 run_all_tests 运行使用唯一组(基于 run_id),避免相互取消;PR运行共享组以支持新推送取消旧运行。
- 作业逻辑:
- 引入
wait-for-stage-a-amd 和 wait-for-stage-b-amd 作业,通过GitHub API轮询控制阶段执行顺序。
- 在
check-changes 作业中添加 continue_on_error 输出,自动为调度运行启用错误继续。
- 添加条件
if: github.event_name != 'schedule' 使调度运行跳过 call-gate 作业。
- 运行模式判断:在
run-mode 步骤中,根据 inputs.run_all_tests 或 github.event_name == 'schedule' 设置 run_all_tests=true,确保调度运行执行全量测试。
评论区精华
核心讨论:来自amd-bot的review评论指出关键bug:
“Bug 1 — check-changes will be skipped on schedule runs (Critical)”
该问题源于 check-changes 作业依赖 call-gate,而调度运行中 call-gate 被跳过,导致 check-changes 可能无法执行。讨论结论是通过后续commit修复,调整了作业依赖和条件逻辑,确保 check-changes 在调度运行中正常进行。
风险与影响
风险:
check-changes 作业在调度运行中被跳过的风险(已修复),否则可能导致变更检查遗漏和测试覆盖不足。
concurrency 设置复杂,错误配置可能引发PR运行与调度运行冲突,或调度运行相互取消。
- 并行阶段执行在调度运行中可能增加资源竞争,影响其他CI作业性能。
影响:
- 系统:减少AMD runner压力,提高资源利用率;调度运行定期验证main分支,增强稳定性。
- 团队:CI运行频率变化,需适应新的调度周期;并行执行加速测试但增加调试复杂度。
- 用户:无直接影响,属内部优化。
关联脉络
与历史PR的关系:
- PR 22534(CI重跑优化)和 PR 22733(GB200流水线门控)均为CI基础设施变更,与本PR共同体现团队对CI资源管理和触发机制的持续改进趋势。
- PR 21097(AMD MoE权重填充)涉及AMD平台支持,与本PR共同影响AMD CI的测试覆盖和运行效率。
演进方向:显示仓库在AMD硬件和CI基础设施方面的投入增加,通过调度触发和并行执行优化资源分配,平衡测试覆盖与运行压力。
参与讨论