ジョブを 1 台の Hudson マシンから複数スレーブの Jenkins 環境に移動したところ、JaCoCo のカバレッジが機能しなくなりました。
WORKING(旧):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 と呼ばれ、同じマシン上の 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
(コードは、Jenkins ジョブ ワークスペースの Pinnacle ディレクトリにチェックアウトされていることに注意してください。)
3)コードカバレッジにJaCoCoを使用するようにSonarの「一般設定」を構成しました
すべてが美しく機能しました!
しかし、新しい 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 環境でも動作しますか?
test-with-coverage
Ant タスクが実行されていないと思われます。Sonar はどのように build.xml を見つけますか? また、古いインストールと新しいインストールの違いは何ですか?