AWS CodeBuild テストレポートの一般公開が開始

AWS CodeBuildテストレポートが本番環境用に一般公開となりました。

ビルド中に実行されるテストに関する詳細を含むレポートをCodeBuildで作成できるようになります。

  • 単体テスト
  • 構成テスト
  • 機能テスト

などのテストを作成できます。ファイル形式はJUnit XMLまたはCucumber JSONです。

メリット

テストレポートを利用することで以下のことが可能になります。

  • 失敗したテストの検証
    CodeBuild で実行したテストの詳細や、過去の傾向、集約したメトリクスを表示できます。

  • ビルド実行中の問題のトラブルシューティング
    複数のビルドからのテストレポートがある場合、傾向とテストおよび失敗率を表示し、ビルドの最適化に役立てることができます。

利用方法

単体テストのレポートを保存して表示するには、buildspec.ymlファイルにreportsという新しいシーケンス構成を追加します。
CodeBuildは、この名前で新しいレポートグループを作成するか、既にレポートグループが存在する場合はそれを使用します。

以下のサンプルbuildspec.ymlファイルは、Surefireを使用してJUnitテストからテストレポートを生成し、 -SurefireReportsという名前のレポートグループに保存します。

version: 0.2

env:
  variables:
    JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
phases:
  install:
    runtime-versions:
      java: corretto8
  build:
    commands:
      - echo Build started on `date`
      - mvn surefire-report:report       #単体テストを実行しレポートを生成
reports: #New
  SurefireReports:                       #「SurefireReports」というレポートグループの作成
    files:                               #すべてのファイルを保存
      - '**/*'
    base-directory: 'target/surefire-reports' #レポートの場所

ユニットテストは、buildspec.ymlファイルのbuildまたはpost_buildシーケンスで指定できます。

CodeBuildがテストレポートを作成するには、追加のAWS Identity and Access Management(IAM)権限が必要です。アクセス許可はCodeBuildで使用される事前定義されたAWS管理ポリシーにすでに含まれています。既存のCodeBuildプロジェクトに権限を追加するにはポリシーを変更する必要があります。
以下はアクセス許可を追加するIAMポリシーです。

{

    "Statement": [
        {
            "Resource": "arn:aws:codebuild:your-region:your-aws-account-id:report-group/my-project-*", 
            "Effect": "Allow",
            "Action": [
                "codebuild:CreateReportGroup",
                "codebuild:CreateReport",
                "codebuild:UpdateReport",
                "codebuild:BatchPutTestCases"
            ]
        }
    ]
}

テストが実行開始されると、レポートと共にレポートグループのトレンドとメトリックが表示されます。
レポートには合格率、平均レポート期間、それぞれのテストにかかった時間も表示されます。

集計とは別に、各レポートによって個別にキャプチャされたメトリックを確認できます。
レポートごとに、個々の単体テストの内訳、テストのステータス、期間、テストメッセージを確認できます。

CodeBuildによって作成されたテストレポートは30日間保存されます。期限切れのテストレポートは表示できません。
30日以上保存する場合は、レポートをAmazon S3バケットに保存します。

参考
Working with test reporting in AWS CodeBuild

Test Reports with AWS CodeBuild