Prhub

#22489 [AMD] Replace push trigger with scheduled runs and enable parallel stage execution

sgl-project/sglang · 作者 yctseng0211 · 合并时间 2026-04-14 13:33

分析状态 已生成
文件变更 1提交数 6 · 评论 6
代码增减 +104 / -46
amd run-ci

执行摘要

将 AMD CI 工作流从 push 触发改为调度触发,并优化阶段执行策略以减少资源压力。

根据PR body,动机是“Remove push trigger to avoid redundant CI runs on every merge to main, reducing AMD runner pressure”和“Add schedule trigger (every 6 hours) to periodically validate main branch”。旨在减少AMD runner压力,并通过定期调度确保main分支验证。

建议CI维护者和AMD平台开发者精读此PR,关注并发控制逻辑和错误处理机制,特别是 check-changes 作业的条件判断和 continue_on_error 设置,这些设计决策有助于优化CI资源管理和稳定性。

讨论亮点

核心讨论来自amd-bot的review评论,指出了关键bug:“Bug 1 — check-changes will be skipped on schedule runs (Critical)”。该问题涉及 check-changes 作业在调度运行中可能因依赖 call-gate 而被跳过,导致测试不完整。讨论结论是通过后续commit修复,添加了 if: always() 和调整依赖逻辑,确保 check-changes 在调度运行中正常执行。

实现拆解

修改了唯一文件 .github/workflows/pr-test-amd.yml:1. 将 on: push 触发器替换为 on: schedule(每6小时运行);2. 引入 wait-for-stage-a-amdwait-for-stage-b-amd 作业,通过GitHub API轮询控制阶段执行顺序;3. 调整 concurrency 设置,使调度运行和 run_all_tests 运行使用唯一组以避免相互取消,PR运行共享组以支持新推送取消旧运行;4. 在 check-changes 作业中添加 continue_on_error 输出逻辑,自动为调度运行启用;5. 添加条件判断,调度运行跳过 call-gate 作业。

文件 模块 状态 重要度
.github/workflows/pr-test-amd.yml CI/ 基础设施 modified 8.0

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

关键符号

check-changes wait-for-stage-a-amd wait-for-stage-b-amd

评论区精华

check-changes 作业在调度运行中被跳过的风险 正确性

amd-bot 在 review 中指出“Bug 1 — `check-changes` will be skipped on schedule runs (Critical)”,强调该作业可能因依赖 call-gate 而被跳过,导致测试不完整。

结论:通过后续 commit(如 b9956f0)修复,调整了 check-changes 作业的条件和依赖,确保在调度运行中正常执行。 · 已解决

风险与影响

技术风险包括:1. 调度运行中 check-changes 作业可能被错误跳过,导致变更检查遗漏,引发测试覆盖不足(已在commit中修复);2. concurrency 设置复杂,如果配置错误可能导致PR运行与调度运行冲突,或调度运行相互取消;3. 并行阶段执行在调度运行中可能增加资源竞争,影响其他CI作业性能。风险主要集中在对文件 .github/workflows/pr-test-amd.yml 中条件逻辑和并发组管理的依赖。

对系统:减少AMD runner在每次main合并时的运行压力,提高资源利用率;调度运行每6小时验证main分支,确保定期测试覆盖。对团队:CI运行频率从push触发改为调度触发,团队需适应新的验证周期;并行执行加速调度运行,但可能增加调试复杂性。对用户:无直接影响,属于内部基础设施优化。

调度运行中 check-changes 可能被跳过 并发设置风险

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本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):

  1. 触发器变更:将 on: push 替换为 on: schedule,使用cron表达式 '0 */6 * * *' 每6小时运行。
  2. 并发控制:调整 concurrency 组逻辑,使调度运行和 run_all_tests 运行使用唯一组(基于 run_id),避免相互取消;PR运行共享组以支持新推送取消旧运行。
  3. 作业逻辑
    • 引入 wait-for-stage-a-amdwait-for-stage-b-amd 作业,通过GitHub API轮询控制阶段执行顺序。
    • check-changes 作业中添加 continue_on_error 输出,自动为调度运行启用错误继续。
    • 添加条件 if: github.event_name != 'schedule' 使调度运行跳过 call-gate 作业。
  4. 运行模式判断:在 run-mode 步骤中,根据 inputs.run_all_testsgithub.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基础设施方面的投入增加,通过调度触发和并行执行优化资源分配,平衡测试覆盖与运行压力。

参与讨论