From 435adf0744152d1a63133a88b8ec5c56feb12c5f Mon Sep 17 00:00:00 2001 From: Akis Kesoglou Date: Tue, 13 Mar 2018 12:28:38 +0200 Subject: [PATCH] Use local build script in CI - Extracts commands into a separate script - Updates CI to Docker 17.X - Normalises pushed images to: - revision: eg. 22dd724 - branch: maintenance - semver: eg v1.5.2-5-g22dd724 Change-Type: patch --- .circleci/config.yml | 36 +++++++++--------------------------- automation/build.sh | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 27 deletions(-) create mode 100755 automation/build.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index b5234b8..26dde92 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2 jobs: build: docker: - - image: library/docker:1.12.6 + - image: library/docker:17 working_directory: /tmp/build environment: DOCKER_USERNAME: travisciresin @@ -14,31 +14,13 @@ jobs: version: 17.07.0-ce reusable: true exclusive: false - - run: | - docker info - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" - - run: - name: Build + - run: + name: Setup command: | - set -ex - docker pull ${DOCKER_IMAGE}:${CIRCLE_BRANCH} || true - docker build --rm=false --pull --tag ${DOCKER_IMAGE}:${CIRCLE_SHA1} . - - deploy: + docker info + docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" + apk add --no-cache git + - run: + name: Build and push command: | - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" - set -ex - docker push ${DOCKER_IMAGE}:${CIRCLE_SHA1} - docker tag ${DOCKER_IMAGE}:${CIRCLE_SHA1} ${DOCKER_IMAGE}:${CIRCLE_BRANCH} - docker push ${DOCKER_IMAGE}:${CIRCLE_BRANCH} - if [ "${CIRCLE_TAG}" != "" ]; then - docker tag ${DOCKER_IMAGE}:${CIRCLE_SHA1} ${DOCKER_IMAGE}:${CIRCLE_TAG} - docker push ${DOCKER_IMAGE}:${CIRCLE_TAG} - fi - - # Tag the branch - apk add --no-cache git - tag=$(git describe --tags) || true - if [ "${tag}" != "" ]; then - docker tag ${DOCKER_IMAGE}:${CIRCLE_SHA1} ${DOCKER_IMAGE}:${tag} - docker push ${DOCKER_IMAGE}:${tag} - fi + IMAGE_NAME=$DOCKER_IMAGE BRANCH_NAME=$CIRCLE_BRANCH ./automation/build.sh diff --git a/automation/build.sh b/automation/build.sh new file mode 100755 index 0000000..255c45b --- /dev/null +++ b/automation/build.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -e + +# Input is: +# - IMAGE_NAME: the repo to push the image to, eg. resin/repository-name +# - BRANCH_NAME: eg. fix-some-bug + +VERSION=$(git describe --tags) +REVISION=$(git rev-parse --short HEAD) +BRANCH=$(echo $BRANCH_NAME | sed 's/[^a-z0-9A-Z_.-]/-/g') + +# Try pulling the old build first for caching purposes. +docker pull ${IMAGE_NAME}:${BRANCH} || docker pull ${IMAGE_NAME}:master || true + +# Build and tag +docker build --pull --tag ${IMAGE_NAME}:${REVISION} . +docker tag ${IMAGE_NAME}:${REVISION} ${IMAGE_NAME}:${BRANCH} +docker tag ${IMAGE_NAME}:${REVISION} ${IMAGE_NAME}:${VERSION} + +# Push the images +docker push ${IMAGE_NAME}:${REVISION} +docker push ${IMAGE_NAME}:${BRANCH} +docker push ${IMAGE_NAME}:${VERSION}