Prhub

#2773 ci: default a file run to the PR's own image

原始 PR 作者 yueming-yuan 合并时间 2026-08-27 08:51 文件变更 2 提交数 1 评论 0 代码增减 +35 / -2

执行摘要

修复 /rerun-test 默认镜像逻辑

PR 中提到原始问题:当 PR body 未携带 ci-image-tag 时,/rerun-test 总使用 radixark/miles:dev 镜像,即使该 PR 已构建了 pr-<number> 镜像。这在依赖变更的 PR 上导致无关的错误失败,例如 sglang 版本升级后 rerun 因镜像中 sglang-kernel 版本过低而在测试前崩溃。

建议精读该 PR,它展示了 CI 镜像选择逻辑的优化思路,对维护 CI 流程有一定参考价值。值得关注的是如何通过检查镜像是否存在来优雅回退,以及如何通过认证避免限流问题。

讨论亮点

无 review 评论,guapisolo 直接批准。claude[bot] 仅发出手动 review 提示,无实质讨论。

实现拆解

  1. 登录 Docker Hub:在 .github/workflows/run-ci-file.yml 中,当 ci_image_tag 为空时,使用 docker/login-action@v3 进行认证,避免匿名拉取触发 Docker Hub 速率限制,防止镜像检查误判。
  2. 动态选择镜像标签:新增步骤 Pick the image tag when the PR body did not pin one,通过 docker buildx imagetools inspect 检查 radixark/miles:pr-${PULL_NUMBER} 是否存在,若存在则使用该标签,否则回退到 dev
  3. 传递所选标签:将解析出的标签赋值给 CI_IMAGE_TAG 环境变量,供后续执行计划步骤使用。
  4. 文档同步:更新 docs/ci/01-label.md 以反映新逻辑。
文件 模块 状态 重要度
.github/workflows/run-ci-file.yml CI 工作流 modified 4.78
docs/ci/01-label.md CI 文档 modified 1.32

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

评论区精华

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

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

风险与影响

此变更仅影响 CI 基础设施,风险较低。潜在风险包括:额外 Docker Hub 登录可能失败(但会跳过,不影响主要逻辑);docker buildx imagetools inspect 命令在某些环境中可能不可用,但脚本已设置 set -euo pipefail,若失败会退出并触发错误,可能会掩盖真实问题。

影响范围限于 CI 流程,特别是 run-ci-file.yml 工作流。对开发者而言,/rerun-test 现在会使用 PR 自己的镜像,减少因镜像不匹配导致的伪失败,提升 CI 调试效率。对团队而言,减少误报可提高 CI 可靠性。

CI 基础设施变更 依赖 Docker Hub 可用性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论