AWS

CodePipelineでCodeBuildのテストを自動化


press
CodePipelineでCodeBuildのテストを自動化

CodePipelineでCodeBuildのテストを自動化

CodeCommitで管理しているリポジトリをCodeBuildでテストする場合は通常、手動でテストを実行させる必要がありますが、CodePipelineを使うことで特定の条件をトリガーにしてCodeBuildによるテストを自動化することができます。

ブランチ戦略やテスト戦略によって運用方法が異なると思いますが、今回は弊社で採用している簡易的なGit flowで運用しているリポジトリで特定のブランチ(dev)に変化(マージ)があったらCodeBuildでテストを自動で実行させる方法を解説します。ブランチの変化がトリガーなのでプッシュでも検知しますが、弊社ではdevブランチには直接プッシュしない運用なので今回はマージをトリガーにしています。

CodeBuildではCodeCommitでプルリクエストの作成をテスト実行のトリガーにする場合は、Lambdaなどのサービスと連携しないと構築できませんが、特定ブランチの変化(プッシュやマージなど)をトリガーにしたテスト実行の場合はCodePipelineを使って構築できます。CodePipelineはコードを書かずにブラウザからの操作でも構築可能です。

前回の記事はこちら

構築の流れ

  • ビルドプロジェクト作成
  • パイプライン作成
    • ソースステージ追加
    • ビルドステージ追加
    • デプロイステージ追加
  • 動作確認 1
  • プリクエスト・マージ
  • 動作確認 2
    • ビルドのレポート

ビルドプロジェクトを作成

ビルドプロジェクトを作成
ビルドプロジェクトを作成

コンソールからCodeBuildを検索して「ビルドプロジェクトを作成する」を押します。

ビルドプロジェクトを作成
ビルドプロジェクトを作成

プロジェクト名、リポジトリ、ブランチを設定します。

設定項目
プロジェクト名:ContinuousIntegrationTeste
リポジトリ:ContinuousTesting
ブランチ:dev

ビルドプロジェクトを作成
ビルドプロジェクトを作成

オペレーティングシステム、ランタイム、イメージを設定します。テストするコードで使用しているPythonのバージョンが3.10なので、イメージは「standard:6.0」を選択します。

設定項目
オペレーティングシステム:Ubuntu
ランタイム:Standard
イメージ:aws/codebuild/standard:6.0

ビルドプロジェクトを作成
ビルドプロジェクトを作成

「ビルドプロジェエクトを作成する」を押して作成します。

パイプラインを作成

パイプラインを作成
パイプラインを作成

コンソールからCodePipelineを検索して「パイプラインを作成する」を押します。

パイプラインを作成
パイプラインを作成

パイプライン名、パイプラインタイプ、サービスロールを設定して「次に」を押します。パイプラインタイムは特別な理由がない限りv2を選択します。新しいサービスロールを選択するとロール名が自動で入力されます。

設定項目
パイプライン名:BranchChangeTestPipeline

ソースステージを追加

ソースステージを追加
ソースステージを追加

ソースプロバイダ、リポジトリ名、ブランチ名を設定して「次に」を押します。

設定項目
ソースプロバイダ:AWS CodeCommit
リポジトリ名:ContinuousTesting
ブランチ名:dev

ビルドステージを追加

ビルドステージを追加
ビルドステージを追加

ビルドステージは画像のようになっていればそのまま「次に」を押します。

デプロイステージを追加

デプロイステージの設定
デプロイステージの設定

今回はデプロイは実行しないので「導入段階をスキップ」を押します。

デプロイステージの設定
デプロイステージの設定

ポップアップが表示されたら「スキップ」を押します。

パイプラインを作成

パイプラインを作成
パイプラインを作成

「パイプラインを作成する」を押して作成します。

動作確認 1

ビルドプロジェクトの確認
ビルドプロジェクトの確認

パイプラインを作成したタイミングで設定したテストが実行されるのでCodeBuildのビルドプロジェクトを確認します。

ビルドプロジェクトの確認
ビルドプロジェクトの確認

履歴に追加されたステータスが進行中のビルドの詳細を確認します。

ビルドログの確認
ビルドログの確認

前回の記事で作成した、CodeBuildのテストに必要なbuildspec.ymlに書いてある文字列が表示されていることを確認します。

ビルドログの確認
ビルドログの確認

テスト結果も画像のように表示されます。

プリクエスト・マージ

プルリクエストを作成
プルリクエストを作成

テストが自動で実行されるか確認するためにプルリクエストを作成します。CodeCommitでdevブランチにプルリクエストを作成します。

プルリクエストを作成
プルリクエストを作成

タイトルを入力します。説明は任意なので空欄のままでも問題ありません。

プルリクエストを作成
プルリクエストを作成

テスト実行時に表示する文字列が変更されていることを確認して「プルリクエストの作成」を押します。

プルリクエストのマージ
プルリクエストのマージ

作成したプルリクエストをマージします。

プルリクエストのマージ
プルリクエストのマージ

「早送りマージ」を選択して「プルリクエストのマージ」を押します。

動作確認 2

実行したビルドの確認
実行したビルドの確認

CodeBuildのビルドプロジェクトに新しい履歴が追加されました。

テストログの確認
テストログの確認

テスト実行時に表示される文字列がマージされた後の内容になっていることを確認します。

テストログの確認
テストログの確認

テスト結果も先ほどと変わらず表示されています。

ビルドのレポート

テストのレポート確認
テストのレポート確認

CodeBuildで実行したビルドプロジェクトは「レポート」から詳細な情報を確認することができます。

テストのレポート確認
テストのレポート確認

画像のようにテストの実行時間やステータスなどを確認できます。

成功したビルドの確認
成功したビルドの確認

実行が完了したビルドプロジェクトは画像のようにステータスが「成功」に変わります。失敗の場合は「失敗」となります。


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    AWS

    AWS Deep Learning AMIを用いたGPU環境構築の手順

    AWS Deep Learning AMIを用いたGPU環境構築の手順 今回はCUDAやcuDNN等の環境が予め構築されていて機械学習に適したインスタンスをかんたんに作成できるAWS Deep Learning AMIを […]

    Posted on by press
    AWS

    AWS LambdaとS3、SNSでファイルのアップロードを自動通知

    AWS LambdaとS3、SNSでファイルのアップロードを自動通知 AWS Lambdaは特定の条件を満たすときにサーバーレスでPython(他のプログラミング言語も)を実行できるサービスです。トリガーを検知したときや […]

    Posted on by press

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません