Clover アドオンの有効化
このページでは、Bamboo のジョブ用にアトラシアンの Clover アドオンを有効にして設定する方法について説明します。
Bamboo を Clover と統合すると、次のことが可能になります。
- 各ビルド結果のコード カバレッジの詳細 (つまり、テストでカバーされたコードの割合) を表示する
- ジョブの一定期間におけるコード カバレッジの傾向を表示する
- ジョブのコード カバレッジの要約を表示する
Bamboo Clover プラグインは Bamboo Cloud にバンドルされており、Clover Cloud の使用がサポートされています。
このページの内容
Clover アドオンを有効にする
- 「ジョブの設定」の説明に従って、目的のジョブに移動します。
- [Actions (アクション)] > [Configure Job (ジョブを設定)] の順に選択します。
- [Miscellaneous (その他)] タブをクリックします。
[Use Clover to collect Code Coverage for this build (Clover を使用してこのビルドのコード カバレッジを収集する)] を選択して、次の設定を指定します。
| 設定 | 説明 |
|---|---|
| このビルドに Clover を自動的に統合する | 管理パネル ([Administration (管理)] > [Plugins (プラグイン)] > [Clover Plugin (Clover プラグイン)]) でグローバルに設定していない限り、Clover ライセンス (評価ライセンスが入手可能) を指定する必要があります。 |
| 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 レポート ファイルの参照場所を指定します。プランのルート ディレクトリを基準とした相対ファイル パスを指定してください (例:
|
スクリーンショット: ジョブに対して Clover を有効にするための設定
Clover の自動統合
自動統合は、Ant、Maven 2.x、Maven 3.x、および Grails タスクと連携します。
- Clover コード カバレッジ設定で、[Use Clover to collect Code Coverage for this build (Clover を使用してこのビルドのコード カバレッジを収集する)] を選択します。
- [Automatically integrate Clover into this build (このビルドに Clover を自動的に統合する)] を選択します。
- Clover のグローバル ライセンス キーを入力するか ([Administration (管理)] > [Plugins (プラグイン)] > [Clover Plugin (Clover プラグイン)] に移動)、[Use plan-defined Clover license key (プランに定義された Clover ライセンス キーを使用する)] を有効にして、表示されるテキスト フィールドにキーを貼り付けます。
さらに、次のことが可能です。
- [Generate a Clover Historical Report (Clover 履歴レポートを生成する)] を選択して、現在のカバレッジ結果を以前の Clover コード カバレッジ レポートと比較します。
- [Generate a JSON report (JSON レポートを生成する)] を選択して、アプリまたは外部レポート ビューに組み込める形式で Clover 結果を取得します。
Clover の手動統合
Clover の手動統合は、Clover の呼び出しが可能なあらゆる種類のタスク (Ant、Maven 2.x、Maven 3.x、Command、Grails) と連携します。
- Clover コード カバレッジ設定で、[Use Clover to collect Code Coverage for this build (Clover を使用してこのビルドのコード カバレッジを収集する)] を選択します。
- [Clover is already integrated into this build (Clover はこのビルドに統合済み)] を選択します。
- 参照場所を指定します。 Clover によって生成された XML レポート ファイルはここで Bamboo によって参照されます。
[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 ライセンスを渡します。
- Clover ライセンス キーをファイル (/opt/bamboo/clover.license など) に保存します。
- 次の方法で、ライセンス キーの場所をビルド タスクに渡します。
- ビルド スクリプトで場所を定義する
- 計画設定の Ant/Maven タスクの Java プロパティとして渡す
例: 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 の結果を参照する
Clover HTML レポートとジョブに関する Clover 統計: 「計画の Clover コード カバレッジの表示」をご確認ください。
計画の Clover コード カバレッジの要約:「ビルドの Clover コード カバレッジの表示」をご確認ください。
複数の計画にわたる Clover コード カバレッジの統計:「複数の計画にわたるレポートの生成」をご確認ください。
Clover が動作するマシンを制限する
- Clover でビルドを実行する EC2 イメージごとに、イメージの設定に「clover=true」などの機能を追加します。
これを行うには、[管理] > [Elastic Bamboo] > [設定] に移動します。エラスティック イメージを選択して、[Add Capability (機能を追加)] をクリックします。 - 「clover=true」などの一致要件を各ジョブの設定に追加します。
これを行うには、[アクション] > [プランを構成] > [ジョブ] の順に移動します。Clover を実行するジョブを選択して、[要件] をクリックし、次に [Add Extra Requirement (要件を追加)] をクリックします。
トラブルシューティング
自動または手動の Clover 統合と生成されたプロセス
通常は、自動 Clover 統合を使用するか、maven-clover2-plugin に依存関係を手動で追加するだけで十分です。
ただし、ビルドが別の JVM プロセスを生成する場合 (例: フォークされた JVM で実行されるユニット テスト、その場でインスタンス化されたコンテナーでのテスト、別のサーバーにデプロイされたコードの呼び出しテスト)、その生成されたプロセスの依存関係を Clover JAR に手動で追加する必要があります。
ナレッジ ベース記事の「NoClassDefFoundError com_atlassian_clover/CoverageRecorder」をご確認ください。
自動 Clover 統合とサブディレクトリでの構築
サブディレクトリでビルドを実行して (たとえば Maven タスクの構成で "作業サブディレクトリ" フィールドを設定して)、自動 Clover 統合がある場合、"Clover レポート (システム)" アーティファクトのロケーションを修正しなければならない場合があります。修正しないと、自動 Clover 統合で既定のパス (たとえば Maven との統合の場合は "target/site/clover") が使用されるため、HTML レポートが空になる可能性があります。
自動 Clover 統合とマルチモジュール Maven プロジェクト
モジュール間に依存関係があるマルチモジュール Maven プロジェクトを持ち、自動 Clover 統合を使用している場合、Clover がまだ有効になっていなかったビルド フェーズで、依存アーティファクトのインストゥルメント化された JAR がテスト実行に利用されることがあります。詳細は BAM-13208 をご確認ください。このような場合は次をお勧めします。
- 自動 Clover 統合が有効になっている別のジョブを作成します。
- このジョブに何もしない Maven タスクを作成します ("クリーン" ゴールと呼ぶなど)。
- Bamboo は Clover に関連するゴールを自動的に追加します (clover2:setup verify clover2:aggregate clover2:clover)。