Невозможно импортировать созданный извне отчет it-jacoco.exec в сонар
Мне удалось запустить мой многомодульный экземпляр приложения, расположенный на другом сервере, чем мой сервер сборки jenkins, со следующей опцией JVM: "-javaagent:${MAIN_DIR}/lib/jacocoagent.jar==destfile=/jacoco.exec,output=tcpserver,address=*"
В моей сборке Jenkins Pre шаги выполняются следующим образом: Задача ant, которая вызывает target jacocoReport. Файл build.xml, который я использую для этой цели, имеет следующий код;
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="/opt/hudson/tools/jacocoant.jar"/>
</taskdef>
<target name="jacocoReport">
<jacoco:dump address="${jacoco.host}" port="${jacoco.port}" dump="true" reset="true" destfile="${jacocoReportFile}" append="false"/>
</target>
<target name="jacocoReset">
<jacoco:dump address="${jacoco.host}" port="${jacoco.port}" reset="true" destfile="${jacocoReportFile}" append="false"/>
<delete file="${jacocoReportFile}"/>
</target>
И, наконец, у меня есть шаг сборки maven, который вызывает sonar:sonar
Вот раздел в POM относительно моего отчета об интеграции;
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.itReportPath>${WORKSPACE}/it-jacoco.exec</sonar.jacoco.itReportPath>
<sonar.language>java</sonar.language>
<sonar.branch>9.9.5</sonar.branch>
и вот моя конфигурация плагина:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<append>true</append>
</configuration>
<executions>
<execution>
<id>pre-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>post-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
<goal>report-integration</goal>
</goals>
</execution>
</executions>
</plugin>
Когда сборка заканчивается, моя запись Sonar все еще показывает 0% для моих интеграционных тестов. Но когда я беру тот же отчет it-jacoco.exec и импортирую его, используя сеанс импорта покрытия Eclipse Jacoco, я получаю 26% покрытия.
Наконец, когда я просматриваю свои журналы сборки Jenkins, я вижу следующее;
Sensor JaCoCoItSensor...
Analysing /var/lib/jenkins/workspace/XXXXXX/it-jacoco.exec
No information about coverage per test.
Sensor JaCoCoItSensor done: 34 ms
Сейчас у меня нет автоматических интеграционных тестов, я только хочу импортировать отчет об интеграции со своего внешнего тестового компьютера.