我将工作从单台 Hudson 机器转移到多从机 Jenkins 环境,现在 JaCoCo 覆盖不再有效。
工作(旧):哈德逊 2.0.1,詹金斯声纳插件 1.7.1,声纳 2.1.2
已损坏(新):Jenkins 1.446、Jenkins Sonar 插件 1.7.2、Sonar 2.1.2
我的 Hudson 工作称为 Pinnacle,它曾经在一台 Hudson 服务器上与 Sonar 在同一台机器上运行。我通过执行以下操作设置了我的(NO 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) 配置声纳“常规设置”以使用 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/Pinnacle确实存在。)
所有其他传感器(FindBugs、PMD 等)似乎工作正常。只是 JaCoCo 坏了。
Sonar/JaCoCo 甚至可以在多从属 Jenkins 环境中工作吗?
我怀疑 Ant 任务test-with-coverage
没有运行。Sonar 如何定位 build.xml?新旧安装有什么不同?