我将我的工作从单个Hudson机器转移到多从属Jenkins环境,现在JaCoCo覆盖不再有效.
工作(旧):Hudson 2.0.1,Jenkins Sonar插件1.7.1,声纳2.1.2
BROKEN(新):Jenkins 1.446,Jenkins Sonar Plugin 1.7.2,Sonar 2.1.2
我的Hudson工作被称为Pinnacle,它曾经在同一台机器上使用Sonar在单个Hudson服务器上运行.我通过执行以下操作来设置我的(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
Run Code Online (Sandbox Code Playgroud)
(请注意,代码将签出到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
Run Code Online (Sandbox Code Playgroud)
该文件在构建运行的从站上不存在.(目录/ var/lib/jenkins/workspace/Pinnacle/Pinnacle 确实存在.)
所有其他传感器(FindBugs,PMD等)似乎正常工作.只是JaCoCo坏了.
Sonar/JaCoCo甚至可以在多从属Jenkins环境中工作吗?
我怀疑Ant任务test-with-coverage没有运行.Sonar如何找到build.xml?新老装置有什么不同?
我按照这里的说明
我不使用Maven.
我的Jenkins作业输出说:12:32:33.951 INFO传感器JaCoCoSensor ... 12:32:33.961 INFO项目覆盖率设置为0%,因为没有转储JaCoCo执行数据:/ var/lib/jenkins/workspace/SeqGen/SeqGen/jacoco.exec 12:32:35.152 INFO传感器JaCoCoSensor完成:1201 ms
这是我的属性:
project.home=SeqGen
sonar.projectKey=com.skyboximaging:seqgen
sonar.projectName="SeqGen"
sonar.projectVersion=1.0
sonar.dynamicAnalysis=true
sources=src/java
tests=test/java
binaries=classes
sonar.jacoco.reportPath=jacoco.exec
sonar.jacoco.antTargets=test-with-coverage
Run Code Online (Sandbox Code Playgroud)
在Sonar服务器上,我将常规设置>代码覆盖率>代码覆盖率插件设置为jacoco
我对http://docs.codehaus.org/display/SONAR/Code+coverage+plugins上的文档感到非常困惑. 我对这句话感到特别困惑:"在声纳分析过程中,Sonar Jacoco插件将注意附加Jacoco代理JVM并启动单元测试."
据我所知,我的Ant目标没有被调用.Sonar Jacoco插件如何知道在哪里找到我的build.xml?
我究竟做错了什么?