Jenkins
Jacoco
Ant
- 针对 Jacoco
+
Jenkins+
SonarQube&
SonarQube Scanner 分为四个部分写的,建议阅读的顺序为:- Jacoco Code Coverage
- Jenkins + Jacoco 持续集成代码覆盖率 ⇦
- SonarQube & SonarQube Scanner
- Jenkins + SonarQube & SonarQube Scanner
* 特别提醒:
看这篇文章之前,一定要保证你已经看过
Jacoco Code coverage 这篇文章了,要不然不好顺利的进行下去
- 第一步:打开
Jenkins
→系统管理
→管理插件
→可选插件
→安装
JaCoCo plugin
见下图👇
- 第二步:选择
Pre Steps
orPost Steps
→Add step
→Execute shell
中增加命令ant dump -buildfile [yourpath/]build.xml
ant dump
Tip:
1. (需特别注意)确保 [Jacoco Code coverage] 这篇文章中的 build.xml 已经上传至 Jenkins 打包服务器(建议放在 `Git` 仓库中,然后在 JOB 配置 `源码管理` 中增加这个 `Git` 地址)
2. 执行 `ant` 的确保 Jenkins 打包服务器已经安装 ant
3. 确认是否已经设置 `ant` 环境变量,如果未位置直接就写 `ant` 全路径,如:`/usr/lib/apache-ant-1.9.7/bin/ant dump -buildfile [yourpath/]build.xml`
- 第三步:进入 JOB,选择
配置
→构建后操作
→增加构建后操作
→选择 Record Jacoco coverage report
,见下图👇
-
第四步:配置报告的相关参数(我的选择都是默认的),见下图👇
Jacoco coverage report parameter config
接下来就是构建 JOB,等待结果,如果成功的话,就会见到下图👇
Code Coverage Trend Detailed ReportFrequently Asked Questions:
- 针对图上的每个字段 Jacoco Code coverage 在这篇文章中已经说明
- 图中
M:xxx C:xxx
,M
的意思表示:Missed;C
的意思表示:Covered
网友评论
1. 你在 Tomcat 中配置好了 jacocoagent,并保证服务正常;
2. 生成集成测试覆盖率报告,需保证三个东西存在:源码、classes、exec 文件。
你说的那三步只不过是在我写的简书中的顺序,其实你完全可以在 Jenkins 上单独拉一个 Job 去做生成报告这件事,不知道这样是否回答了你的问题呢
java.lang.IllegalStateException: basedir classes does not exist。我的版本号是3.0.1
请问下,第四步中的几个路径,是相对路径吗?如果想要绝对路径,格式是怎样的呢?
例如我exec文件的路径是 /tmp/jacocotest/report.exec,我尝试了
**/tmp/jacocotest/**.exec 取到exec文件数为0
/tmp/jacocotest/**.exec 直接报错
tmp/jacocotest/**.exec 取到exec文件数为0
**/jacocotest/**.exec 取到exec文件数为0
全部都不行,后面两个路径也是。求大神指教
/var/lib/jenkins/workspace/jacocotest/tmp/jacocotest/report.exec
报错信息:
ERROR: Step ‘Record JaCoCo coverage report’ aborted due to exception:
java.io.IOException: Expecting Ant GLOB pattern, but saw '/var/lib/jenkins/workspace/jacocotest/tmp/jacocotest/report.exec'. See http://ant.apache.org/manual/Types/fileset.html for syntax
研究了下,这里的填写路径是相对于workspace的,我把exec文件放到workspace 这个工程的路径下,填**.exec 就可以读到。
但写原文件的相对路径 ../../../../../tmp/jacocotest/**.exec 就读不到。忧桑。。
所以目前暂时用html report插件来直接展示report了。