# 使用技巧
# 设置手动触发流水线
大家在编辑流水线时,可以按如下方式在触发方式设置中,将流水线触发方式设置为手动触发。 这种流水线如果需要执行,则需要到流水线管理页面,手动点击执行按钮,如下图所示 选择要触发的分支、tag或commitID
另外还有一种方式,就是依然将流水线设置为自动触发,但是将将流水线的第一个Job触发方式设置为手动即可 这样每次代码提交时,都会生成一个空的执行记录,其实啥也没做,不会对计算资源造成浪费 这种设计的好处是方便大家对任意一次代码提交执行手动触发
# 分享构建记录
如果某条构建记录报错,希望发送给同事查看详情可使用如下方法: 点击列表编号旁边或者详情页编号旁边的复制图标,讲流水线构建记录落地详情页发送给同事
# 通过拖拽编辑流水线
如图,在流水线编辑界面,可通过拖拽的方式进行编辑
# 流水线执行时设置任务参数
通常流水线是自动化运行居多,各任务按照配置时设置的默认参数即可运行。 但是有些场景需要在任务运行前进行设置,例如部署任务需要设置部署说明,将Job设置为手动触发即可,这样点击手动执行按钮可弹出设置界面如图。
# 构建任务中飞速下载代码
流水线中的编译类插件中已经内置了一个独门绝迹,自动下载触发此次构建任务的commit点的代码,而不是下载代码库中的所有代码历史。 大家如果在自己的自定义任务中,也需要下载代码,也可以使用此方法(代码库专利技术,支持原生clone命令下载指定commit) 语法如下:
git clone --depth=1 代码库地址~{commitID}.git [代码库本地目录名称]
例如你的代码库地址是https://10.1.2.3/demo/sample/htmlDemo.git 则可以在你的构建脚本中使用如下方式飞速下载代码
git clone --depth=1 https://用户名:密码@10.1.2.3/demo/sample/htmlDemo~${SYS_BUILD_COMMIT}.git sample
此方法对于开发历史悠久的历史大库,理论上可以千倍提升clone速度,并且千倍降低cpu、内存和网络消耗
# JaCoCo覆盖率采集插件使用
流水线的测试插件JaCoCo覆盖率采集插件不仅支持自研全量测试还支持增量测试功能,具体使用方法如下:
# 全量:
- 新建流水线,新建任务选择测试类型的->JaCoCo覆盖率采集插件
- 配置选择插件
- 选择对应的环境版本,测试命令使用默认自带的如下图:
- 测试报告目录要依据代码库配置文件的保持一致哟!如上图,我这里测试报告目录为:target/site/jacoco
- 质量门禁可开可不开。开启后对扫描后结果与设置的门禁坐对比不符合设置的门禁后任务会执行失败。
- 全量扫描结果如图:
- 点击查看报告可以查看详细的报告
# 增量:
增量测试的意义是测试本次Push的代码变更内容,流水线的触发方式(除手动触发和评审模拟预合入是全量测试外)均可支持增量测试
注意:增量在全量的配置下必须满足以下三点要求:以【发起及更新MR评审触发】方式举例
- 在项目pom.xml中引入如下插件依赖
<plugin>
<groupId>io.github.devopsplugin</groupId>
<artifactId>jacoco</artifactId>
<version>0.0.2</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
- 例如图pom.xml配置:
- 在命令行中将
mvn test
改为如下命令:
mvn test -Djacoco.git.oldrev=${gitOldRev} -Djacoco.git.newrev=${gitNewRev} -Djacoco.author.name=${gitAuthorName}
- 例如命令行提示:
- 最后一点务必注意,本次Push变更的代码的提交人(commiter)必须和流水线触发人相同才是本次增量的测试结果
- 触发流水线任务人和代码变更人是同一个人增量扫描结果如图:
与提交人不一样的人触发流水线,为全量如图:
异常的增量测试
- pom.xml 中未引入插件依赖
- 命令行未使用命令:
mvn test -Djacoco.git.oldrev=${gitOldRev} -Djacoco.git.newrev=${gitNewRev} -Djacoco.author.name=${gitAuthorName}
- 触发流水线人和提交人不一致
- 流水线方式为手动触发
- 流水线方式为评审模拟预合入方式
以上5种触发方式结果报告都是全量。