This is the documentation for Bamboo 5.7. View this page for the

Unknown macro: {spacejump}

of Bamboo, or visit the latest Bamboo documentation.

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:

 

Clover アドオンを有効にする

  1. Navigate to the desired job, as described on Configuring jobs.
  2. [Actions (アクション)] > [Configure Job (ジョブを設定)] の順に選択します。
  3. [Miscellaneous (その他)] タブをクリックします。
  4. [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 レポート ファイルの参照場所を指定します。プランのルート ディレクトリを基準とした相対ファイル パスを指定してください (例: /home/bamboouser/bamboo-home/xml-data/build-dir/MY_PLAN/)。絶対パスは指定しないでください。

 target/site/clover/clover.xml 

スクリーンショット: ジョブに対して Clover を有効にするための設定


Clover の自動統合

自動統合は、Ant、Maven 2.x、Maven 3.x、および Grails タスクと連携します。

  1. Clover コード カバレッジ設定で、[Use Clover to collect Code Coverage for this build (Clover を使用してこのビルドのコード カバレッジを収集する)] を選択します。
  2. [Automatically integrate Clover into this build (このビルドに Clover を自動的に統合する)] を選択します。
  3. 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 結果を取得します

 

When automatic Clover integration is enabled, Bamboo will initially:

  • Create an artifact named Clover Report (System), which will be visible on the 'Artifacts' tab for the job.

そして、各ビルドの実行時に次のことが行われます。

  • Extract the Clover licence (either the global or plan license key) into a temporary file and pass it to:
    • an Ant task as -Dclover.license.path=/<bamboo-home>/xml-data/build-dir/<your-job>/.clover/clover.license
    • a Maven task as -Dmaven.clover.licenseLocation=/<bamboo-home>/xml-data/build-dir/<your-job>/.clover/clover.license
  • 以下を追加してタスクを強化します。
    • Ant ターゲット
    • Maven goals like "clover2:setup verify clover2:aggregate clover2:clover"
  • Clover XML レポートと HTML レポートを生成します (既定)。
  • プラン要約の統計とグラフを生成します。

 

Clover の手動統合

Manual Clover integration works with any kind of task in which Clover can be called (Ant, Maven 2.x, Maven 3.x, Command, Grails):

  1. Clover コード カバレッジ設定で、[Use Clover to collect Code Coverage for this build (Clover を使用してこのビルドのコード カバレッジを収集する)] を選択します。
  2. [Clover is already integrated into this build (Clover はこのビルドに統合済み)] を選択します。
  3. 参照場所を指定します。  Clover によって生成された XML レポート ファイルはここで Bamboo によって参照されます。
  4. [Artifacts (アーティファクト)] タブで、[Create Definition (定義を作成)] をクリックし、次のようにフォームに入力します。

    名前"Clover Report" から始める必要があります。
    場所HTML レポートのディレクトリを指す必要があります (例: target/site/clover)。
    コピー パターン**/*.* を使用します。

  5. ビルド スクリプトで 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>
  6. ビルド スクリプトで Clover ライセンスを設定するか、ジョブ設定の適切なタスク パラメーターとして Clover ライセンスを渡します。

    1. Clover ライセンス キーをファイル (/opt/bamboo/clover.license など) に保存します。
    2. 次の方法で、ライセンス キーの場所をビルド タスクに渡します。
      • ビルド スクリプトで場所を定義する
      • 計画設定の 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 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 が動作するマシンを制限する

Clover がライセンスされているマシンの数よりも多くのリモート エージェントがある場合は、次の機能を使用して Clover が動作するマシンを制限できます。
  1. Clover でビルドを実行する EC2 イメージごとに、イメージの設定に「clover=true」などの機能を追加します。
    これを行うには、[管理] > [Elastic Bamboo] > [設定] に移動します。エラスティック イメージを選択して、[Add Capability (機能を追加)] をクリックします。
  2. 「clover=true」などの一致要件を各ジョブの設定に追加します。
    これを行うには、[アクション] > [プランを構成] > [ジョブ] の順に移動します。Clover を実行するジョブを選択して、[要件] をクリックし、次に [Add Extra Requirement (要件を追加)] をクリックします。

トラブルシューティング

自動または手動の Clover 統合と生成されたプロセス

通常は、自動 Clover 統合を使用するか、maven-clover2-plugin に依存関係を手動で追加するだけで十分です。

ただし、ビルドが別の JVM プロセスを生成する場合 (例: フォークされた JVM で実行されるユニット テスト、その場でインスタンス化されたコンテナーでのテスト、別のサーバーにデプロイされたコードの呼び出しテスト)、その生成されたプロセスの依存関係を Clover JAR に手動で追加する必要があります。

See NoClassDefFoundError com_atlassian_clover/CoverageRecorder KB article.

自動 Clover 統合とサブディレクトリでの構築

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.

自動 Clover 統合とマルチモジュール Maven プロジェクト

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:

  • 自動 Clover 統合が有効になっている別のジョブを作成します。
  • このジョブに何もしない Maven タスクを作成します ("クリーン" ゴールと呼ぶなど)。
  • Bamboo は Clover に関連するゴールを自動的に追加します (clover2:setup verify clover2:aggregate clover2:clover)。