Pull Request已成功合入, 合并人@CANN-robot
(感谢 cui_jiahao 的贡献)变更摘要
本次 PR 主要为 ops-tensor 项目新增了完整的 CI/CD 流水线适配,引入了编译脚本、单元测试脚本以及 5 个可复用的 workflow 定义,形成三阶段(PreBuild → Compile → UT)的自动化流水线。整体通过 .gitcode 目录下的脚本和 workflow 编排,实现了多架构(x64/arm64)、多系统版本(如 ubuntu24)的编译、代码检查(precommit、SCA、反病毒、静态检查)以及单元测试覆盖率上报等 CI 能力,并通过 OBS(华为云对象存储)在各阶段间传递文件列表和构建制品。
主要改动
-
新增
compile.sh编译脚本: 为ops-ras项目封装了编译入口,根据task_name判断是否启用 API 兼容性检查(api-check=compile),最终执行build.sh --pkg --soc=ascend950完成构建 -
新增
ut.sh单元测试脚本: 为ops-math项目封装了单元测试执行逻辑,通过build.sh --opkernel -u运行 C++ 测试用例,并包含断言函数DP_ASSERT_EQUAL用于验证执行结果 -
新增
ops-tensor_action.yml主流水线: 定义了完整的 PR 流水线,包含 PreBuild(预处理、镜像版本决策、PR 文件列表生成)、Compile(x86/ARM/ubuntu24 多维度编译 + 代码检查 + 静态检查)、UT(API 检查 + 单元测试)三个阶段,并配置了并发控制和事后通知 -
新增
compile_action.yml可复用编译 workflow: 通过workflow_call暴露task_name、image_version、arch、package_name等参数,支持build-accelerate加速编译、产物重命名、API 检查和包校验,覆盖 x64 与 arm64 架构 -
新增
codecheck_action.yml与staticcheck_action.yml质量门禁: 集成了 precommit、PR 检查、SCA 软件成分分析、反病毒扫描、codecheck 代码检查以及staticcheck静态检查等多重质量门禁,通过 OBS 下载/上传文件列表实现阶段间数据传递


代码审查
审查总结
共审查 7 个变更文件,发现 17 个问题:
各文件审查结果
| 文件 | P2 | P3 | 状态 |
|---|---|---|---|
.gitcode/scripts/compile.sh |
0 | 2 | 已审查 |
.gitcode/scripts/ut.sh |
3 | 2 | 已审查 |
.gitcode/workflows/codecheck_action.yml |
0 | 0 | 已审查,无问题 |
.gitcode/workflows/compile_action.yml |
2 | 1 | 已审查 |
.gitcode/workflows/llt_action.yml |
2 | 0 | 已审查 |
.gitcode/workflows/ops-tensor_action.yml |
3 | 0 | 已审查 |
.gitcode/workflows/staticcheck_action.yml |
1 | 1 | 已审查 |
按优先级统计
- P0: 0
- P1: 0
- P2: 11
- P3: 6
整体风险评估:中等风险
主要问题集中在以下几个方面:
- API 检查遗漏:
compile_action.yml中 api-check 条件task_name与实际调用方传入的值不匹配,导致 ubuntu24 编译产物未经 API 兼容性检查。 - Shell 脚本可靠性:
ut.sh存在多项问题——LOG_DO函数命令拆分错误、参数传递丢失结构、set -e与断言的死代码冲突。这些在特定条件下会导致脚本行为异常。 - Workflow env 自引用:
ops-tensor_action.yml中obs_path/obs_smoke_path在同一个env块内引用其他 env 变量,可能不被 CI 平台支持,导致 OBS 路径错误。 - Checkout ref 回退缺失:3 个 workflow 文件中 checkout 步骤仅有
merge_commit_sha而无atomgit.sha回退,非 PR 触发时可能 checkout 错误版本。 - 拼写错误:
staticcheck_action.yml的 workflowname拼写为staticheck_action,与文件名不一致。
建议优先修复 api-check 条件不匹配(P2)、ut.sh 的 set -e 与断言冲突(P2)、以及 env 自引用(P2)这三个问题,它们是本次变更中影响面最大、触发确定性最高的缺陷。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 12 |
⛔ 需要修改


The MR can not be merged, because of CodeReview discussion not resolved
If you want to solve this problem, you can click here to do it in the FAQs.


描述
关联的Issue
测试
文档更新
类型标签