执行摘要
- 一句话:PR 状态块新增 AMD ROCm 7.2 行,不影响门禁
- 推荐动作:该 PR 值得快速了解,展示了 CI 状态展示的改进思路,但无复杂设计,适合维护 CI 的工程师精读。
功能与动机
PR 描述中的 CI 状态块此前仅查询 pr-test.yml 和 pr-test-extra.yml,未包含 AMD ROCm 7.2 测试结果,导致合并值班人员只看到 CUDA 结果,无法直观了解 AMD 测试状态。本 PR 通过新增 AMD 查询行,让状态块更完整。
实现拆解
- 在 .github/workflows/pr-states.yml 的 workflow_run 触发器中加入 'PR Test ROCm 7.2 (AMD)',使 AMD 工作流完成时也能触发状态更新。
- 在 workflow_run 事件处理逻辑中增加 event 检查,仅接受 pull_request 事件,避免单阶段 workflow_dispatch 运行被误用。
- 在 findRun 函数中增加 event: 'pull_request' 过滤,确保查询完整门禁运行。
- 新增 AMD 查询,与现有 Base、Extra 查询并发执行,不增加墙钟时间,并在缺失时使用中性文案。
关键文件:
.github/workflows/pr-states.yml(模块 CI 状态;类别 infra;类型 infrastructure): 核心变更文件,控制 PR 状态块的生成逻辑
关键符号:findRun
关键源码片段
.github/workflows/pr-states.yml
核心变更文件,控制 PR 状态块的生成逻辑
# workflow_run 触发:新增 AMD 工作流以响应其完成事件
workflow_run:
workflows: ["PR Test Base", "PR Test Extra", "PR Test ROCm 7.2 (AMD)"]
types: [requested, completed]
# 处理 workflow_run 事件时,仅接受 pull_request 事件
if (wr.event !== 'pull_request') {
core.info(`Triggering run event '${wr.event}' is not pull_request; skipping.`);
return;
}
# findRun 函数增加 event 过滤,确保查询完整门禁运行
event: 'pull_request',
评论区精华
在 issue 评论中,作者 michaelzhang-ai 回应了 reviewer bingxche 关于 label-only 空运行覆盖真实结果的担忧,承认 always() 聚合器会成功而非跳过,因此原来的 per_page: 10 加跳过 skipped 的过滤无法捕获,已回退到原始单次查询逻辑。其他两点也确认修复。
- label-only 空运行覆盖真实结果 (correctness): 回退到原始单次查询逻辑,避免覆盖。
风险与影响
- 风险:变更仅涉及 CI 工作流文件,不影响运行时逻辑。风险在于:AMD 工作流路径过滤可能导致查询不到运行,但已采用中性文案;事件过滤可能遗漏某些合法的 workflow_dispatch 更新,但设计上刻意规避。
- 影响:影响仅针对 PR 描述的 CI 状态块展示,提升 AMD 测试可见性,不改变 CI 执行和合并门禁,对用户和系统无影响,团队受益于更完整的 CI 概览。
- 风险标记:CI 配置变更, 单一文件变更
关联脉络
- PR #30984 [AMD] [Docker] Upgrade Python 3.12 + torch 2.11 + triton 3.7 in ROCm 7.2.4: 同涉及 AMD ROCm 7.2 CI 基础设施调整
参与讨论