已合并
[v2.9.0] Add CI Docker images build workflow #43056
wangqi创建于 20 天前
[v2.9.0] Add CI Docker images build workflow #43056
已合并
wangqi创建于 20 天前
wangqi
wangqi
20 天前

Summary

为 v2.9.0 分支添加 .github/workflows/build-docker-images.yml,实现 CI Docker 镜像的自动构建与推送到 SWR 镜像仓库。

Related: #3073

Changes

  • 新增 .github/workflows/build-docker-images.yml
  • 支持 workflow_dispatch 手动触发和 push 自动触发(.ci/docker/** 变更时)
  • 覆盖 8 个镜像:builder (x86_64/aarch64) + test × CANN A1/A2/A3 (x86_64/aarch64)
  • 推送至 swr.cn-north-4.myhuaweicloud.com/frameworkptadapter/pytorch,Tag 含 UTC 时间戳
  • Runner 自适应:x86_64 → ubuntu-latest,aarch64 → ubuntu-22.04-arm
likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 wangqi 的贡献)
wangqiwangqi
20 天前 创建了 pull request,commit d4cbd277
wangqiwangqi
20 天前 关联了issue:[Feature]: 添加 CI Docker 镜像自动构建workflow
atomgit-bot
atomgit-bot
20 天前 评论:

变更摘要

该 PR 为 v2.9.0 分支新增了 .github/workflows/build-docker-images.yml 工作流文件,实现了 CI Docker 镜像的自动化构建与推送流程。工作流支持 workflow_dispatch 手动触发(可指定单个镜像 tag)以及 .ci/docker/** 路径变更时的 push 自动触发;涵盖 8 个预定义镜像(builder 与 test 各两个架构、test 覆盖 CANN A1/A2/A3),统一推送至华为云 SWR 镜像仓库,tag 附带 UTC 时间戳,并自动生成构建汇总报告。

主要改动

  • 新增完整 CI 工作流文件:添加 .github/workflows/build-docker-images.yml,定义 matrixbuildsummary 三个 job,形成从标签矩阵生成、镜像构建推送到结果汇总的完整流水线。
  • 双触发机制workflow_dispatch 支持手动运行并可选择性地仅构建单个镜像 tag;push 触发器监听 .ci/docker/** 及该工作流文件自身的变更,实现自动化构建。
  • 矩阵策略与 runner 自适应matrix job 输出 8 个预定义镜像 tag(覆盖 x86_64 / aarch64 架构及 CANN A1/A2/A3 变体),build job 通过 contains(matrix.tag, 'x86_64') 表达式自动选择 ubuntu-latestubuntu-22.04-arm runner。
  • 镜像构建与推送流程:通过 docker/login-action@v3 登录 SWR 镜像仓库后,调用 .ci/docker/docker_build.sh 构建镜像,并为每个镜像附加 UTC 时间戳 tag(格式 YYYYMMDDHHMM),最终 docker pushswr.cn-north-4.myhuaweicloud.com/frameworkptadapter/pytorch
  • 构建结果汇总build job 将每个镜像的完整远程地址写入 artifact,summary job 收集所有结果后生成 Markdown 格式的汇总表格输出至 $GITHUB_STEP_SUMMARY,便于快速查看所有已推送的镜像及拉取命令。
likedislike
atomgit-bot
atomgit-bot
20 天前 评论:

代码审查

审查总结

.github/workflows/build-docker-images.yml 进行了全面审查,覆盖以下维度:

维度 结论
YAML key 拼写 ✅ 全部正确
runs-on 表达式 (L43) contains + &&/`
docker_build.sh 调用 (L69) ✅ TIMESTAMP 传递一致,参数正确
inputs.tag 注入 (L28-29) workflow_dispatch 需 write 权限,不构成权限提升;docker_build.sh 有 case 白名单兜底
磁盘清理 (L45-52) ✅ 激进但合理,后续步骤仅依赖 Docker 和 Node.js
镜像构建/推送流程 (L64-77) ✅ 逻辑正确,失败时不会写入结果文件
Upload artifact (L79-85) if: always() + retention-days: 1 合理
Summary job (L87-118) ⚠️ 见下方发现

发现统计

优先级 数量
P0 0
P1 0
P2 1
P3 0

整体风险判断

低风险。该工作流整体设计合理,仅在 summary job 的错误处理上存在一处中等问题:当所有构建失败导致无 artifact 时,"No images built" 兜底摘要无法输出,用户无法从 Summary 页面获知运行结果。修复方式简单(添加一行 if: always()),不影响其他逻辑。除此之外,该工作流可安全合入。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
ascend-robotascend-robot成员
20 天前 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
20 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-Ascend/pytorch 吴环宇, huangjingwei (2/2) 吴环宇 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

wangqi0808, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
ascend-robot
ascend-robot成员
20 天前 评论:

当前仓库存在以下 保护分支

Protected Branch Version Release
master
v2.10.0
v2.7.1-26.1.0
v2.12.0-26.1.0
v2.7.1
v2.9.0
v2.12.0
v2.11.0-26.1.0
v2.11.0
v2.10.0-26.1.0
v2.9.0-26.1.0
ci-test

评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作

注意:

  1. /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
  2. 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭
likedislike
ascend-robotascend-robot成员
20 天前 添加了label:ci-pipeline-running
ascend-robot
ascend-robot成员
20 天前 评论:

ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
20 天前 添加了label:docs-ci-pipeline-running
ascend-robot
ascend-robot成员
20 天前 评论:

✅ 跳过 docs ci 检查,没有需要检查的文档文件

likedislike
ascend-robotascend-robot成员
20 天前 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
20 天前 添加了label:docs-ci-pipeline-success
ascend-robotascend-robot成员
20 天前 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
20 天前 添加了label:ci-pipeline-passed
ascend-robot
ascend-robot成员
20 天前 评论:
流水线 PR-pipeline_pytorch#50408 [ commitID:799f0377 ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
阶段 任务名 状态 详情
编译构建 Build_X86 >>>
Build_ARM >>>
Build_LibTorch_x86 >>>
Build_LibTorch_ARM >>>
Build_X86_torchair 🛑 >>>
Build_ARM_torchair 🛑 >>>
patch_test 🛑 >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 CodeCheck >>>
check_error >>>
CodeCheck_lintrunner >>>
开源片段检查 SCA >>>
开发者测试 UT_ARM_A3_Part_01 🛑 >>>
UT_ARM_A3_Part_02 🛑 >>>
UT_ARM_A2_Part_01 >>>
UT_ARM_A2_Part_02 >>>
UT_ARM_A2_Part_03 >>>
UT_inductor_Part_01 🛑 >>>
UT_inductor_Part_02 🛑 >>>
UT_inductor_Part_03 🛑 >>>
UT_inductor_Part_04 🛑 >>>
UT_DIST_ARM_Part_01 🛑 >>>
UT_DIST_ARM_Part_02 🛑 >>>
UT_DIST_ARM_Part_03 🛑 >>>
UT_DIST_ARM_Part_04 🛑 >>>
UT_ARM_A2_Select_Part_01 >>>
UT_ARM_A2_Select_Part_02 >>>
流水线 PR-pipeline_pytorch >>>
此流水线已支持下列评论快捷指令,仅PR创建者和白名单成员[wujinyuan1, huangjingwei, liangsongwei, yashi999, culechan, Dring, wuyouqi1, L1919_snow, qq_52711437, WhiteNight12, nomiz, xiu_21, ffmh, wanglijun55, hss-shuai, husichao, smallsilly, lanshaozuishuai, jimmyisme1, lzy0920232, alpha-junh, Sunshine_Youngster, wei_zhuoyi, zhangyihuiben, zyw-hw, zzzkeke, rmch, yangch0324, LucciC, AACAES, renyujin, wjlflyer, senzhen-town, pengjingyou, qsc97, limuan, yule100, xiaoqi-zhou, kuhn7, chenxingying, hanye02, zichun_ye, anyrenwei, kkjocker, wangzili121, Lu_G, yvjc, puddingfjz, HandsoemLemon, bigprestigee1, huawuyi, zhenyu10, dairenjie, du-jin-hang, zou-jieyu, adelaideliu, TrHan, wanlinan, Windwindzzz, pengqihw, kisnwang, yuheng_wang, honghao_wang, jizewei, zhangguoguang, sunyu-xuan, chenrayray, hbhu_bin, liujunzhu, c_34, LiNuoh, maoyuanpeng1, zzhongmin, zhaoyu65, bellatan, jiabaolin, zhuofanshen, wencaiwen, lu_zhuge, caoshuyang, molly12, lyx324521, LQ1206, gitcode-chenjiao, cai-weiwei1989, CHDong, ogqin, yuanlipingGit, xuqinglin1, lqz2, zouwei1, chaoluoa, paradox325, jackzhang1116, yaoyao, akh, yujiacheng, dengjie0116, Hubert11111, Shine_Ws, wslhj555, longqiand, OYtao666, JiaqingQiang, luyyyy, Kingbelial, zhanghaiyu0101, wenxp1018, yanliu-luoluo, ksun_sekiro, liyong328, wgzheng, tangky, vivi_is_coding, aoiaoisola, weixin_44494597, wangmengmengwang65667, hid57809721, qq_35468730, comeonup, C547032, gcw_m5OQChA4, yao_yao_ling_xian, cnnbwcy, szqfes_12, cora_19, cann_lilin, can, shawnylee233, fanglanyue0916, hhz0, LiNuohang, taohuoquan]评论有效
  • compile、compile_inductor、compile_torchair : 运行流水线
  • retry : 重试流水线所有失败子任务
  • retry <任务名> : 仅重试指定失败子任务
  • stop : 停止流水线
likedislike
atomgit-bot
atomgit-bot20 天前进行代码检视2
.github/workflows/build-docker-images.yml
@@ -0,0 +115,4 @@
115+ fi
116+ 
117+ echo "" >> $GITHUB_STEP_SUMMARY
118+ echo "**Registry:** \`${{ env.REGISTRY }}/${{ env.SWR_ORG }}/${{ env.IMAGE_NAME }}\`" >> $GITHUB_STEP_SUMMARY
atomgit-bot
atomgit-bot20 天前评论:

🟡 Medium Priority

变更行:第 99-118 行的 Generate summary 步骤,该步骤未设置 if: 条件,默认 if: success()

影响行为/契约summary job 本身已设置 if: always()(第 90 行),但 job 内部步骤默认遵循 if: success()。当前置步骤 Download results(第 92-97 行)因没有任何 artifact 而失败时(例如:所有 build 均失败导致无 artifact 上传,或 matrix job 失败导致 build 被跳过),Generate summary 步骤会被跳过。

失败模式:本工作流特意在第 113-114 行编写了 "No images built" 的兜底摘要输出,但由于上述原因,该兜底代码在所有构建失败时反而永远不会被执行——用户看不到任何 Summary,也无法从 Summary 页面获知本次运行"没有镜像被构建"。这与设计意图(需要统一的发布入口和结果追溯)矛盾。

建议:为 Generate summary 步骤添加 if: always(),确保即使 Download results 失败,也能输出 "No images built" 兜底摘要。同时建议为 Download results 步骤添加 continue-on-error: true

likedislike
wangqi
wangqi
20 天前 评论:
likedislike
Jingwei Huang
Jingwei Huang成员
20 天前 评论:

/lgtm

likedislike
dilililiwhy
dilililiwhy成员
19 天前 评论:

/approve

likedislike
ascend-robotascend-robot成员
19 天前 添加了label:approvedlgtm
ascend-robotascend-robot成员
19 天前 解决了最后一个问题
ascend-robotascend-robot成员
19 天前 合入了pull request
ascend-robot
ascend-robot成员
19 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
ascend-robot
ascend-robot成员
19 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13312 [ commitID:799f0377 ] 已完成
likedislike