Prhub

#23338 [AMD] CI - Fix the cancelled guard to AMD CI

原始 PR 作者 yctseng0211 合并时间 2026-04-21 15:45 文件变更 1 提交数 1 评论 1 代码增减 +6 / -6

执行摘要

修复 AMD CI 工作流取消后任务卡住的问题,添加取消守卫。

根据 PR body 描述,AMD CI 中的特定任务(sgl-kernel、jit-kernel、stage-a、multimodal)使用了 always() 条件而没有 !cancelled() 守卫,导致工作流被手动取消后,这些任务仍会停留在“等待运行器”状态,无法正常终止。这造成了 CI 资源的浪费和用户体验问题。

这是一个简单的 CI 配置修复,无需深入阅读。对于关注 CI/CD 基础设施的工程师,可以快速浏览变更文件以了解 GitHub Actions 中 always()!cancelled() 的使用模式。

讨论亮点

Review 中仅有一名审核者(bingxche)批准,未留下具体评论。从上下文推断,这是一个简单直接的修复,没有引发技术讨论或争议。

实现拆解

  1. 修改 CI 配置文件:在 .github/workflows/pr-test-amd.yml 文件中,针对 sgl-kernel-unit-test-amdsgl-kernel-unit-test-2-gpu-amdstage-a-test-1-gpu-small-amdjit-kernel-unit-test-amdmultimodal-gen-test-1-gpu-amdmultimodal-gen-test-2-gpu-amd 这六个作业的 if 条件,将 always() 替换为 always() && !cancelled()
  2. 变更逻辑:每个作业的条件判断从“总是运行”改为“总是运行且工作流未被取消时运行”,确保工作流取消时这些作业能正确跳过执行。
  3. 影响范围:仅影响 AMD CI 工作流中的特定作业,不涉及任何源码、测试或文档变更。
文件 模块 状态 重要度
.github/workflows/pr-test-amd.yml CI 配置 modified 3.29

关键源码片段

.github/workflows/pr-test-amd.yml infrastructure

这是唯一被修改的文件,包含了 AMD CI 工作流的配置,修复了工作流取消时任务卡住的问题。

# 示例:修改后的 sgl-kernel-unit-test-amd 作业条件
sgl-kernel-unit-test-amd:
  needs: [check-changes, call-gate]
  if: |
    always() && !cancelled() &&  # 添加 !cancelled() 守卫,确保工作流取消时跳过
    (
      (contains(format(',{0},', inputs.target_stage || inputs.target_stage_select), ',sgl-kernel-unit-test-amd,')) ||
      (inputs.target_stage == 'all' && needs.check-changes.outputs.changes_amd == 'true')
    )

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

低风险。变更仅涉及 CI 工作流配置,不修改任何业务逻辑、测试或部署脚本。主要风险在于:

  • 配置错误风险:如果 !cancelled() 守卫添加位置不当,可能导致作业在不该跳过时被跳过。但从变更内容看,仅针对特定作业的条件表达式进行修改,逻辑清晰。
  • 回归风险:无,因为这只是修复了工作流取消时的行为,不影响正常执行路径。

影响范围有限,但能提升 CI 效率

  • 对用户:无直接影响,这是内部 CI 改进。
  • 对系统:修复后,AMD CI 工作流取消时,相关作业将不再卡住,能更快释放 CI 资源(如运行器配额)。
  • 对团队:减少因 CI 任务卡住导致的手动干预需求,提升开发体验。
配置变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论