已合并
Add devcontainer build environment #5510
mhy创建于 7月20日
Add devcontainer build environment #5510
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 mhy 的贡献)atomgit-bot
7月20日 评论:
7月20日 评论:
变更摘要
此 PR 将 PyTorch 仓库中的 devcontainer 与 Dockerfile 配置迁移到 op-plugin 项目,旨在支持开发环境的自动创建。新增的配置涵盖 Python/Torch/CANN 版本参数化、CANN toolkit/ops 安装、Ascend driver 与 NPU 相关路径挂载等能力,使开发者可通过 VS Code devcontainer 或独立脚本一键构建并启动包含完整 CANN 运行时的容器化开发环境。
主要改动
- 新增
.devcontainer/devcontainer.json:提供 VS Code devcontainer 配置,指定基于docker/devel/Dockerfile的dev阶段构建,并通过mounts挂载/dev、Ascend driver、npu-smi等 NPU 运行时依赖,同时设置LD_LIBRARY_PATH环境变量。 - 新增
docker/devel/Dockerfile(多阶段构建):定义base→builder→dev三个阶段,base阶段基于manylinux_2_28配置 Python 版本和 pip 镜像源;builder阶段安装编译工具链(gcc-toolset-13、cmake、ninja 等)并按 Python/Torch 版本安装对应的 NumPy 和 PyTorch;dev阶段从华为云 OBS 下载并静默安装 CANN toolkit 与指定产品的 ops 包,并写入 CANN 环境初始化脚本。 - 新增
docker/devel/builder.sh:提供命令行驱动的镜像构建与容器启动脚本,支持--python、--torch-version、--cann、--cann-product、--nnal等参数;在--cann模式下以特权模式启动容器并挂载 NPU 驱动路径,非 CANN 模式下仅挂载源码目录用于纯编译场景。


不准确?
ascend-robot
7月20日 评论:
7月20日 评论:
atomgit-bot
7月20日 评论:
7月20日 评论:
代码审查
审查完成 — 结语
审查覆盖的 4 个文件
| 文件 | 审查结果 |
|---|---|
.devcontainer/devcontainer.json |
发现 1 个 P3 问题(缺少 .dockerignore) |
docker/devel/Dockerfile |
发现 2 个 P2 + 1 个 P3 问题 |
docker/devel/README.md |
发现 1 个 P3 问题(LD_LIBRARY_PATH 覆盖) |
docker/devel/builder.sh |
发现 2 个 P2 + 1 个 P3 问题 |
按优先级汇总
-
P2 (4 个):
builder.shusage函数始终 exit 0,错误分支返回码不正确Dockerfile基础镜像未固定 digest,构建不可重现DockerfileCANN 安装包未做哈希校验,供应链投毒风险builder.sh启动 dev 容器时覆盖 LD_LIBRARY_PATH,丢失 gcc-toolset 路径
-
P3 (4 个):
Dockerfilepip install 未使用--no-cache-dir- 缺少
.dockerignore,build context 包含整个仓库 builder.shBUILD_ARGS 未加引号展开README.md手动启动命令中 LD_LIBRARY_PATH 覆盖行为与 devcontainer.json 不一致
整体风险评估
中等风险。最值得关注的问题是 usage() 的退出码 bug 和 LD_LIBRARY_PATH 覆盖导致 gcc-toolset 路径丢失——这两个问题会在实际使用中触发(错误输入时脚本行为异常、dev 容器内编译失败)。CANN 安装包未校验和基础镜像未固定属于供应链安全/可重现性方面的重要改进项。配置整体结构合理,devcontainer 与 Dockerfile/脚本的协作设计良好,没有发现会导致服务宕机、数据损坏或安全漏洞的严重缺陷。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 4 |
💬 仅评论


不准确?
7月20日 添加了label:ascend-cla/yes
此处折叠了77条消息 查看更多
梁松伟
7月30日 评论:
7月30日 评论:
/approve


7月30日 添加了label:approvedlgtm
7月30日 关闭了关联的issue
7月30日 合入了pull request
ascend-robot
7月30日 评论:
7月30日 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


【合入来源】
【修改方案】
迁移 PyTorch 仓库中的 devcontainer 和 Dockerfile 配置到 op-plugin,用于支持开发环境自动创建。配置包含 Python/Torch/CANN 版本参数、CANN toolkit/ops 安装、Ascend driver 与 NPU 相关路径挂载等。
【资料变更】
【接口变更】
【功能验证】
已在 Ascend 910B3 服务器验证通过:
devcontainer build --workspace-folder . --image-name m_op_image 构建成功;
生成镜像 m_op_image:latest;
devcontainer up --workspace-folder . 启动成功;
容器内 npu-smi info 可正常显示 910B3 NPU 信息。
【CheckList】