我将工作从单个 Hudson 机器转移到了多从机 Jenkins 环境,现在 JaCoCo 覆盖范围不再起作用。
工作(旧):
哈德森2.0.1,
詹金斯声纳插件 1.7.1,
声纳2.1.2
破损(新):
詹金斯 1.446,
詹金斯声纳插件 1.7.2,
声纳2.1.2
我的 Hudson 作业称为 Pinnacle,它过去在单个 Hudson 服务器上运行,Sonar 在同一台机器上运行。我通过执行以下操作来设置我的(非 MAVEN)构建。
1) 在我的 build.xml 中添加了一个 Ant 目标,名为test-with-coverage
2) 将 Hudson 中的 Pinnacle 作业配置为具有以下属性的“调用独立声纳分析”:
sonar.projectKey=com.skyboximaging:pinnacle
sonar.projectName="Pinnacle"
sonar.projectVersion=1.0
sources=Pinnacle/src/java
tests=Pinnacle/test/java
binaries=Pinnacle/classes
sonar.jacoco.reportPath=Pinnacle/jacoco.exec
sonar.jacoco.antTargets=test-with-coverage
(请注意,代码已检出到 Jenkins 作业工作区的 Pinnacle 目录中。)
3)配置Sonar“常规设置”以使用JaCoCo进行代码覆盖
一切都很顺利!
但在新的 Jenkins 环境中,我在 Jenkins 构建输出中看到此错误:
23:15:17.863 INFO Sensor JaCoCoSensor...
23:15:17.868 INFO Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/workspace/Pinnacle/Pinnacle/jacoco.exec
该文件在运行构建的从属设备上不存在。 (目录 /var/lib/jenkins/workspace/Pinnacle/Pinnacledoes exist.)
所有其他传感器(FindBugs、PMD 等)似乎都工作正常。只是JaCoCo坏了。
Sonar/JaCoCo 甚至可以在多从机 Jenkins 环境中工作吗?
我怀疑 Ant 任务test-with-coverage
没有运行。 Sonar如何定位build.xml?新旧安装有什么不同?