收益
- 不用再通过命令行发布
- 测试环境稳定,可以重复执行
- 可视化测试报告和测试覆盖率
- 配合git的webhook使用,代码合入前触发,执行结果可作为代码合入准入参考
准备
- linux服务器已安装jenkins、git、openjdk8和maven3.5+已就绪
- git服务
- 一个维护测试用例的Java项目
jenkins和git服务可参考树莓派4B基于docker搭建devops平台进行准备。
本实践环境中使用的jenkins就是参考树莓派4B基于docker搭建devops平台进行搭建的,参考文档中使用的jenkins镜像已经内置git、openjdk8和maven3.8.4,且同时支持树莓派和普通x86服务器;demo是一个快嘉脚手架项目,该项目维护了基于testng开发的测试用例。如您也准备好了一个维护测试用例的Java项目,可以将它 push到搭建好的git服务器,如gogs;或者任何可选的代码托管平台,如github、gitee、codeup、coding等等。
pipeline设计与实现
步骤
- 下载源码
- 执行测试
- 发布测试覆盖率报告
- 发布测试报告
脚本
node {
stage('git chekout') {
git branch: "master", url: 'https://gitee.com/fastjrun/demo.git'
}
stage('UT') {
sh 'mkdir -p demo-base/src/main/java && mvn clean verify -pl demo-jacoco-report -am -Put -Dbdgc.skip=false'
}
stage('parallel publish report') {
parallel (
'jacoco': {
jacoco()
},
'testng-result': {
step([$class: 'hudson.plugins.testng.Publisher', reportFilenamePattern: 'target/surefire-reports/testng-results.xml'])
}
)
}
}
插件准备
jenkins需安装插件:jacoco、testng。
pipeline执行
配置任务
jenkins控制台新建item
输入任务名称demo-auto-test,选择Pipeline后,点“确定”按钮,进入配置任务页面
选择Pipeline script from SCM后,显示SCM下拉选择框如下
选择Git后,显示Repository标签和Repository URL输入框如下
Repository URL输入https://gitee.com/fastjrun/demo.git
脚本路径输入demo-jacoco-report/ut.groovy
点“保存”按钮后,这个自动化测试任务就配置好了
任务执行
以参考树莓派4B基于docker搭建devops平台首次部署的jenkins在安装jacoco和testng plugin插件后执行本任务,是可以成功执行的。
执行效果
任务执行成功后,刷新任务首页,会发现任务首页会显示TestNG Results和Coverage Trend菜单,以及最新的测试结果和Code Coverage Trend图如下
测试报告
点TestNG Results菜单,进入TestNG Results页面如下
点上页中的“build #1”链接,其中的1即第一次执行,进入该任务第一次测试报告详情页面如下
测试覆盖率
点Coverage Trend菜单,进入JaCoCo Coverage Trend页面如下
点上页中的JaCoCo Coverage Trend,进入该任务最近一次测试覆盖率详情页面如下
总结
参考树莓派4B基于docker搭建devops平台进行搭建的jenkins已经解决了很多潜在问题,如果参考其他方案搭建的jenkins在执行构建过程中可能会遇到一些其他问题,您参考网上的解决方案自行处理即可,本实践将不再赘述。
评论区