CodeBuild

【AWS】GithubのプルリクマージをトリガーにCodeBuildを実行し動作確認する

どうも、AWS勉強中のとがみんです。

CodePipelineでソースコードを管理し、各種ブランチへのマージをトリガーに自動デプロイする仕組みを作り動作を確認しました。

この記事では、AWSのCodeCommitではなく、Github上で管理するリポジトリに変更があった場合に、AWS上のリソースに変更を反映する仕組みを構築しながら、その作り方について整理し理解を深めていこうかと思います。

今回作成するもの

今回は、Githubにて、Serverless Frameworkを活用したコードを管理し、developブランチへのプルリクエストのマージをトリガーに、AWSのCodeBuildが動作し、AWS上に各種リソースが作成されるようなCD環境を構築します。

作業手順の概要

  1. GitHubにリポジトリを作成しコード管理
  2. AWSのマネジメントコンソールでCodeBuildの設定
  3. Githubで管理するコードのdevelopブランチへのプルリクエストのマージをし動作確認

作業手順の詳細

Githubでのリポジトリの作成

Githubアカウントにてaws-github-codebuild-testというリポジトリを作成しました。

Serverless Frameworkアプリケーションの作成

下記の記事で作成したものをベースにしています。

ソースコードはGitHubにあげています。

AWSコンソールからCodeBuildの作成

CodeBuildのマネジメントコンソール画面に移り、ビルドプロジェクトを作成します。

プロジェクトの設定

プロジェクト名はcodebuild-github-testとしています。

ソースの設定

今回のソースプロバイダはGitHubのため、それを選択します。
OAuthを選択し、GitHubに接続します。

以下のような画面が出てくるので確認を選択しGithubに接続します。

接続されたら、接続したGitHubアカウントのリポジトリを参照するため、下記のようにチェックをいれ、対象リポジトリを選択します。

GitHub Webhookの設定

何をトリガーにCodeBuildを実行するかの設定を行います。
そのためにGitHubのWebhookの設定をします。

Webhookとは、特定のイベントが発生したら、別のアプリケーションに通知を発行するような仕組みで、今回はGitHubのdevelopブランチに対してプルリクエストがマージされたことをトリガーに、AWS CodeBuildの対象のビルドプロジェクトに通知をし、実行されるように設定します。

イベントタイプにPULL_REQUEST_MERGEDを指定し、BASE_REFに^refs/heads/develop$を設定します。

「BASE_REF」は、プルリクエストのターゲットブランチで、ターゲットブランチとして今回はdevelopブランチを指定するため、上記のような設定にしています。

「^refs/heads/develop$」の「^」や「$」は正規表現で、「^」は行の戦闘、「$」は行の最後を表すものです。

GitHub Docs コンテキスト

その他設定

残りの設定や、IAMロールの設定に関しては、必要に応じて下記を参照してください。

Githubで管理するコードのdevelopブランチへのプルリクエストのマージをし動作確認

GitHubで管理しているコードについて、developブランチへのプルリクエストをマージし、CodeBuildが動作することを確認していきます。

GitHubでプルリクエストを作成します。「New Pull request」を選択します。

feature/testブランチからdevelopブランチへのプルリクエストを作成します。
今回の変更点は、下記のようにmessageを少し編集しています。

作業ブランチからdevelopブランチへのプルリクエストであることを確認し、プルリクエストを作成します。

プルリクエストをマージすると、作成したCodeBuildが実行され「進行中」のステータスになります。

CodeBuildの実行ログに出力されるエンドポイントにアクセスすると下記のようなレスポンスが返ってくるので、デプロイされていることが確認できました。

まとめ

GitHubのdevelopブランチへのプルリクエストのマージをトリガーにCodeBuildが動作しServerlessFrameworkを活用したアプリケーションがデプロイされることが確認できました。