CI/CDの構築(Codeシリーズ)

CI/CDとは、開発したソースコードのビルド、デプロイを自動化する仕組みで、開発効率やスピードを上げるためには必須となってきます。CI/CDのCはContinuous(継続的)という意味で、Continuous Integration / Continuous Delivery の略です。継続的な開発とリリースという感じです。AWSでは、このための機能として Codeシリーズがありますので、それらのイメージを説明します。

AWS Codeシリーズ

AWSの Codeシリーズには CodeCommit、CodeDeploy、CodePipelineがあり Code3兄弟とも呼ばれたりします。(Buildを行う場合は Code Buildもあり4兄弟かもしれません)

これらを使うと、ソースコードのgit管理、デプロイを結び付けて自動デプロイが可能になります。

おおまかなイメージ図を書きます。

Code Commitを使ってソースコードをgit管理していれば、それと連携してEC2インスタンスに自動でデプロイすることが可能です。

設定方法は、こちらの公式チュートリアル(シンプルなパイプラインを作成する)がとても参考になります。

イメージだけ説明すると、まずEC2インスタンスにCodeDeployエージェントというものをインストールしておく必要があります。

次にCodeDeployで、どのEC2インスタンスにデプロイするか等を設定します。デプロイ先のどこに配置するかは、ソースコードの中の トップフォルダのappspec.ymlファイルに書きます。上図の例だと、各EC2インスタンスの /var/source に配置されるようになります。EC2インスタンスは、デプロイグループの設定のタグで関連付けすることで設定できます。

CodePipelineでは、CodeCommitにgit push(ソースコードのアップデート)があったことをトリガーとして動作するように設定します。このトリガーに基づいてCodeDeployアプリケーションを実行します。

ソースコードの中のappspec.ymlには、CodeDeployでEC2インスタンスにインストールする前や後に実行するスクリプトも設定できます。したがって、インストール前にサーバプロセスを停止したり、インストール後にサーバプロセスを再起動する等、詳細な設定が可能です。