|
|
|
#!/bin/bash
|
|
|
|
set -u
|
|
|
|
|
|
|
|
# collect params from ENV vars
|
|
|
|
DATE=`date +%Y-%m-%d`
|
|
|
|
DOCKER_REPOSITORY="pelias"
|
|
|
|
DOCKER_PROJECT="${DOCKER_REPOSITORY}/${CIRCLE_PROJECT_REPONAME}"
|
|
|
|
|
|
|
|
BRANCH="$(echo $CIRCLE_BRANCH | tr '/' '-')" #slashes are not valid in docker tags. replace with dashes
|
|
|
|
|
|
|
|
# the name of the image that represents the "branch", that is an image that will be updated over time with the git branch
|
|
|
|
# the production branch is changed to "latest", otherwise the git branch becomes the name of the version
|
|
|
|
if [[ "${BRANCH}" == "production" ]]; then
|
|
|
|
DOCKER_BRANCH_IMAGE_VERSION="latest"
|
|
|
|
else
|
|
|
|
DOCKER_BRANCH_IMAGE_VERSION="$BRANCH"
|
|
|
|
fi
|
|
|
|
DOCKER_BRANCH_IMAGE_NAME="${DOCKER_PROJECT}:${DOCKER_BRANCH_IMAGE_VERSION}"
|
|
|
|
|
|
|
|
# the name of the image that represents the "tag", that is an image that is named with the date and git commit and will never be changed
|
|
|
|
DOCKER_TAG_IMAGE_VERSION="${BRANCH}-${DATE}-${CIRCLE_SHA1}"
|
|
|
|
DOCKER_TAG_IMAGE_NAME="${DOCKER_PROJECT}:${DOCKER_TAG_IMAGE_VERSION}"
|
|
|
|
|
|
|
|
# build image and login to docker hub
|
|
|
|
docker build -t $DOCKER_PROJECT .
|
|
|
|
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
|
|
|
|
|
|
|
# copy the image to each of the two tags, and push
|
|
|
|
docker tag $DOCKER_PROJECT $DOCKER_BRANCH_IMAGE_NAME
|
|
|
|
docker tag $DOCKER_PROJECT $DOCKER_TAG_IMAGE_NAME
|
|
|
|
docker push $DOCKER_BRANCH_IMAGE_NAME
|
|
|
|
docker push $DOCKER_TAG_IMAGE_NAME
|