- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 编译构建服务(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构建时,报错提示找不到依赖版本
- 镜像问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用Maven构建
使用Maven构建Java项目。
图形化构建
在配置构建步骤中,添加“Maven构建”构建步骤,参考表1配置参数。
参数 |
说明 |
---|---|
步骤显示名称 |
构建步骤的名称,可自定义修改。
|
工具版本 |
根据用户实际开发环境的需要,选择对应的工具版本。 CodeArts Build支持的工具版本,可查看构建工具版本。若当前的工具版本不满足您的使用要求,您可以自定义构建环境。 |
命令 |
配置Maven命令,一般使用系统默认生成的命令即可。如果需要配置更多命令,可参考Maven官网。 |
失败后是否继续运行 |
当前步骤执行失败后是否继续执行下一个步骤,根据实际使用场景选择是或否。 |
setting配置 |
“release仓库”和“snapshot仓库”两种仓库对应的使用场景区分如下,使用时要务必注意区分,避免出现如“将依赖上传到软件发布库但是构建时无法下载”此类场景。
|
发布依赖包到CodeArts私有依赖库 |
编译构建服务默认使用私有依赖库作为私有依赖下载源,如果需要将构建产物上传至私有依赖库供其他项目依赖使用,则需要添加此配置。配置前,需已创建私有依赖库。配置方法如下:
上传的私有依赖包,在其他项目添加pom.xml文件中的groupId、artifactId、version坐标即可引用。 |
单元测试 |
如果用户需要对单元测试结果进行处理,可配置此项。详见配置单元测试。 |
缓存配置 |
选择是否使用缓存以提高构建速度,选择“使用缓存”后,每次构建时会把下载依赖包缓存起来,后续构建无需重复拉取,可有效提高构建速度。 maven构建的依赖包存入缓存之后,只有当租户下面构建的项目有引进新的依赖包时,才会更新缓存目录,并不支持对已有的依赖包缓存文件进行更新。 |
代码化构建
参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
version: 2.0 # 必须是2.0 steps: BUILD: - maven: image: cloudbuild@maven3.5.3-jdk8-open inputs: settings: public_repos: - https://mirrors.example.com/maven cache: true # 是否开启缓存 unit_test: coverage: true ignore_errors: false report_path: "**/TEST*.xml" enable: true coverage_report_path: "**/site/jacoco" command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B ignore_fail: true |
参数 |
类型 |
说明 |
---|---|---|
image |
string |
填写镜像地址,有以下两种格式。
|
settings |
map |
可选参数。不配置,则默认使用CodeArts提供的setting.xml文件,如果需要使用自定义的“settings.xml”文件,可先添加自定义setting.xml文件,然后在默认的打包命令mvn package -Dmaven.test.failure.ignore=true -U -e -X -B末尾添加--settings settings.xml。 |
cache |
bool |
可选参数。 配置是否开启缓存。
默认值:false。 |
command |
string |
配置执行的Maven命令。如果需要配置更多命令,可参考Maven官网。 |
unit_test |
map |
可选参数。 配置单元测试。详细操作指导参考配置单元测试。 |
ignore_fail |
string |
用于控制当前步骤执行失败后是否继续执行下一个步骤。
|
添加自定义“setting.xml”文件
- 图形化构建
- 在“Maven构建”的命令窗口执行cat /home/build/.m2/settings.xml命令,任务执行完成后,会在构建日志中展示“settings.xml”文件的内容。
- 参考构建日志中的“settings.xml”的信息自定义新的“settings.xml”文件。
- 在“Maven构建”步骤前增加“下载文件管理的文件”构建步骤。
自定义步骤显示名称,工具版本当前仅支持“shell4.2.46-git1.8.3-zip6.00”。
- 单击“上传”,在弹出的窗口中选择2中自定义的文件,添加描述,勾选相关协议,然后单击“保存”。
- 在“下载文件”中选择上传的“setting.xml”文件。
- 代码化构建
参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。
1 2 3 4 5 6 7
version: 2.0 # 必须是2.0 steps: BUILD: - download_file: inputs: name: settings.xml ignore_fail: true
表3 下载文件管理的文件代码示例参数说明 参数
类型
说明
name
string
setting文件名称。
ignore_fail
string
用于控制当前步骤执行失败后是否继续执行下一个步骤。
- true:是。
- 为空:否。
- 文件大小限制为100k。
- 文件类型限制为:.xml、.key、.keystore、.jks、.crt、.pem。
- 最多支持上传20个文件。
- 在搜索框输入关键字,可搜索文件。
- 单击操作列
,可修改文件名称,并设置是否允许租户内所有成员在编译构建中使用该文件。
- 单击操作列
,可以下载文件。
- 单击操作列
,在下拉框中选择“删除”,可根据弹框提示确认是否删除。
- 单击操作列
,在下拉框中选择“编辑权限”,可在弹出的界面配置用户操作文件的权限。
图1 配置用户操作文件权限表4 文件管理角色权限说明 权限类型
拥有该权限的角色
添加用户
项目下所有用户。
查看
文件创建者、相同租户的用户。
使用
文件创建者、文件创建者配置了使用权限的用户。
更新
文件创建者、文件创建者配置了更新权限的用户。
删除
文件创建者、文件创建者配置了删除权限的用户。
编辑权限
文件创建者。
说明:
创建者默认有所有权限并且不可被删除和修改。
配置单元测试
- 配置单元测试前,需要在项目中编写单元测试代码,且需满足如下条件:
- 单元测试用例代码存放位置需满足Maven默认单元测试用例目录规范及命名规范,或自行在配置中指定用例位置。
如:单元测试用例统一存放在路径为“src/test/java/{{package}}/”,单元测试将在Maven构建过程自动执行。
- 项目中不可存在忽略单元测试用例的配置代码,即确保以下代码未存在于项目的“pom.xml”文件中。
1 2 3 4 5 6 7 8
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
- “pom.xml”文件中需引入junit依赖,添加的代码示例如下。
1 2 3 4 5
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> </dependency>
说明:
junit版本需在4.13.1及以上。
- 单元测试用例代码存放位置需满足Maven默认单元测试用例目录规范及命名规范,或自行在配置中指定用例位置。
- 在代码仓中创建单元测试类,如图2所示。
“Demo.java”文件代码示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
package test; public class Demo { public String test(Integer i) { switch (i) { case 1: return "1"; case 2: return "2"; default: return "0"; } } }
“DemoTest.java”文件代码示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
package test; import org.junit.Test; public class DemoTest { private Demo demo=new Demo(); @Test public void test(){ assert demo.test(1).equals("1"); assert demo.test(2).equals("2"); assert demo.test(3).equals("0"); } }
- 配置构建步骤中的单元测试。
- 图形化构建
- 在“Maven构建”步骤的命令窗口,使用“#”注释命令mvn package -Dmaven.test.skip=true -U -e -X -B。
- 删除#mvn package -Dmaven.test.failure.ignore=true -U -e -X -B命令前的“#”。
- 展开“单元测试”,根据实际需求参考表5配置参数。
表5 单元测试配置参数说明 参数
说明
是否处理单元测试结果
配置是否处理单元测试结果。
- 是:处理。
- 否:不处理。
是否忽略用例失败
当选择处理单元测试结果时,需要配置是否忽略用例失败。
- 是:用例失败时构建任务仍然继续。
- 否:用例失败时构建任务也失败。
单元测试结果文件
测试报告需要采集单元测试结果用以生成可视化报告,需在此处填写单元测试结果文件存放路径。
多数情况下,保留默认路径“**/TEST*.xml”即可满足任务需求。为增加结果准确性,可根据实际情况制定精确的报告路径,如:“target/surefire-reports/TEST*.xml”。
是否处理单元测试覆盖率结果
根据实际需要配置“是否处理单元测试覆盖率结果”,若选“是”,会生成覆盖率测试报告。配置方法请参见使用JaCoCo生成单元测试覆盖率报告。
单元测试覆盖率报告路径
当选择处理单元测试覆盖率结果时,需填写相对于项目根目录的相对路径,如:target/site/jacoco,选择处理单元测试覆盖率结果后,会将此目录下的所有文件进行打包上传。
- 在“Maven构建”步骤的命令窗口,使用“#”注释命令mvn package -Dmaven.test.skip=true -U -e -X -B。
- 代码化构建
参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。
1 2 3 4 5 6 7 8 9 10 11
version: 2.0 # 必须是2.0 steps: BUILD: - maven: unit_test: coverage: true ignore_errors: false report_path: "**/TEST*.xml" enable: true coverage_report_path: "**/site/jacoco" command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B
表6 单元测试参数说明 参数
类型
说明
enable
bool
可选参数。
配置是否处理单元测试结果。
- true:处理。配置“true”,需要mvn命令末尾增加-Dmaven.test.failure.ignore=true参数。
- false:不处理。
默认值:true。
ignore_errors
bool
可选参数。
配置是否忽略用例失败。
- true:忽略,用例失败时构建任务仍然继续。
- false:不忽略,用例失败时构建任务也失败
默认值:true。
report_path
String
填写单元测试数据存储路径。可根据实际情况制定精确的报告路径,如:“target/surefire-reports/TEST*.xml”。
coverage
bool
可选参数。
配置是否处理覆盖率数据。若配置“true”,配置方法请参见使用JaCoCo生成单元测试覆盖率报告。
- true:处理。
- false:不处理。
默认值:false。
coverage_report_path
string
可选参数。
当选择处理单元测试覆盖率结果时,需填写相对于项目根目录的相对路径,如:target/site/jacoco,选择处理单元测试覆盖率结果后,会将此目录下的所有文件进行打包上传。
- 图形化构建
- 配置完成后,如果构建任务执行成功,即可在任务执行详情页面的“测试”页签查看测试报告。如果选择了处理单元测试覆盖率报告,会生成覆盖率测试报告,单击“覆盖率报告下载”即可下载。
配置使用JaCoCo生成单元测试覆盖率报告
配置单元测试时,如果选择处理单元测试覆盖率结果,则需要按照如下指导进行配置。
- 单模块项目配置方法
在项目中已添加jacoco-maven-plugin插件用于生成单元覆盖率报告,即在“pom.xml”文件中添加如下配置:
JaCoCo的report目标默认是在verify阶段,这里需要将report目标定义为test阶段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.5</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>test</phase> #定义report目标的阶段 <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
- 多模块项目配置方法
假设多模块项目代码结构如下,以此为例为您介绍如何配置生成单元测试覆盖率报告。
1 2 3 4 5 6 7
├── module1 │ └── pom.xml ├── module2 │ └── pom.xml ├── module3 │ └── pom.xml ├── pom.xml
- 在项目下添加一个用来聚合的模块,自定义名称如:report,添加聚合模块后的代码结构如下:
1 2 3 4 5 6 7 8 9
├── module1 │ └── pom.xml ├── module2 │ └── pom.xml ├── module3 │ └── pom.xml ├── report │ └── pom.xml ├── pom.xml
- 在项目根目录的“pom.xml”文件添加jacoco-maven-plugin插件,代码示例如下。
1 2 3 4 5 6 7 8 9 10 11 12 13
<!-- 配置单元测试覆盖率--> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.3</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> </executions> </plugin>
- 配置聚合模块的“pom.xml”文件。
以dependency形式引入所有依赖模块,并使用report-aggregate定义JaCoCo聚合目标。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
<dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>module1</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>module2</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>module3</artifactId> <version>${project.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.3</version> <executions> <execution> <id>report-aggregate</id> <phase>test</phase> <goals> <goal>report-aggregate</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 配置完成后,在项目根目录下执行mvn test,执行成功后会在“report/target/site/jacoco-aggregate”目录下生成各个模块的覆盖率报告。也可以在outputDirectory中自定义报告的输出路径:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.3</version> <executions> <execution> <id>report-aggregate</id> <phase>test</phase> <goals> <goal>report-aggregate</goal> </goals> <configuration> <outputDirectory>target/site/jacoco</outputDirectory> </configuration> </execution> </executions> </plugin>
- 在项目下添加一个用来聚合的模块,自定义名称如:report,添加聚合模块后的代码结构如下:
关于使用Maven构建时的常见问题,可参考使用Maven构建时常见问题。