执行摘要
- 一句话:更新 Ascend 多架构 Docker 构建工作流
- 推荐动作:该 PR 是标准 CI 自动化改进,不涉及核心代码逻辑,无需深度 review。但其中多架构镜像构建模式(push-by-digest + merge)值得 CI 团队参考。
功能与动机
原有的 Docker 构建工作流仅支持单架构镜像,无法满足 Ascend 平台在 amd64 和 arm64 两种架构上的统一发布需求。本 PR 改造了构建流程,使其并行构建多架构镜像并合并,同时优化了资源使用。
实现拆解
- Job 拆分:将原有单 job 拆分为
build-push-digest(并行构建各架构)和 merge-image(合并为 multi-arch manifest)。
- 矩阵构建:在
build-push-digest 中使用 matrix 定义 linux/amd64 和 linux/arm64,分别运行在 ubuntu-latest 和原生 ARM runner ubuntu-22.04-arm 上。
- Digest 推送:使用
docker/build-push-action 的 push-by-digest 选项,只推送镜像层于 registry,不创建 tag,避免多架构 tag 冲突。
- 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 标签。
- 环境与缓存:统一 registry 为环境变量
QUAY_REPO,添加 free-disk-space 和 docker prune 清理磁盘,配置 type=gha 构建缓存加速后续运行。
- 权限补充:添加
docker/login-action 并配置 packages: write 权限,确保推送成功。
关键文件:
.github/workflows/docker-build-ascend-a3-qwen3_5.yml(模块 构建发布;类别 infra;类型 infrastructure): 唯一变更文件,彻底重构了 Docker 构建工作流,包括多架构矩阵、digest 推送、合并 job、缓存和清理。
关键符号:未识别
评论区精华
风险与影响
- 风险:主要风险在于 CI 工作流执行失败可能导致镜像发布中断:若 push-by-digest 阶段上传 artifact 失败,merge job 会缺少 digest 而失败;多架构合并依赖正确的 digest 顺序,若错位可能生成错误 manifest;磁盘清理步骤可能误删缓存;此外,工作流依赖
secrets.QUAY_USERNAME 和 QUAY_PASSWORD,密钥过期或缺失会导致推送失败。
- 影响:影响范围限于 Ascend A3 Qwen3.5 Docker 镜像的 CI 构建与发布流程,不涉及训练、推理等核心逻辑。更新后,镜像将支持 amd64 和 arm64 两种架构,且构建效率因缓存和并行而提升。对用户的硬件选择更灵活。
- 风险标记:权限依赖, 多架构兼容性
关联脉络
参与讨论