ElasticBeanstalkでCI/CDをする

先日紹介したElasticBeanstalkですが、デフォルトだとzipファイルにまとめてアップロードしなければなりません。

やはりそのままだと、新しく機能を追加したり、バグを改善した時にいちいちzipファイルでアップロードしないといけないのは、めんどくさい…

ということでGitHubにコミットした時に、自動でデプロイされるようにします。

CI/CDとは

その前にCI/CDの簡単な解説です。
CI/CDとは「Continuous Integration/Continuous Delivery」の略称で日本語では継続的インテグレーション/継続的デリバリーといいます。
ソフトウェアの変更を常にテストして、自動で本番環境にリリース可能な状態にしておくという手法です。

これがとても便利なんですね〜〜

GitHubを用いたCI/CD

公式のドキュメントで継続的デプロイのパイプラインのセットアップするというのがあるので、これにそって設定していきます。

1. デプロイ環境を作成する

まずはEC2インスタンスなどを準備します。
今回はElasticBeanstalkで作成します。

アプリケーション名は好きに入力します。
今回はtest-appとします。

環境の作成はしばらく時間がかかります。

詳細からSSHキーを指定することもできます。

2. コードのコピーを取得する

https://github.com/awslabs/aws-codepipeline-s3-aws-codedeploy_linuxからAWSが用意してくれたソースをForkします。
右上隅のForkボタンをクリックして、自分のGitHubリポジトリにコピーを分岐します。

3. CodePipelineの作成

パイプラインの作成をクリック

パイプライン名を入力します。名前は何でもいいです。 ロールも新しく作成します。

ソースプロバイダにGitHubを選択し、GitHubに接続するを押して認証します。

あとはリポジトリとブランチを設定します。

ビルドステージは今回はスキップします。

デプロイプロバイダーにAWS Elastic Beanstalkで、先程作成したアプリケーション名や環境名を入力します。

このようになればokです!

動作確認

アプリのURLで検索します。

この画面になっていればGitHubとのリンクがすんでいます。

GitHubで編集

GitHubデスクトップなどをいれている方はGitHubデスクトップでも編集できます。
今回はGitHub上で編集していきます。さきほどForkしたリポジトリを開いて、index.htmlを開きます。
そして、ペンマークを押して編集します。

<body>タグの好きな位置に何か入れて見ます。
今回は公式の例通りの文字をいれてみます。

<p>GitHub からソースアプリケーションを取得し、AWS Elastic Beanstalk を使用して、Amazon EC2 インスタンスにデプロイするパイプラインが正常に作成されました。継続的デプロイの実践に一歩近づきました。</p>

編集したらコミットします。

CodePipelineを覗くとこんな感じになっています。
この表示が成功になれば完了です!

早速みてみましょう。

変更されていますね!!

これでzipファイルにまとめてアップロード…という手間がなくなりました!!!

注意点としては、いままでzipにまとめてアップロードとしていた場合はドキュメントルートを変更していたと思いますが、CodePipelineで設定したことによって、ドキュメントルートにそのままファイルが置かれるようになったので、ドキュメントルートの変更が必要です。