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インスタンスにインストールする前や後に実行するスクリプトも設定できます。したがって、インストール前にサーバプロセスを停止したり、インストール後にサーバプロセスを再起動する等、詳細な設定が可能です。