Prhub

#34521 [AMD] Publish an undated tag for the miles nightly images

原始 PR 作者 XinyuJiangCMU 合并时间 2026-08-12 14:27 文件变更 2 提交数 2 评论 0 代码增减 +6 / -0

执行摘要

AMD miles 夜间镜像新增无日期标签发布

PR body 明确指出:The AMD nightly images are published only under a dated tag, so nothing can reference them stably. 提交信息进一步说明:documentation and users have no stable name to reference and have to look up the current date before they can pull the newest build,即文档和用户缺少一个稳定的镜像名来引用最新 nightly 构建。

该 PR 为低优先级的 CI 发布流程微调,不建议精读。值得留意的设计点:直接 push 本地已有的标签,优于在 registry 里用 imagetools create 生成元数据引用;对单平台镜像,imagetools create--prefer-index=true 默认行为可能产生不必要的 image index 层级,发布场景应显式比较两种方式的结果。

讨论亮点

PR 没有任何 review 评论,核心设计权衡体现在两次提交的演进中,可从提交信息提炼:

  • 第一次提交选择 imagetools create,理由是无重建、无 layer 上传,且从日期标签创建可保证两个名字解析到同一 digest。
  • 第二次提交改为 docker push,指出本地镜像早已带上无日期标签,且 imagetools create 默认 --prefer-index=true,单平台变体会以 image index 方式发布而非直接 manifest,docker push 是更准确的表达。
  • 该决策已被 reviewer bingxche 的 APPROVE 接受,无遗留未解决问题。

实现拆解

  1. 定位两个镜像发布入口:.github/workflows/release-docker-amd-miles-rocm700-nightly.ymlrelease-docker-amd-miles-rocm720-nightly.yml,二者原有逻辑是在 matrix 变体构建后执行 docker push rocm/sgl-dev:miles-${{ matrix.variant }}-${DATE} 推送日期标签。
  2. 最初实现(第一个 commit):在每个 workflow 的 Push dated tag 步骤后新增一步,用 docker buildx imagetools create 从刚推送的日期标签创建 rocm/sgl-dev:miles-<variant> 无日期标签。该命令只写 registry 中的 manifest 引用,不触发重建、不重复上传 layer,且从日期标签创建能保证两个名字解析到相同 digest。
  3. 修正实现(第二个 commit):改为直接对本地已有的无日期标签执行 docker push。原因是 docker/build.py --image-tag custom --custom-tag miles 在构建阶段已经把镜像本地标记为 rocm/sgl-dev:miles-<variant>,workflow 再用日期重新打标,因此无日期标签无需在 registry 中额外创建;同时 imagetools create 默认 --prefer-index=true,而这两个变体是单平台镜像,会发布成包装 manifest 的 image index 而非原样 manifest,docker push 更准确。
  4. 配套情况:无测试、schema 或运行时配置改动,变更仅限 CI workflow YAML;rocm700 与 rocm720 两个 workflow 保持完全对称。
文件 模块 状态 重要度
.github/workflows/release-docker-amd-miles-rocm700-nightly.yml 发布流程 modified 3.05
.github/workflows/release-docker-amd-miles-rocm720-nightly.yml 发布流程 modified 3.05

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

评论区精华

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

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

风险与影响

无日期标签 rocm/sgl-dev:miles-<variant> 会被每晚的构建覆盖,任何引用它的用户只能获得“最新”语义,无法复现历史构建;若某天构建中断,标签可能仍指向较旧的镜像,需要依赖 CI 成功状态来规避误用。该变更只涉及两个 GitHub Actions workflow,不触碰运行时代码,出错面很小;单平台 image index 的问题已通过改用 docker push 规避。没有新增自动化校验来验证路径实际可拉取,属于轻量缺口。

影响范围集中在 AMD miles 系列镜像的消费方式:文档、CI 脚本和用户现在可以用固定名字 rocm/sgl-dev:miles-<variant> 引用最新 nightly,无需拼接日期。每次 nightly 运行会多一次 docker push 操作,但由于标签已存在于本地,成本几乎为零。对 sglang 核心推理、调度、内核等代码路径无任何影响;团队后续维护两个 workflow 时需保持对称。

无日期标签会被 nightly 覆盖 无版本快照可复现性 无自动拉取校验

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论