- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 编译构建服务(CodeArts Build)使用流程
- 购买并授权使用CodeArts Build
- 配置CodeArts Build项目级角色权限
- 新建构建任务
-
配置构建任务
- 构建任务基础配置
- 选择构建步骤
-
配置构建步骤
- 使用Maven构建
- 使用Android构建
- 使用Npm构建
- 使用Gradle构建
- 使用Yarn构建
- 使用gulp构建
- 使用Grunt构建
- 使用mono构建
- 使用PHP构建
- 使用SetupTool构建
- 使用PyInstaller构建
- 使用shell命令构建
- 使用Gnu-arm构建
- 使用Msbuild构建
- 使用CMake构建
- 使用Ant构建
- 使用Kotlin构建
- 使用Go语言构建
- 使用Ionic Android App构建
- 构建Android快应用
- 使用GFortran构建
- 使用Sbt构建
- 使用Grails构建
- 使用Bazel构建
- 使用Flutter构建
- 使用HarmonyOS构建
- 使用构建方舟编译器构建
- 通过Docker命令操作镜像
- 生成单元测试报告
- 自定义构建环境
- 使用自定义环境构建
- 下载软件发布库中的软件包
- 上传软件包到软件发布库
- 上传文件到OBS
- 配置构建任务参数
- 配置构建任务执行计划
- 配置构建任务角色权限
- 配置构建任务事件通知
- 执行构建任务
- 查看构建任务
- 加速构建任务
- 管理构建任务
- 查询审计日志
- 参考
- 旧版手册页面
-
最佳实践
- CodeArts Build最佳实践汇总
- 基于Maven构建产物制作Docker镜像并发布到镜像仓(内置执行机/图形化构建)
- 使用Maven构建上传软件包至私有依赖库(内置执行机/图形化构建)
- 使用Maven构建实现私有依赖包的上传及下载引用(内置执行机/图形化构建)
- 使用NPM构建上传软件包至软件发布库(内置执行机/图形化构建)
- 使用自定义执行机执行Maven构建(自定义执行机/图形化构建)
- 使用Maven构建上传软件包和推送镜像到SWR(内置执行机/代码化构建)
- 使用Maven构建执行多任务构建工程(内置执行机/代码化构建)
- 基于私有依赖库使用Maven构建并上传软件包(内置执行机/图形化构建)
- 使用自定义构建环境执行构建任务(内置执行机/图形化构建)
- 对C/C++构建工程进行构建加速(内置执行机/图形化构建)
- 使用Windows自定义执行机执行Maven构建(自定义执行机/图形化构建)
- HE2E DevOps实践:构建应用部分
-
API参考
- 使用前必读
- API概览
- 如何调用API
-
任务相关API接口
- 根据开始时间和结束时间查看构建任务的构建历史列表
- 查看构建任务的构建历史列表
- KeyStore文件下载
- 查看任务运行状态
- 查看项目下用户的构建任务列表
- 执行构建任务
- 查询指定代码仓库最近一次成功的构建历史
- 获取构建历史详情信息接口
- 根据开始时间和结束时间查看构建任务的构建成功率
- 下载全量构建日志
- 下载构建步骤日志
- 获取构建记录信息
- 获取构建产物详情信息
- 停止构建任务v3
- 停止构建任务v1
- 删除构建任务
- 禁用构建任务
- 恢复构建任务
- 创建构建任务
- 更新构建任务
- 查询构建模板
- 创建构建模板
- 删除构建模板
- 查询通知
- 更新通知
- 取消通知
- 获取构建任务详情
- 下载构建实时日志
- 获取任务构建记录列表
- 获取任务构建记录列表v1
- 查内置执行机规格
- 获取构建任务的角色权限矩阵信息
- 是否已开启内网安全访问
- 获取用户权限
- 获取任务权限矩阵
- 当前用户所在项目所属租户的包周期每月时长是否超额
- 查看用户全部的构建任务列表
- 获取构建记录的构建脚本
- 查看项目下任务名是否存在
- 获取单元测试覆盖率报告列表
- 查询当前租户(计费)类型
- 查询账号是否联邦账号
- 禁用任务
- 查询构建成功率
- 获取单元测试覆盖率报告压缩包
- 查看构建任务构建信息
- 获取通知信息
- 查询租户状态
- 查看任务是否在构建
- 获取覆盖率接口
- 获取任务各阶段信息
- 获取指定工程的简要构建信息
- 构建历史页获取构建次数
- 保存模板使用记录
- 洞察构建时长
- 配置文件权限
- 添加文件权限
- 文件管理文件下载
- 删除文件管理文件
- 删除任务
- 编辑页获取参数类型的接口
- 获取当前用户的项目信息列表
- 查询租户下文件列表
- 获取编译构建默认参数
- 查询用户可使用文件
- 获取项目列表
- 获取指定工程的构建记录列表
- 查询指定构建记录详情
- 查询任务是否已禁用
- 查询官方模板
- 获取构建任务配置的对比差异
- 设置回收站中的任务保留时间
- 查看回收站中删除的构建任务列表
- 删除回收站中的任务
- 清空回收站中的任务
- 恢复回收站中的任务
- 更新文件信息
- 上传文件
- 检查webhook地址参数
- 获取dockerfileTemplate
- 获取镜像模板列表
- 获取当前项目默认角色权限矩阵信息
- 获取修改历史
- 复制任务名
- 获取该任务所有分支信息
- 查看系统预定义参数
- 查看仓库
- 获取租户任务总数和成功率接口
- 获取套餐资源id,影响临期,超期提示
- 获取套餐临期信息
- 检查任务数量是否上限
- 获取代码化构建默认模板
- 获取官方推荐模板
- 执行构建
- 创建构建任务
- 更新构建任务
- 复制构建任务
- 查询项目任务列表
- 根据条件查询特定模板
- 创建构建模板
- 删除构建模板
- 获取构建记录信息
- 获取构建任务详情
- 查询任务状态
- 流水线查看构建任务信息
- 文件管理删除权限
- 文件管理查询权限
- 获取任务构建记录列表
- 详情页获取构建参数
- 获取构建记录的有向无环图
- 应用示例
- 附录
- 历史API接口(待下线)
- 修订记录
- 场景代码示例
-
常见问题
- 通用构建问题
-
Maven构建
- 执行Maven构建时,提示未开通私有依赖仓
- 执行Maven构建时,提示license信息检查不通过
- 使用maven deploy命令上传包失败
- 执行Maven构建时,提示找不到pom文件
- 执行Maven构建时,提示找不到package/symbol
- 使用exec-maven-plugin插件实现Maven和npm混合编译
- 执行Maven构建时,多个子项目和父项目之间引用报错
- 如何配置及清理Maven构建缓存
- 如何查找Maven构建中正确的构建包路径
- 如何使用jib-maven-plugin插件构建Maven工程制作镜像
- 使用Maven构建时,代码更新后构建出来的包还是旧的
- 使用Maven构建时,Maven组件下载缓慢
- Android构建
- Gradle构建
- Msbuild构建
-
Npm构建
- 执行Npm构建时,报错提示JavaScript heap out of memory
- 执行Npm构建时,报错提示Unexpected end of JSON ...
- 执行Npm构建时,报错提示enoent ENOENT: no such file or directory
- 执行Npm构建时,报错提示Module not found: Error: Can't resolve ...
- 执行Npm构建失败,但不显示错误日志
- 执行Npm构建时,报错提示npm cb() never called
- 执行Npm构建时,报错提示gyp ERR! stack Error: EACCES: permission denied
- 执行Npm构建时,报错提示eslint: error 'CLODOP' is not defined
- 执行Npm构建时,报错提示node-sass下载失败
- 执行Npm构建时,报错提示error: could not write config file
- Npm构建耗时且安装依赖缓慢
- 执行Npm构建时,报错提示找不到依赖版本
- 镜像问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用Msbuild构建
编译构建服务提供了常用的构建模板(构建环境),不同的构建模板中预装了对应构建所需工具集,MSBuild构建镜像一般预装了msbuild、nuget、.NET Framework等常用工具。
使用msbuild构建工具执行引擎、构造工程,支持.NET框架构建,包含.NET Core和.NET Frameworks。
- Msbuild构建仅支持图形化构建。
- Msbuild构建仅可单独使用,如果构建任务中已有其他构建步骤,将无法添加“Msbuild构建”。
Msbuild构建场景
场景类型 |
说明 |
---|---|
无外部依赖 |
参考镜像版本及对应工具版本,对于仅使用了环境预装依赖库的项目,选择合适的镜像版本即可直接使用msbuild或.NET命令进行构建。 例如:项目使用了dotnetframework4.7.2的SDK和Office操作的相关官方依赖库(MSOffice)。可选用“msbuild15-dotnetframework4.7.2”版本镜像,使用msbuild命令构建。 |
使用Nuget进行依赖管理 |
对于使用了环境预装依赖库以外的项目,但使用了Nuget对所有依赖库进行管理的项目,选择合适的镜像版本后,可先使用nuget restore命令下载所有依赖,此后使用msbuild命令进行构建。.NET命令无需先执行nuget命令。 例如:项目使用了“dotnetframework4.7.2”的SDK,依赖了Myget上某Package并使用Nuget添加了该依赖。可选用“msbuild15-dotnetframework4.7.2”版本镜像,使用nuget restore && msbuild命令构建。 |
其他 |
对于有其他命令需求的项目,如Git、JDK、Nant、Nodejs等,使用对应的命令进行操作。 |
场景类型 |
说明 |
---|---|
未使用Nuget管理依赖库 |
依赖了本地安装的依赖库,且没有使用nuget对依赖进行管理。详细解决方案请参见找不到程序集(**.dll)。 例如:某项目使用“dotnetframework4.7.2”的SDK,本地安装了Nunit依赖库,但没有使用Nuget对其进行管理。 此时使用msbuild命令对其进行构建时会出现找不到库的错误,导致构建失败。 |
解决方案版本低于VS2015(不包含) |
对于使用VS2015(不含)以前版本创建的解决方案,会出现版本过低不兼容的情况,导致构建失败。请尝试升级解决方案。 |
约束与限制
为方便使用,CodeArts Build提供的Msbuild构建环境原则上尽可能保持与本地环境一致,但因Windows系统与CodeArts Build本身一些系统限制,少数场景下可能会导致构建失败。使用前建议仔细阅读以下规格说明。
- 不支持带空格的文件路径
C#项目中目录或文件名中包含空格会导致构建失败,目录/文件的命名请使用字母、数字、下划线的组合,勿使用其他特殊字符,避免不必要的构建失败。
- 文件全路径长度不得超过260个字符
- Windows系统中,文件全路径的最大长度限制为260个字符,超过此长度会导致Msbuild构建失败。
- CodeArts Build需在指定目录下执行命令,即您的构建场景实际与以下步骤类似:
cd C:\编译构建的默认路径\您的项目路径 msbuild
说明:
- 项目文件全路径长度实际为项目下文件相对路径长度与编译构建服务默认路径长度之和。
- 编译构建服务默认路径长度为45字符。因此,在使用Msbuild构建的过程中,您的项目文件路径需满足:项目下文件相对路径(以代码仓库为根目录)长度不可大于215字符。
- 一些特殊场景(如构建时指定输出目录为“Output/release”)下,可能会额外占用路径长度。
建议您的项目下文件相对路径(以代码仓库为根目录)长度保持在200个字符以下,原则上尽可能短。
- 不可直接引用系统不具备的组件
部分场景下,解决方案中可能不使用NuGet等管理工具,直接引用默认路径下的程序集。但构建时环境中不具备此程序集,导致编译告警,如果项目代码中使用了此引用,甚至会直接导致失败。
由于Windows系统特殊性,通常情况下,此类程序集默认安装于本地系统,无需指定程序集位置,VS构建时会从默认配置的几个程序集路径查找,可以构建成功。而云端构建环境对应目录无此程序集,进而导致云端构建环境与本地不一致带来的失败。
为解决此类场景,Msbuild集成了NuGet,可以在构建时从远程仓库下载对应程序集,此时只需于项目中指定“packages.config”,并于其中声明依赖的程序集即可。
特殊情况下,项目引用的程序集可能无法在远程仓库找到,此时需要手工保存程序集至代码仓库中,并显式指定程序集路径。
详细解决方案请参见找不到程序集(**.dll)。
- 命令行中路径分隔符使用'/'而非'\'
部分场景下,可能需要在命令行中使用路径参数,此处需注意,Msbuild构建环境要求路径分隔符统一使用“/”格式。
错误示例:
cd test\test1或cd test\\test1
正确示例:
cd test/test1
- 避免直接指定低版本SDK路径
图形化构建
在配置构建步骤中,添加“Msbuild构建”构建步骤,参考表3配置参数。
参数 |
说明 |
---|---|
步骤显示名称 |
构建步骤的名称,可自定义修改。
|
工具版本 |
根据用户实际开发环境的需要,选择对应的工具版本。 CodeArts Build支持的工具版本,可查看构建工具版本。若当前的工具版本不满足您的使用要求,您可以自定义构建环境。 |
powershell命令 |
配置Msbuild命令,一般使用系统默认给出的命令即可。常见命令可参考常用Powershell命令。
|
常用Powershell命令
如果在构建任务中使用powershell命令,在命令行窗口按如下格式输入命令即可。
powershell –Command Powershell命令 Powershell命令参数列表
Powershell命令 |
命令使用说明 |
---|---|
Compress-Archive(压缩命令) |
powershell –Command Compress-Archive -Path [SourcePath] -DestinationPath [Target.zip]
|
Expand-Archive(解压缩命令) |
powershell –Command Expand-Archive -Path [SourcePath] -DestinationPath [TargetPath]
|
Copy-Item(复制命令) |
powershell –Command Copy-Item -Recurse -Path [SourcePath] -DestinationPath [TargetPath]
-Recurse选项为循环复制子文件夹,但若在SourcePath中使用了通配符,此开关会失效,不会复制指定目录下的子文件夹。 |