Я перенес свою работу с одной машины Hudson на многоведомую среду Jenkins, и теперь покрытие JaCoCo больше не работает.
РАБОТАЕТ (старая версия): Hudson 2.0.1, Jenkins Sonar Plugin 1.7.1, Sonar 2.1.2
BROKEN (новые): Jenkins 1.446, Jenkins Sonar Plugin 1.7.2, Sonar 2.1.2
Моя работа в Hudson называется Pinnacle, и раньше она выполнялась на одном сервере Hudson с Sonar на той же машине. Я настроил свою сборку (NO MAVEN), сделав следующее.
1) Добавил Ant-цель в build.xml под названием test-with-coverage
2) Настроил задание Pinnacle в Hudson на "вызов отдельного анализа Sonar" с такими свойствами:
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
(Обратите внимание, что код проверяется в каталоге Pinnacle в рабочем пространстве задания Jenkins.)
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/Pinnacle существует.)
Все остальные датчики (FindBugs, PMD и т.д.) работают нормально. Только JaCoCo сломан.
Работает ли Sonar/JaCoCo вообще в многоведомой среде Jenkins?
Я подозреваю, что задача Ant test-with-coverage
не выполняется. Как Sonar находит build.xml? И чем отличаются старые и новые установки?