前回 SpringBoot プロジェクトで JUnit のテストを行ってみました。
せっかくなので、テスト結果をAWSに保存するところまで試してみましょう。
流れとしては、
- GitHub に push
- その内容を CodeBuild でビルドとテストを実施
- テストフェーズで作成されたテスト結果を AWS に保存して参照する
といった方法で利用する想定です。
TL;DR
- buildspec.yml にテスト結果の xml をレポートとして保存する設定を追加
- CodeBuild のレポートグループから確認する
目次
1.CodeBuild でビルドプロジェクトを作成
2.buildspec.ymlの設定を追加
3.ビルド、テストを実行して結果の確認
では早速始めましょう。
#1. CodeBuild でビルドプロジェクトを作成
ビルドを行うためのビルドプロジェクトを作成しましょう。
- CodeBuild を検索
- 左メニューの
ビルド
>ビルドプロジェクト
>ビルドプロジェクトを作成する
- 以下のパラメータを入力して
ビルドプロジェクトを作成する
key | val |
---|---|
プロジェクト名 | 任意の名前を入力 (例:testsample ) |
説明 | 任意の説明を入力 |
ビルドバッジを有効にする | false |
ソースプロバイダ | GitHub |
リポジトリ | パブリックリポジトリ |
GitHub リポジトリ | GitHub repository の url を入力 |
環境イメージ | マネージド型イメージ |
オペレーティングシステム | Amazon Linux 2 |
ランタイム | Standard |
イメージ | aws/codebuild/amazonlinux2-x86_64-standard:3.0 |
イメージのバージョン | 最新のバージョンを選択する |
環境タイプ | Linux |
サービスロール | 新しいサービスロール |
ロール名 | 任意のロール名を入力 (例: testsample-role ) |
ビルド仕様 | buildspec ファイルを使用する |
Buildspec 名 | |
バッチ設定を定義 | false |
アーティファクト タイプ | アーティファクトなし |
CloudWatch Logs | true |
#2. buildspec.yml の設定を追加
buildspec.yml にレポート結果の設定を追加する。
SpringBootプロジェクトのルートに buildspec.yml を追加する。
version: 0.2
phases:
build:
commands:
- echo start build at `date`
- ./gradlew test
- ls -la build/test-results/test
reports:
test-report:
files:
- '*'
base-directory: build/test-results/test
discard-paths: no
定義した内容は、
phases.build.commands
ビルド時に実行するコマンドを定義する。 ./gradlew test
でテストを実行する。
reports
テストレポートの出力に関する設定
test-report
任意のレポート名を設定する。テスト結果を保存するレポートグループの名前になる。
作られるレポートグループは <ビルドプロジェクト名>-<レポート名>
になる。
files, base-directory
レポート結果のファイルを指定する。base-directory からの相対パスを設定する。
discard-paths
filesで指定したファイルの階層構造を保持する、しないを設定する。
no
に設定すると
./build/test-results/test/TEST-com.sample.testsample.UserServiceTests.xml
が
./TEST-com.sample.testsample.UserServiceTests.xml
として保存される。
#3. ビルド、テストを実行して結果の確認
設定が追加できたら実際に実行してみましょう。
- CodeBuild を検索
- 左メニューの
ビルド
>ビルドプロジェクト
> 先ほど作成したプロジェクトを選択 - ビルドを開始
- ビルドが終わるまでしばし待つ (テストに失敗するケースが含まれるとビルド結果が失敗になりますが、レポートはできてます。)
- ビルドが完了したら左メニューの
ビルド
>レポートグループ
- 作成されているレポートグループを選択
これでテスト結果が確認できます。