LoginSignup
2
0

More than 5 years have passed since last update.

CloudFormationで作るCodePipelineで継続的デリバリされるECSクラスタを考えてみた

Posted at

CloudFormationで作るCodePipelineで継続的デリバリされるECSクラスタを考えてみました。

前提

  • リポジトリにはGitHubを使う
  • CloudFormationで環境一式が作成される
  • ECSは単一タスク定義にコンテナ2つ
    • WebとAppコンテナ
  • CodepipelineはWeb, Appコンテナ用それぞれ用意

コンポーネント

GitHub

リポジトリを分けます。分ける理由はファイル更新時のデリバリー範囲を狭めるためです (Webコンテナの設定変更だけならAppコンテナは反映しない)。

  • learning_of_codepipeline_ecs
    • CloudFormation設定ファイル
  • learning_of_codepipeline_ecs_app
    • Appコンテナ用 Dockerfile
    • Appコンテナ用 Codebuild設定ファイル
  • learning_of_codepipeline_ecs_web
    • Webコンテナ用 Dockerfile
    • Webコンテナ用 Codebuild設定ファイル

CloudFormation

下記リソースの作成を行います。

  • CodePipeline
  • CodeBuild
    • App, WebコンテナイメージをビルドしてECRにPush
  • ECSクラスタ
    • App, Webコンテナを動かす

CodePipeline

単一PipelineでApp, WebコンテナのビルドとECSへのデプロイをやろうと思ったのですが、下記問題があったのでWebとAppで別のPipelineにしました。

  • Web, Appどちらかの更新で両方のビルドが始まってしまう
  • ECSへのデプロイ時に片方が常に失敗する

成果物

CodePipeline
https://github.com/kter/learning_of_codepipeline_ecs
Webコンテナ用
https://github.com/kter/learning_of_codepipeline_ecs_web
Appコンテナ用
https://github.com/kter/learning_of_codepipeline_ecs_app

備考

前述の通り、最初1つのPipelineでWeb, App両方のビルド & デプロイをしようと思ったのですが、リポジトリ更新時どちらもビルドが始まってしまう問題と、ECSのデプロイが失敗する問題で、最終的には2つに分けました。

2
0
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
2
0