CIでビルドしたイメージはregistoryにプッシュしておきたい
テストに失敗したときは原因をさぐるのに使えそうだし、
テストに成功した時に、push済みなのですばやくデプロイできそう。
CIでdocker build
したらその時点でgitのブランチ名とコミットIDのタグをつけてpushすることにした。
テストを実行する前に以下のようなシェルスクリプトを走らせている。
docker_push.sh
#!/bin/sh
IMAGE_NAME="eiel/hoge"
IMAGE_NAME_SHA=$IMAGE_NAME:COMMIT_$(git rev-parse HEAD)
IMAGE_NAME_BRANCH=$IMAGE_NAME:$(git rev-parse --abbrev-ref HEAD)
docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
docker tag $IMAGE_NAME $IMAGE_NAME_SHA
docker tag $IMAGE_NAME $IMAGE_NAME_BRANCH
docker push $IMAGE_NAME_SHA $IMAGE_NAME_BRANCH
- eiel/hoge:COMMIT_f90bbb0135d12994de5f7a98a3dada52e2a5b639
- eiel/hoge:master
みたいなタグができる。
circle.ymlも抜粋しておく。
circle.yml
dependencies:
override:
- docker info
- docker build -t eiel/hoge .
- bin/docker_push
しかし、なんでもかんでも push するとゴミがたまるので、消しやすくする工夫をしたい。
gitでタグをうったときも自動でなんとかしたいところ。