CodePipelineとCodeDeployとで単一インスタンスに複数のGitHubリポジトリをデプロイする仕組み

こんにちは。エス・エム・エスキャリア プロダクト開発部古高です。
今回は、CodePipelineとCodeDeployとで1インスタンス群に複数のGitHubリポジトリをデプロイする仕組みを構築する方法を紹介します。

背景

既存のシステムをAWS移行する際に、なかなか切り離せない複数のプロダクトが存在する場合が有ります。
しかし、EC2インスタンスへのデプロイを行いたいとき、CodeDeployの仕組みを使う場合、1インスタンス群に1リポジトリをデプロイするのが原則になっています。
ただし、限定条件下でのデプロイであれば、1インスタンス群に複数リポジトリのデプロイを行うことも可能です。
以下に、そのやり方を説明します。

やり方

CodeDeployアプリケーションの作成

コンピューティングプラットフォームに「EC2/オンプレミス」を選択します。

CodeDeployデプロイグループの作成

デプロイタイプを「インプレース」にします(「Blue/Green」には出来ません)。
環境設定を「AmazonEC2インスタンス」にします(Amazon EC2 Auto Scaling グループには出来ません)。

CodePipelineの設定

ソースステージの追加

GitHubの特定のリポジトリ・ブランチへアクセスして、パイプラインを開始するアクションを作成します。

デプロイステージの追加

デプロイプロバイダーを「AWS CodeDeploy」にします。
アプリケーション名に、先ほど作成したCodeDeployアプリケーション名を入力します。
デプロイグループに、先ほど作成CodeDeployデプロイグループ名を入力します。
この組み合わせを、デプロイしたいレポジトリ分だけ作成します。

まとめ

この設定で、1インスタンス群に対して複数リポジトリのデプロイを行うことが出来ます。
ただし、「Blue/Green」デプロイが出来ない,オートスケールの設定が出来ないなど、本来CodeDeployで出来たデプロイ設定のいくつかが出来なくなっています。
移行・作成したいプロダクトに合わせて考慮してみて下さい。
Pocket
LINEで送る