developブランチにpushした時にdockerビルドし、ECRにpushする。
deploy.sh
#!/bin/sh
ECR_URI_BASE=999999999999.dkr.ecr.ap-northeast-1.amazonaws.com
TEMPORARY_IMAGE_NAME=XXX
# Build
docker build -t $TEMPORARY_IMAGE_NAME .
# ECR_URI
if [ -z "$ECR_URI_BASE" ]; then
echo "Need to set ECR_URI_BASE"
exit 1
fi
if [ -z "$IMAGE_TAG" ]; then
echo "Need to set IMAGE_TAG"
exit 1
fi
ECR_URI=$ECR_URI_BASE/$TEMPORARY_IMAGE_NAME:$IMAGE_TAG
# Login
if [ -z "$AWS_DEFAULT_REGION" ]; then
echo "Need to set AWS_DEFAULT_REGION"
exit 1
fi
login_cmd=`aws ecr get-login --region $AWS_DEFAULT_REGION`
eval $login_cmd
echo "Start pushing to $ECR_URI"
docker tag $TEMPORARY_IMAGE_NAME:latest $ECR_URI
docker push $ECR_URI
deployment
でdeploy.sh
を実行するようにする。タグはコミットのrevision。
circle.yml
machine:
timezone:
Asia/Tokyo
services:
- docker
dependencies:
override:
- echo 0
test:
override:
- echo 0
deployment:
development:
branch: develop
commands:
- ./deploy.sh:
environment:
IMAGE_TAG: $CIRCLE_SHA1
CircleCIに以下の環境変数を設定する。
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
参考