# PR #23338 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD] CI - Fix the cancelled guard to AMD CI
- 合并时间：2026-04-21 15:45
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/23338

---

# 执行摘要

- 一句话：修复 AMD CI 工作流取消后任务卡住的问题，添加取消守卫。
- 推荐动作：这是一个简单的 CI 配置修复，无需深入阅读。对于关注 CI/CD 基础设施的工程师，可以快速浏览变更文件以了解 GitHub Actions 中 `always()` 和 `!cancelled()` 的使用模式。

# 功能与动机

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

# 实现拆解

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

关键文件：
- `.github/workflows/pr-test-amd.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 这是唯一被修改的文件，包含了 AMD CI 工作流的配置，修复了工作流取消时任务卡住的问题。

关键符号：未识别

## 关键源码片段

### `.github/workflows/pr-test-amd.yml`

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

```yaml
# 示例：修改后的 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')
    )

```

# 评论区精华

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

- 暂无高价值评论线程

# 风险与影响

- 风险：**低风险**。变更仅涉及 CI 工作流配置，不修改任何业务逻辑、测试或部署脚本。主要风险在于：
 - **配置错误风险**：如果 `!cancelled()` 守卫添加位置不当，可能导致作业在不该跳过时被跳过。但从变更内容看，仅针对特定作业的条件表达式进行修改，逻辑清晰。
 - **回归风险**：无，因为这只是修复了工作流取消时的行为，不影响正常执行路径。
 - 影响：**影响范围有限，但能提升 CI 效率**。
 - **对用户**：无直接影响，这是内部 CI 改进。
 - **对系统**：修复后，AMD CI 工作流取消时，相关作业将不再卡住，能更快释放 CI 资源（如运行器配额）。
 - **对团队**：减少因 CI 任务卡住导致的手动干预需求，提升开发体验。
 - 风险标记：配置变更

# 关联脉络

- PR #23313 ci: reduce scheduled PR test from 4x to 3x daily: 同属 CI 基础设施优化，关注 CI 资源利用效率。
- PR #23305 [misc] CI hygiene: enforce __main__entry, drop silent-skipped tests, fix rerun-test protoc: 同属 CI 改进，涉及测试执行和 CI 稳定性。