2017-12-15 CircleCI から毎回 Amazon ECR および Amazon S3 にデプロイする
「よし、出来たぞ。さっそくデプロイだ」となったところでつまずく。もっと早期からデプロイしておけば良いのだけど……。継続的なんとかが出来ていない。
いまの開発フロー(一部)は↓のような感じだ。
- Issue を決め、 WIP commit と共に Pull Request を作成する
- commit を作成し、 push する
- CircleCI が Pull Request に対して動き、ビルド・テストする
- テストが通ったら Reviewer に Review を依頼する
- Reviewer は Review で問題なければ Merge する
- CircleCI が Merge された commit に対して動き、ビルド・テストする
- 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 をつくればいい、と。
模索中。