AWS CodeBuildとGitHubの連携
利用するためには、CodeBuildとGitHubを事前に接続する必要があります。接続方法としては、公式ドキュメントに記載の通り、OAuth Appまたはパーソナルアクセストークン(PAT)を使用する方法があります。
ここでは、OAuth Appを使用して接続する方法を紹介します。
AWSマネジメントコンソールにアクセスし、「ビルドプロジェクトの作成」に進みます。「OAuthを使用して接続する」を選択し、「GitHubに接続」を押下します。
接続が正常に確立されると、GitHubアカウントまたは組織内のリポジトリを一覧表示できるようになります。
AWS Codebuildのプロジェクトを作成する
AWS CodeBuildとGitHubの接続が確立したら、公式ドキュメントにある手順に従い、CodeBuildプロジェクトを作成します。
「コードの変更がこのレポジトリにプッシュされるたびに再構築する」にチェックを入れて、「フィルターグループ」でWORKFLOW_JOB_QUEUEDを選択します。
この設定により、GitHub Actionsから呼び出しがあるたびに、作成したCodeBuildプロジェクトをセルフホステッドランナーとして動作させることが可能です。
GitHubActionsでCodeBuildを参照する
CodeBuildプロジェクトの作成が完了したら、GitHubに戻り、下記のようなワークフローファイルを作成します。
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-test-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
runs-onの値でCodeBuildの実行環境を指定しています。下記のように指定すると、CodeBuildプロジェクトを作り変えることなくLambdaの環境設定を上書きすることができます。
詳細は、公式ドキュメントをご参照ください。
runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<runtime-version>-<instance-size>
ジョブ終了後、下記のようなログがGitHub Actionsで出力されます。
また、CodeBuild上では、GitHub Actionsのホストランナー起動ログが出力されます。
ジョブが起動できない場合
ジョブの実行が始まらない場合は、GitHub側でWebhookのログを確認してみてください。CodeBuild側がWebhookの呼び出しに対して400を返しエラーとなっている場合があります。
「RecentDelivers」ログからエラー原因を確認することができます。
この例では、プロジェクトネームが一致していないことが原因であることがわかります。
まとめ
CodeBuildによる、GitHub Actionsセルフホステッドランナー機能のアップデートを紹介しました。今回のアップデートにより、GitHub ActionsとAWSサービスの連携がより柔軟になり、ユーザにとって嬉しいアップデートではないでしょうか。
本記事が今後のAWS活用のお役に立てば幸いです。