bouzuya.hatenablog.com

ぼうずやのにっき

CircleCI から毎回 Amazon ECR および Amazon S3 にデプロイする

「よし、出来たぞ。さっそくデプロイだ」となったところでつまずく。もっと早期からデプロイしておけば良いのだけど……。継続的なんとかが出来ていない。

いまの開発フロー(一部)は↓のような感じだ。

  1. Issue を決め、 WIP commit と共に Pull Request を作成する
  2. commit を作成し、 push する
  3. CircleCI が Pull Request に対して動き、ビルド・テストする
  4. テストが通ったら Reviewer に Review を依頼する
  5. Reviewer は Review で問題なければ Merge する
  6. CircleCI が Merge された commit に対して動き、ビルド・テストする
  7. CircleCI がビルドしたものを Amazon ECR および Amazon S3 にデプロイする

7 について、いままではデプロイ用のブランチのみをデプロイしていた。運用ルールを変えて、すべてデプロイすることにした。

Amazon ECR や Amazon S3 までなら毎回やってしまえばいいじゃないかという判断。富豪的だ。最終的な表示制御などは Amazon ECS でなんとでもなってしまう。 git の commit hash を tag に docker push 等しているので、追跡は特に困らない。

悩ましい点は、Amazon S3 に配置するアセットやそこに埋め込まれる設定の制御だ。基本的には Amazon ECS に寄せたいのだけど、そこは CircleCI の管轄になっているのでややこしい。妥協策として GitHub で Release / Tag が作成されたときに、 CircleCi で別設定によるビルド・デプロイするようにした。本番環境向けのデプロイには GitHub の Release をつくればいい、と。

模索中。