CodePipelineでCI/CD(Build,Deploy)

CodePipelineの利用方法を確認します。GitHubリポジトリの特定ブランチにマージされたタイミングでパイプライン処理が起動され、デプロイ処理まで自動実行されるように設定してみます。

パイプラインを作成
( CodePipeline )

パイプラインの設定を選択する

660-aws-codepipeline_1_pipeline1.png

パイプラインを作成するをクリックします。

660-aws-codepipeline_2_pipeline.png

AWSリソースへのアクセス許可を付与するためのサービスロールなど設定します。

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

660-aws-codepipeline_3_code.png

ECR S3 など選択できます。今回は GitHubを選択します。

660-aws-codepipeline_5_code.png

GitHubに接続するをクリックします。

660-aws-codepipeline_4_code.png

承認するか確認する画面がポップアップで表示されます。

660-aws-codepipeline_6_code.png

承認後、リポジトリブランチを選択できます。GitHubウェブフックを選択すると、指定ブランチにマージされたタイミングでパイプラインが開始されます。

ビルドステージを追加する
( CodeBuild )

660-aws-codepipeline_7_build.png

まだCodeBuildのプロジェクトが存在しないので、新規に作成します。プロジェクトを作成するをクリックします。

660-aws-codepipeline_8_build.png

プロジェクト名など入力します。

660-aws-codepipeline_9_build.png

OS Runtime など選択します。今回はRuntimeに Node.js を選択しました。

660-aws-codepipeline_10_build.png

Buildspecにてビルド処理に利用するfileを指定します。デフォルトで buildspec.yml です。

660-aws-codepipeline_11_build.png

作成したCodeBuildを指定して、次にをクリックします。

デプロイステージを追加する
( CodeDeploy )

Elastic Beanstalkの概要と使い方 で作成した Elastic Beanstalkの環境 にデプロイされるように設定してみます。

660-aws-codepipeline_12_deploy.png

CloudFormation Elastic Beanstalk ECS S3 などのデプロイ方法を選択できます。今回は Elastic Beanstalk を選択します。

660-aws-codepipeline_13_deploy.png

Elastic Beanstalk を選択したので、アプリケーション名 環境名 を選択します。

レビュー

660-aws-codepipeline_14_review.png

設定した内容を確認します。

660-aws-codepipeline_15_review.png

問題なければ、パイプラインを作成する をクリックします。

動作確認

実行失敗

660-aws-codepipeline_16_ng.png

パイプライン作成後、パイプライン処理が開始されました。Buildのフェーズで処理が失敗しています。

660-aws-codepipeline_17_ng.png

該当のビルドプロジェクトのログで原因を確認します。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:
    - ./**/*

実行成功

660-aws-codepipeline_18_ok.png

今度はBuildフェーズも成功したようです。

660-aws-codepipeline_19_ok.png

buildspec.yml に記述した処理が実行されています。

660-aws-codepipeline_20_ok.png

Deployフェーズも成功しました。

660-aws-codepipeline_21_ok.png

Elastic Beanstalkのアプリケーションバーションを確認します。バージョンラベルに code-pipelineと記述されていました。

参考