执行摘要
- 一句话:修复AMD夜间测试checkout指向移动指针问题
- 推荐动作:此 PR 虽小但避免了常见的 CI 暗坑(移动指针引用),值得在同类工作流中推广。若您维护其他 CI 配置,可检查是否也存在类似问题。
功能与动机
github.ref 是移动指针(如 refs/heads/main),导致“Re-run failed jobs”时检出比原始失败时更新的代码,使失败无法复现或 bisect。PR body 给出了具体例子:原调度运行检出 826f2d062,重跑后检出 8327270c7(相差约 30 个 commit)。
实现拆解
- 识别问题:
nightly-test-amd*.yml 中 checkout 步骤使用 ${{ inputs.ref || github.ref }},而 pr-test-amd*.yml 已正确使用 ${{ inputs.ref || github.sha }}。
- 全局替换:在两个文件的每个 job 内部,将 checkout 的
ref 参数从 github.ref 改为 github.sha;inputs.ref 分支不受影响(显式传入时优先)。
- 验证不变项:
concurrency.group 保持原样(基于分支的去重逻辑依然合适)。
- 覆盖范围:共修改
nightly-test-amd-rocm720.yml 和 nightly-test-amd.yml 两个文件,每个文件涉及约 35 个 checkouts 步骤。
关键文件:
.github/workflows/nightly-test-amd-rocm720.yml(模块 CI配置;类别 infra;类型 configuration): AMD ROCm 7.2 nightly 测试工作流:修改所有 checkouts 步骤,保证重跑 commit 固定。
.github/workflows/nightly-test-amd.yml(模块 CI配置;类别 infra;类型 configuration): AMD 常规 nightly 测试工作流,与另一个文件做完全相同修正。
关键符号:未识别
评论区精华
本 PR 无 review 评论,仅由 bingxche 直接批准。
风险与影响
- 风险:低风险:该变更仅在未传入
inputs.ref 的触发场景(如定时调度、手动重跑)下生效,且与已经稳定运行的 pr-test-amd*.yml 行为一致。无需担心破坏现有流程,但建议合并后观察一次 nightly 运行。
- 影响:直接提升 AMD 夜间测试的可复现性:失败后重跑将始终基于同一个 commit,便于排错。对用户无直接影响;对维护者而言,减少了因无关代码变动导致的假性通过或失败排查开销。
- 风险标记:无显著风险
关联脉络
参与讨论