Jenkins集成jacoco收集集成测试覆盖率
2020-02-28
目录
0 整体思路1 安装版本2 全局工具配置3 Jenkins创建JacocoIntegrateTestDemo项目 3.1 配置源码管理 3.2 配置构建 3.3 配置构建后操作4 执行JacocoIntegrateTestDemo项目,查看代码覆盖率
0 整体思路
返回
启动被测系统
java -javaagent:D:/software/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=10.8.116.81,append=true -jar D:/Code/jacocodemo/target/jacocodemo.jar --server.port=9999
执行测试脚本(可通过postman执行,或自动化测试脚本)
通过jenkins Job收集展示覆盖率报告
拉取codenet上的JacocoDemo的代码(ant的build.xml也放在源代码根目录下)
编译源代码生成class文件(jacoco生成report需要)
ant dump拉取覆盖率信息jacoco.exec
配置jacoco coverage report展示覆盖率信息
1 安装版本
jenkins-2.150.3
jenkins插件
jenkins -> 系统管理 -> 插件管理
git
jacoco
maven
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228143901252-1392372296.png)
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228143914038-1558503305.png)
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228143921571-257237338.png)
图1 插件git、jacoco、maven
2 全局工具配置
返回
jenkins -> 系统管理 -> 全局工具配置
以便在window批处理中使用
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228144857699-729149792.png)
图2 jdk git maven全局配置
3 Jenkins创建JacocoIntegrateTestDemo项目
返回
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228145224202-1529136689.png)
图3 新建自由风格的软件项目
3.1 配置源码管理
Repository Url: [email protected]:Ming8006/jacocodemo.git
Credentials: ming
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228145908652-861346832.png)
图4 配置源码管理
上图4源码管理配置中,点击 立即构建 JacocoIntegrateTestDemo项目 时,会拉取 [email protected]:Ming8006/jacocodemo.git 到jenkins部署的机器目录下: D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo
在上图4中,源码管理的凭据是 ming ,凭据设置如下
Jenkins->凭据->系统->添加域
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228150030031-115662618.png)
图5 添加域e.coding.net
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228151123918-507267257.png)
图6 在域中添加ssh凭据
在上图6中,添加ssh的private key,jekins通过ssh 拉取代码 [email protected]:Ming8006/jacocodemo.git ,需在coding.net上添加公钥,如下图
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228152242495-475916290.png)
图7 电脑生成的公钥私钥
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228152525642-958811130.png)
图8 添加公钥到codenet个人账户
3.2 配置构建
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228153038331-1042418495.png)
图9 构建配置
在上图9中,做2步构建操作:
添加window批处理命令,在jenkins workspace目录项目JacocoIntegrateTestDemo下执行mun clean compile生成class文件
安装build.xml的配置获取覆盖率信息jacoco.exec
注意:在获取覆盖率信息前,先postman调用JacocoDemo程序的接口
build.xml如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
View Code
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228162548513-1070829055.png)
图 jenkins workspace下JacocoItegrateTestDemo目录结构
3.3 配置构建后操作
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228154612307-1940370616.png)
图10 构建后操作
如图10中,配置Jacoco Coverage Report
4 执行JacocoIntegrateTestDemo项目,查看代码覆盖率
返回
![](https://img2018.cnblogs.com/common/484791/202002/484791-20200228155155898-58461720.png)
图10 查看代码覆盖率
Jenkins控制台输出
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
在 master 上构建 在工作空间 D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo 中
using credential 904f882b-46cf-42d6-ae43-68639b1b1482
> D:\Program Files\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> D:\Program Files\Git\bin\git.exe config remote.origin.url [email protected]:Ming8006/jacocodemo.git # timeout=10
Fetching upstream changes from [email protected]:Ming8006/jacocodemo.git
> D:\Program Files\Git\bin\git.exe --version # timeout=10
using GIT_SSH to set credentials
> D:\Program Files\Git\bin\git.exe fetch --tags --force --progress -- [email protected]:Ming8006/jacocodemo.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> D:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
> D:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 06b9139dc9be810a86df0d093e2ab278ad765957 (refs/remotes/origin/master)
> D:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10
> D:\Program Files\Git\bin\git.exe checkout -f 06b9139dc9be810a86df0d093e2ab278ad765957 # timeout=10
Commit message: "build.xml"
> D:\Program Files\Git\bin\git.exe rev-list --no-walk 06b9139dc9be810a86df0d093e2ab278ad765957 # timeout=10
[JacocoIntegrateTestDemo] $ cmd /c call C:\Windows\TEMP\jenkins2606191743471144903.bat
D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo>d:
D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo>cd D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo
D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo>mvn clean compile
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.example:jacocodemo >-----------------------
[INFO] Building jacocodemo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ jacocodemo ---
[INFO] Deleting D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\target
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.3:prepare-agent (jacoco-initialize) @ jacocodemo ---
[INFO] argLine set to "-javaagent:D:\\software\\maven\\repo\\m2\\org\\jacoco\\org.jacoco.agent\\0.8.3\\org.jacoco.agent-0.8.3-runtime.jar=destfile=D:\\Program Files (x86)\\Jenkins\\workspace\\JacocoIntegrateTestDemo\\target\\coverage\\jacoco-unit.exec"
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ jacocodemo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ jacocodemo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\target\classes
[INFO] /D:/Program Files (x86)/Jenkins/workspace/JacocoIntegrateTestDemo/src/main/java/com/example/controller/MathController.java: D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\src\main\java\com\example\controller\MathController.java使用了未经检查或不安全的操作。
[INFO] /D:/Program Files (x86)/Jenkins/workspace/JacocoIntegrateTestDemo/src/main/java/com/example/controller/MathController.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.773 s
[INFO] Finished at: 2020-02-28T14:13:11+08:00
[INFO] ------------------------------------------------------------------------
[JacocoIntegrateTestDemo] $ cmd.exe /C "ant.bat -file build.xml dump && exit %%ERRORLEVEL%%"
Buildfile: D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\build.xml
dump:
[jacoco:dump] Connecting to /10.8.116.81:6300
[jacoco:dump] Dumping execution data to D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\target\jacoco.exec
BUILD SUCCESSFUL
Total time: 0 seconds
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] **/target/**.exec;**/target/classes;**/src/main/java; locations are configured
[JaCoCo plugin] Number of found exec files for pattern **/target/**.exec: 1
[JaCoCo plugin] Saving matched execfiles: D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\target\jacoco.exec
[JaCoCo plugin] Saving matched class directories for class-pattern: **/target/classes:
[JaCoCo plugin] - D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\target\classes 6 files
[JaCoCo plugin] Saving matched source directories for source-pattern: **/src/main/java:
[JaCoCo plugin] Source Inclusions: **/*.java,**/*.groovy,**/*.kt,**/*.kts
[JaCoCo plugin] Source Exclusions:
[JaCoCo plugin] - D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo\src\main\java 6 files
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: []
[JaCoCo plugin] exclusions: []
[JaCoCo plugin] Thresholds: JacocoHealthReportThresholds [minClass=0, maxClass=0, minMethod=0, maxMethod=0, minLine=0, maxLine=0, minBranch=0, maxBranch=0, minInstruction=0, maxInstruction=0, minComplexity=0, maxComplexity=0]
[JaCoCo plugin] Publishing the results..
[JaCoCo plugin] Loading packages..
[JaCoCo plugin] Done.
[JaCoCo plugin] Overall coverage: class: 100, method: 79, line: 72, branch: 63, instruction: 76, complexity: 71
Finished: SUCCESS
View Code
参考
[1] jenkins+jacoco+ant自动化代码和应用服务代码分离场景获取远程服务的覆盖率
[2] Jenkins + Jacoco 持续集成代码覆盖率
[3] Selenium Web 自动化 - 项目持续集成
、
|