"Projekt-Berichterstattung auf 0% eingestellt ist" – JaCoCo-und Sonar in Jenkins mit Ant
Zog ich meinen job aus einem einzigen Hudson-Rechner zu einem multi-slave-Jenkins-Umgebung, und jetzt JaCoCo Berichterstattung nicht mehr funktioniert.
ARBEITEN (alt):
Hudson 2.0.1,
Jenkins-Sonar-Plugin-1.7.1,
Sonar 2.1.2
GEBROCHEN (neu):
Jenkins 1.446,
Jenkins-Sonar-Plugin 1.7.2,
Sonar 2.1.2
Meine Hudson job nennt sich Pinnacle und es verwendet, um die Ausführung auf einem Hudson-server mit Sonar auf der gleichen Maschine. Ich meine (OHNE MAVEN) erstellen, indem Sie Folgendes tun.
1) Hinzugefügt, das Ant-target zu meinem build.xml genannt test-with-coverage
2) Konfiguriert die Pinnacle-job in Hudson zu "invoke standalone-Sonar-Analyse" mit diesen Eigenschaften:
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
(Beachten Sie, dass der code ausgecheckt ist in Pinnacle-Verzeichnis in den Jenkins-job-Arbeitsbereich befindet.)
3) Konfiguriert Sonar "Allgemeine Einstellungen", um JaCoCo zur Testabdeckung
Alles hat wunderbar funktioniert!
Aber in der neuen Jenkins-Umgebung, sehe ich diesen Fehler im Jenkins build output:
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
Diese Datei existiert nicht auf dem slave, wo der build lief. (Das Verzeichnis /var/lib/jenkins/workspace/Pinnacle/Pinnacle hat vorhanden.)
Alle anderen sensoren (FindBugs, PMD, etc.) scheinen OK zu arbeiten. Nur JaCoCo ist gebrochen.
Tut Sonar/JaCoCo auch die Arbeit in einem multi-slave-Jenkins-Umgebung?
Ich vermute, dass die Ant-task test-with-coverage
ist nicht immer laufen. Wie funktioniert Sonar suchen Sie die build.xml? Und was ist der Unterschied zwischen alten und neuen Anlagen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe mir vor kurzem setup und erfolgreich habe Sonar und Jacoco zusammen läuft. Da bin ich kürzlich mit dem Thema, ich dachte, ich würde check auf stackoverflow, die für ähnliche Fragen und helfen. Ich bin erste Ergebnisse aus Jacoco, aber Sie gefunden hatte, der explizit die folgenden Parameter zusätzlich zu den Eigenschaften, die Sie aufgeführt haben, in Ihrem Beitrag:
Müssen Sie sonar.core.codeCoveragePlugin=jacoco, wenn Sie wollen, um der Lage sein, die sonar.jacoco.reportPath property. Andernfalls müssen Sie das sonar.jacoco.itReportPath Eigenschaft. Ich empfehle allerdings nur die Einstellung der codeCoveragePlugin und reportPath Eigenschaften. Ansonsten, es wird nicht angezeigt unter der Voreinstellung Abdeckung widget in sonar. Bitte beachten Sie, dass Sie nicht verwenden die Standard-coverage-tool und jacoco zusammen. Es muss ein oder der andere sein. Ich habe mich entschieden, Jacoco.
Ihre ant-target konfiguriert werden müssen, generieren die jacoco.exec Ergebnisse vor der Ausführung des sonar Aufgaben:
Sicher sein, zu sagen sonar, wiederverwenden, Berichte und jede sunfire Berichte wenn Sie mit junit, bevor sonar das ist, wenn Sie mit junit außerhalb der sonar:
Gleich aus welchem Grund, wenn Sie mehr brauchen ausführliches Debuggen, verwenden Sie die folgende-Eigenschaft:
sonar.verbose=true