Prhub

#6022 [ci] fix: update docker-build-ascend-a3-qwen3_5

原始 PR 作者 yyyy2000 合并时间 2026-04-16 20:56 文件变更 1 提交数 8 评论 4 代码增减 +83 / -14

执行摘要

更新 Ascend 多架构 Docker 构建工作流

原有的 Docker 构建工作流仅支持单架构镜像,无法满足 Ascend 平台在 amd64 和 arm64 两种架构上的统一发布需求。本 PR 改造了构建流程,使其并行构建多架构镜像并合并,同时优化了资源使用。

该 PR 是标准 CI 自动化改进,不涉及核心代码逻辑,无需深度 review。但其中多架构镜像构建模式(push-by-digest + merge)值得 CI 团队参考。

讨论亮点
  • gemini-code-assist[bot] (Critical): 工作流文件应位于 .github/workflows/ 目录下,而非 .github/。→ 已修正。
  • gemini-code-assist[bot] (High): 构建 linux/arm64 需要 QEMU 设置。→ 最终使用原生 ARM runner,无需 QEMU。
  • gemini-code-assist[bot] (High): 缺少 docker/login-action,推送会失败。→ 已添加 login 步骤。
  • 审核者 wucong25 最终批准。

实现拆解

  1. Job 拆分:将原有单 job 拆分为 build-push-digest(并行构建各架构)和 merge-image(合并为 multi-arch manifest)。
  2. 矩阵构建:在 build-push-digest 中使用 matrix 定义 linux/amd64linux/arm64,分别运行在 ubuntu-latest 和原生 ARM runner ubuntu-22.04-arm 上。
  3. Digest 推送:使用 docker/build-push-actionpush-by-digest 选项,只推送镜像层于 registry,不创建 tag,避免多架构 tag 冲突。
  4. Digest 收集与合并:每个构建步骤导出 digest 为 artifact,merge-image 下载所有 digest,通过 docker buildx imagetools create 创建 multi-arch 镜像并推送 quay.io/ascend/verl:verl-8.5.2-a3-ubuntu22.04-py3.11-qwen3-5 标签。
  5. 环境与缓存:统一 registry 为环境变量 QUAY_REPO,添加 free-disk-space 和 docker prune 清理磁盘,配置 type=gha 构建缓存加速后续运行。
  6. 权限补充:添加 docker/login-action 并配置 packages: write 权限,确保推送成功。
文件 模块 状态 重要度
.github/workflows/docker-build-ascend-a3-qwen3_5.yml 构建发布 modified 4.73

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

评论区精华

工作流文件路径错误 正确性

[gemini-code-assist[bot]] 指出工作流文件应位于 `.github/workflows/` 目录下,而非 `.github/`。

结论:作者随后删除了错误文件,并将更新后的工作流放在正确路径。 · 已解决

缺失 QEMU 设置 正确性

[gemini-code-assist[bot]] 建议添加 `docker/setup-qemu-action` 以在 x86 runner 上构建 arm64 镜像。

结论:最终方案使用原生 ARM runner(ubuntu-22.04-arm)替代,无需 QEMU。 · 已解决

缺少 Docker Login 安全

[gemini-code-assist[bot]] 指出构建配置了 `push: true` 但缺少 `login` 步骤,会导致推送失败。

结论:最终版本添加了 `docker/login-action` 并使用 secrets 认证。 · 已解决

风险与影响

主要风险在于 CI 工作流执行失败可能导致镜像发布中断:若 push-by-digest 阶段上传 artifact 失败,merge job 会缺少 digest 而失败;多架构合并依赖正确的 digest 顺序,若错位可能生成错误 manifest;磁盘清理步骤可能误删缓存;此外,工作流依赖 secrets.QUAY_USERNAMEQUAY_PASSWORD,密钥过期或缺失会导致推送失败。

影响范围限于 Ascend A3 Qwen3.5 Docker 镜像的 CI 构建与发布流程,不涉及训练、推理等核心逻辑。更新后,镜像将支持 amd64 和 arm64 两种架构,且构建效率因缓存和并行而提升。对用户的硬件选择更灵活。

权限依赖 多架构兼容性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论