LoginSignup
6
3

More than 5 years have passed since last update.

AWS CodePipelineを使って、Githubで管理しているソースコードをCodeBuildでビルドしElasticBeanstalkのEC2上にデプロイする

Last updated at Posted at 2019-03-19

はじめに

AWSのCodePipelineを使って、Githubで管理しているPHPのソースコードをCodeBuildでビルドし、ElasticBeanstalkで管理しているEC2上にデプロイする一連の作業の流れと注意するポイントを紹介します。

前提

  • ソースコードをGithubで管理している
  • ElasticBeanstalkでEC2インスタンスを管理している

流れ

  • CodePipelineでパイプラインを作成
    • ソースステージ(Github)を追加
    • AWS CodeBuildでビルドプロジェクトを作成し追加
    • デプロイステージ(ElasticBeanstalk)を追加

事前準備

buildspec.yml

プロジェクトのルートディレクトリ(Githubで管理しているリポジトリのルート)にbuildspec.ymlファイルを作成します。
buildspec.ymlファイルはCodeBuildでビルド時に自動で読み込まれ、さまざまなコマンドを実行することができます。

今回下記のような内容でbuildspec.ymlを用意しました。

  • ビルド時のコマンドの概要
    • composer.lockファイルを削除
    • vendorディレクトリを削除
    • composerを実行し各ライブラリを取得
  • ビルドで生成されたファイル(build artifact)の設定
buildspec.yml
version: 0.2
phases:
  build:
    commands:
      - |
        if [ -e composer.lock ]; then
          rm -r composer.lock
        fi
      - |
        if [ -e vendor ]; then
          rm -rf vendor
        fi
      - php -dmemory_limit=-1 composer.phar update --no-scripts --prefer-dist --no-interaction
      - |

artifacts:
  files:
    - ./**/*

buildspec.ymlの注意点

下記のartifactsのfilesに関する記述がないとビルド生成物を任意の場所に配置できず、正しく生成されないのでご注意ください。

artifacts:
  files:
    - ./**/*

詳細

パイプラインを作成

下記の内容でパイプラインを作成します。Service roleは新規作成していますが、既存のものを使う場合はExisting Service roleを選択してください。

image.png

ソースステージを追加

ソースステージを追加します。ソースプロバイダにGithubを選択します。この他AWS CodeCommit等も選択することもできます。

Githubに接続完了すると自分が管理しているリポジトリリストが表示され、リポジトリを選択するとブランチリストが表示されます。
変更検出オプションは、Github等で指定したブランチに変更が発生した際に自動でパイプラインを起動してくれます。
image.png

CodeBuildのプロジェクトを作成

次にCodeBuildでビルドするためのビルドプロジェクトを作成します。Project nameはパイプラインの名前と合わせておくと管理しやすいです。
image.png

ビルド環境を設定

ビルド環境の設定ですが、GithubのソースコードがPHP7なので、
CodeBuildがデフォルトで用意している下記の環境を選択しています。

  • Operating system: Ubuntu
  • Runtime: PHP
  • Runtime Version: aws/codebuid/php7.1

CodeBuildで用意されていない環境が必要な場合は、Custom Imageを選択し自前でDockerImageを用意する必要があります。

image.png

ビルドスペックを設定

ビルドスペックファイルは、ビルド時に様々なカスタムコマンドを実行することができます。

今回は"Use a buildspec file"を選択することで、ルートディレクトリに置いたbuildspec.ymlが使用されるように設定しています。

image.png

デプロイステージを追加

最後にデプロイステージを選択します。

デプロイプロバイダにElasticBeanstalkを選択すると、自分が管理しているアプリケーションリストと環境が表示されるのでデプロイ先を指定します。
image.png

内容を確認

以上で完了です。

image.png
image.png

これで正常にデプロイまで終了すればOKです。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3