ESCへの自動デプロイの設定をやったのでその備忘録です。ecrにリポジトリを作って、コンソール上から手動プロイできる状態まではできている前提で話します。
circleciへ環境変数を設定する
ますcircleciのwebコンソールのtarget-project -> settings -> Environment Variables
にデプロイに必要な環境変数を設定します。
- AWS_ACCOUNT_ID
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
以上の4つを設定します。
circle.yml
公式ドキュメントと大体同じです。
自分はとりあえずビルド・デプロイをしたかっただけなので下記のようにしました。
machine: services: - docker dependencies: post: - docker build -t test-app . deployment: prod: branch: master commands: - ./deploy.sh
実際に本番で使う時は公式ドキュメント同様にtestは入れたほうが良さそうです。
deploy.sh
デプロイ処理はecs-deployにまかせています。 自分でデプロイ処理書くのは骨が折れそうなので、OSSでメンテ(されていく|できる)ものを使いました。
#!/bin/sh set -ex eval $(aws ecr get-login --region ${AWS_DEFAULT_REGION}) docker tag test-app:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/test-app:latest docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/test-app:latest ./docker/ecs-deploy -c ap -n test-app -i $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/test-app:latest
こんな感じです。
作ったばかりでまだ問題点とかはこれからでてきそうだけど、とりあえずこれでデプロイできるところまで行けました。