[Bamboo Knowledge Base]
This page contains instructions for how to enable and configure Atlassian's Clover add-on for a job in Bamboo.
Bamboo を Clover と統合すると、次のことが可能になります。
On this page:
[Use Clover to collect Code Coverage for this build (Clover を使用してこのビルドのコード カバレッジを収集する)] を選択して、次の設定を指定します。
設定 | 説明 |
---|---|
このビルドに Clover を自動的に統合する | You will need to provide a Clover license (evaluation licenses are available), unless this has been configured globally in the Administration panel (Administration > Plugins > Clover Plugin). |
Generate a Clover Historical Report (Clover 履歴レポートを生成する) | 現在のカバレッジ結果を以前の Clover コード カバレッジ レポートと比較して表示します。 |
Generate a JSON report (JSON レポートを生成する) | アプリまたは外部レポート ビューに組み込める形式で Clover 結果を提供します。 |
Use plan-defined Clover license key (プランに定義された Clover ライセンス キーを使用する) | 該当する特定のプランに対してグローバル Clover ライセンスをオーバーライドします。 |
Clover is already integrated into this build (Clover はこのビルドに統合済み) | すでにレポートを生成するように Clover-for-Ant または Clover-for-Maven を設定している場合にこのオプションを使用します。 |
Clover XML Location (Clover XML の場所) | Bamboo における Clover の XML レポート ファイルの参照場所を指定します。プランのルート ディレクトリを基準とした相対ファイル パスを指定してください (例: target/site/clover/clover.xml |
スクリーンショット: ジョブに対して Clover を有効にするための設定
自動統合は、Ant、Maven 2.x、Maven 3.x、および Grails タスクと連携します。
さらに、次のことが可能です。
Manual Clover integration works with any kind of task in which Clover can be called (Ant, Maven 2.x, Maven 3.x, Command, Grails):
[Artifacts (アーティファクト)] タブで、[Create Definition (定義を作成)] をクリックし、次のようにフォームに入力します。
名前 | "Clover Report" から始める必要があります。 |
場所 | HTML レポートのディレクトリを指す必要があります (例: target/site/clover)。 |
コピー パターン | **/*.* を使用します。 |
ビルド スクリプトで Clover を設定して、XML と HTML の両方のレポートが生成されるようにします。
Ant:
<clover-report initstring="target/clover/database/clover.db"> <current outfile="target/site/clover/clover.xml" /> <current outfile="target/site/clover"> <format type="html"/> </current> </clover-report>
Maven:
<plugin> <groupId>com.atlassian.maven.plugins</groupId> <artifactId>maven-clover2-plugin</artifactId> <configuration> <generateHtml>true</generateHtml> <generateXml>true</generateXml> </configuration> </plugin>
ビルド スクリプトで Clover ライセンスを設定するか、ジョブ設定の適切なタスク パラメーターとして Clover ライセンスを渡します。
例: pom.xml でライセンスの場所を宣言 (Maven)
<plugin> <groupId>com.atlassian.maven.plugins</groupId> <artifactId>maven-clover2-plugin</artifactId> <version>3.1.8</version> <configuration> <licenseLocation>/opt/bamboo/clover.license</licenseLocation> <generateXml>true</generateXml> <generateHtml>true</generateHtml> </configuration> </plugin>
例: build.xml でライセンスの場所を宣言 (Ant)
<project> <property name="clover.license.path" location="/opt/bamboo/clover.license"/> <!-- ... --> </project>
例: Ant タスクのライセンスの場所を渡す
clean with.clover test clover.report -Dclover.license.path=/opt/bamboo/clover.license
例: Maven タスクのライセンスの場所を渡す
mvn clean clover2:setup verify clover2:aggregate clover2:clover -Dmaven.clover.licenseLocation=/opt/bamboo/clover.license
ビルドのたびに、Bamboo は Clover XML ファイルを解析して、計画要約の統計とチャートを生成します。計画要約ページとジョブ要約ページに [Clover] タブが表示されます。
Clover HTML report and Clover statistics for a job: see Viewing the Clover code-coverage for a plan.
Clover code coverage summary for a plan: see Viewing the Clover code-coverage for a build.
Clover code coverage statistics across multiple plans: see Generating reports across multiple plans.
通常は、自動 Clover 統合を使用するか、maven-clover2-plugin に依存関係を手動で追加するだけで十分です。
ただし、ビルドが別の JVM プロセスを生成する場合 (例: フォークされた JVM で実行されるユニット テスト、その場でインスタンス化されたコンテナーでのテスト、別のサーバーにデプロイされたコードの呼び出しテスト)、その生成されたプロセスの依存関係を Clover JAR に手動で追加する必要があります。
See NoClassDefFoundError com_atlassian_clover/CoverageRecorder KB article.
In case you perform a build in a subdirectory (for instance, in the Maven Task configuration you have the "Working sub directory" field set) and you have automatic Clover integration, you may need to correct the Location in the "Clover Report (System)" artifact. Otherwise, an HTML report may be empty as automatic Clover integration uses the default path (for instance, the "target/site/clover" in case of integration with Maven). This bug has been fixed in Bamboo 5.7.
If you have a multi-module Maven project with dependencies between modules and use Automatic Clover integration, it can happen that an instrumented JAR of the dependent artifact will be taken for test execution in a build phase where Clover was not enabled yet. See BAM-13208 for more details. In such case, we recommend the following: