Pull Request已成功合入, 合并人@CANN-robot
(感谢 yajie_caroline 的贡献)变更摘要
此 PR 为 asc-devkit 仓库新增了一套完整的 GitCode CI/CD 流水线配置,包括主流水线定义文件和多个可复用子工作流,以及配套的编译、单元测试、冒烟测试脚本。主要目的是实现 PR 触发时的自动化构建、代码检查、单元测试、API 兼容性校验和预冒烟验证流程。
主要改动
-
新增主流水线
.gitcode/workflows/asc-devkit_action.yml:定义了由 PR 评论中/compile关键词触发的 5 阶段流水线(镜像准备 → 编译 → 单元测试 → 测试报告 → 预冒烟),涵盖 x86/ARM 多架构编译、多套 UT 测试套件、代码检查(precommit、SCA、反投毒)、静态检查(Markdown 规范、拼写检查、链接有效性等)以及 A2 设备上的预冒烟测试。 -
新增编译脚本
.gitcode/scripts/compile.sh:根据任务名称自动选择 GCC 版本(Ubuntu 24 使用 gcc-14,其余使用 devtoolset-7),加载 CANN 编译环境,按目标分支(master、exp/kadc等)执行不同的build.sh构建命令,并在x86_compile_ubuntu24场景下启用CMAKE_EXPORT_COMPILE_COMMANDS以支持 API 兼容性检查。 -
新增可复用编译工作流
.gitcode/workflows/compile_action.yml:将编译过程封装为带输入参数(task_name、image_version、package_name、arch)的workflow_call,包含 OBS 下载 PR 文件列表、构建加速执行、包重命名、API 检查与包验证等步骤,供主流水线按不同架构和平台组合调用。 -
新增单元测试脚本与工作流
.gitcode/scripts/ut.sh和.gitcode/workflows/ut_action.yml:ut.sh按分支和ut_type参数决定是否启用覆盖率(--cov)并执行build.sh对应目标;ut_action.yml则封装了分支检出、OBS 文件下载、Redis 缓存、测试执行、覆盖率收集和制品上传的完整 UT 流程。 -
新增预冒烟脚本
.gitcode/scripts/pre_smoke.sh:针对is_finite算子执行预冒烟测试,下载并安装 ARM 架构的cann-asc-devkit运行包,运行run_presmoke.sh测试套件,并在完成后检查 NPU 设备状态和测试结果,将日志打包上传至 OBS。


代码审查
审查总结
已审查全部 8 个变更文件:
| 文件 | 结果 |
|---|---|
.gitcode/scripts/compile.sh |
发现 2 个问题(P1 ×1, P2 ×1) |
.gitcode/scripts/pre_smoke.sh |
发现 1 个问题(P3 ×1) |
.gitcode/scripts/ut.sh |
发现 2 个问题(P0 ×1, P1 ×1) |
.gitcode/workflows/asc-devkit_action.yml |
发现 1 个问题(P2 ×1) |
.gitcode/workflows/codecheck_action.yml |
无问题 |
.gitcode/workflows/compile_action.yml |
发现 1 个问题(P1 ×1) |
.gitcode/workflows/staticcheck_action.yml |
发现 1 个问题(P3 ×1) |
.gitcode/workflows/ut_action.yml |
无问题 |
问题汇总:P0 ×1、P1 ×3、P2 ×2、P3 ×2,共 8 个发现。
整体风险评估:⚠️ 高风险。存在一个 P0 级阻断性缺陷(ut.sh 中 ${{ }} 模板语法在 shell 脚本中无法展开,UT 流程将全面失败)和三个 P1 级缺陷(构建退出码未捕获、compile.sh 分支条件语法错误、compile_action.yml 环境变量大小写不匹配导致编译分支路由错误)。建议在合入前优先修复 P0 和所有 P1 问题。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 4 |
| 🟡 建议 | 7 |
⛔ 需要修改


/lgtm
/approve


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