CodePipelineの利用方法を確認します。GitHubリポジトリの特定ブランチにマージされたタイミングでパイプライン処理が起動され、デプロイ処理まで自動実行されるように設定してみます。
パイプラインを作成
( CodePipeline )
パイプラインの設定を選択する
パイプラインを作成する
をクリックします。
AWSリソースへのアクセス許可を付与するためのサービスロール
など設定します。
ソースステージを追加する
ECR
S3
など選択できます。今回は GitHub
を選択します。
GitHubに接続する
をクリックします。
承認するか確認する画面がポップアップで表示されます。
承認後、リポジトリ
とブランチ
を選択できます。GitHubウェブフック
を選択すると、指定ブランチにマージされたタイミングでパイプラインが開始されます。
ビルドステージを追加する
( CodeBuild )
まだCodeBuild
のプロジェクトが存在しないので、新規に作成します。プロジェクトを作成する
をクリックします。
プロジェクト名など入力します。
OS
Runtime
など選択します。今回はRuntimeに Node.js
を選択しました。
Buildspecにてビルド処理に利用するfileを指定します。デフォルトで buildspec.yml
です。
作成したCodeBuildを指定して、次に
をクリックします。
デプロイステージを追加する
( CodeDeploy )
今回は、事前に作成済みの Elastic Beanstalkの環境
にデプロイされるように設定してみます。
CloudFormation
Elastic Beanstalk
ECS
S3
などのデプロイ方法を選択できます。今回は Elastic Beanstalk
を選択します。
Elastic Beanstalk
を選択したので、アプリケーション名
環境名
を選択します。
レビュー
設定した内容を確認します。
問題なければ、パイプラインを作成する
をクリックします。
動作確認
実行失敗
パイプライン作成後、パイプライン処理が開始されました。Buildのフェーズで処理が失敗しています。
該当のビルドプロジェクトのログで原因を確認します。YAML file does not exist
と表示されています。まだ buildspec.yml
を作成してないためです。
buildspec.ymlを追加
下記、buildspec.yml
を追加して、該当ブランチにマージします。
version: 0.2
phases:
install:
commands:
- echo "install > commands"
finally:
- echo "install > finally"
pre_build:
commands:
- echo "pre_build > commands"
finally:
- echo "pre_build > finally"
build:
commands:
- echo "build > commands"
finally:
- echo "build > finally"
post_build:
commands:
- echo "post_build > commands"
finally:
- echo "post_build > finally"
artifacts:
files:
- ./**/*
実行成功
今度はBuildフェーズも成功したようです。
buildspec.yml
に記述した処理が実行されています。
Deployフェーズも成功しました。
Elastic Beanstalkのアプリケーションバーションを確認します。バージョンラベルに code-pipeline
と記述されていました。