From a658c34dd4d9011aa0773be5796720f7c4da69f4 Mon Sep 17 00:00:00 2001 From: Julian Simioni Date: Mon, 28 Aug 2017 14:11:56 -0400 Subject: [PATCH] Add CircleCI configuration Connects https://github.com/pelias/dockerfiles/issues/21 --- .circleci/config.yml | 12 ++++++++++++ .circleci/docker.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 .circleci/docker.sh diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..8aeea9df --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,12 @@ +version: 2 +jobs: + build: + working_directory: /app + docker: + - image: docker:17.05.0-ce-git + steps: + - checkout + - setup_remote_docker + - run: + name: Build and push image to Docker Hub + command: sh .circleci/docker.sh diff --git a/.circleci/docker.sh b/.circleci/docker.sh new file mode 100644 index 00000000..562de3db --- /dev/null +++ b/.circleci/docker.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -u + +# collect params from ENV vars +DATE=`date +%Y-%m-%d` +DOCKER_REPOSITORY="pelias" +DOCKER_PROJECT="${DOCKER_REPOSITORY}/${CIRCLE_PROJECT_REPONAME}" + +# 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 [[ "${CIRCLE_BRANCH}" == "production" ]]; then + DOCKER_BRANCH_IMAGE_VERSION="latest" +else + DOCKER_BRANCH_IMAGE_VERSION="${CIRCLE_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="${CIRCLE_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