Files
talk/scripts/docker.sh
T

84 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -e
# Inspired by https://segment.com/blog/ci-at-segment/
deploy_tag() {
# Find our individual versions from the tags
if [ -n "$(echo $CIRCLE_TAG | grep -E 'v.*\..*\..*')" ]
then
major=$(echo ${CIRCLE_TAG//v} | cut -d. -f1)
minor=$(echo ${CIRCLE_TAG//v} | cut -d. -f2)
patch=$(echo ${CIRCLE_TAG//v} | cut -d. -f3)
major_version_tag=$major
minor_version_tag=$major.$minor
patch_version_tag=$major.$minor.$patch
tag_list="$major_version_tag $minor_version_tag $patch_version_tag"
else
tag_list=$CIRCLE_TAG
fi
# Tag the new image with major, minor and patch version tags.
for version in $tag_list
do
echo "==> tagging $version"
echo docker tag coralproject/talk:latest coralproject/talk:$version
echo docker tag coralproject/talk:latest-onbuild coralproject/talk:$version-onbuild
done
# Push each of the tags to dockerhub, including latest
for version in $tag_list latest
do
echo "==> pushing $version"
echo docker push coralproject/talk:$version
echo docker push coralproject/talk:$version-onbuild
done
}
deploy_latest() {
echo "==> pushing latest"
echo docker push coralproject/talk:latest
echo docker push coralproject/talk:latest-onbuild
}
deploy_branch() {
echo "==> tagging branch $CIRCLE_BRANCH"
echo docker tag coralproject/talk:latest coralproject/talk:$CIRCLE_BRANCH
echo docker tag coralproject/talk:latest-onbuild coralproject/talk:$CIRCLE_BRANCH-onbuild
echo "==> pushing branch $CIRCLE_BRANCH"
echo docker push coralproject/talk:$CIRCLE_BRANCH
echo docker push coralproject/talk:$CIRCLE_BRANCH-onbuild
}
# build the repo, including the onbuild tagged versions.
echo docker build -t coralproject/talk:latest -f Dockerfile .
echo docker build -t coralproject/talk:latest-onbuild -f Dockerfile.onbuild .
if [ "$1" = "deploy" ]
then
if [[ -n "$DOCKER_EMAIL" && -n "$DOCKER_USER" && -n "$DOCKER_PASS" ]]
then
# Log the Docker Daemon in
echo docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
fi
if [ "$CIRCLE_BRANCH" = "master" ]
then
# deploy based on the env
if [ -n "$CIRCLE_TAG" ]
then
deploy_tag
else
deploy_latest
fi
else
deploy_branch
fi
fi