From 71f9a7eb64d72b9278e3db4e647f3788bdac264c Mon Sep 17 00:00:00 2001 From: Kristian Haugene Date: Sun, 2 Feb 2020 19:28:43 +0100 Subject: [PATCH] Update CircleCI config with release tag builds --- .circleci/config.yml | 156 +++++++++++++++++++++++++++++++------------ 1 file changed, 113 insertions(+), 43 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9666c7e04..c208cc2cc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,17 +1,72 @@ version: 2.1 -commands: - calculate-tag-name: - description: "Calculates the target tag name for Docker image" - parameters: - distro: - type: string - steps: - - run: - name: Calculate tag to set for the built Docker image - command: | - if [ "$CIRCLE_BRANCH" = "master" ]; then TAG_VERSION=latest; else TAG_VERSION=$CIRCLE_BRANCH; fi - if [ "<< parameters.distro >>" = "ubuntu" ]; then TAG_DISTRO=""; else TAG_DISTRO=-<< parameters.distro >>; fi - echo "export IMAGE_TAG=$TAG_VERSION$TAG_DISTRO" >> $BASH_ENV +workflows: + # Defines jobs to run when a commit is pushed to master branch + build-latest-version: + jobs: + - build-armhf-image: + context: dockerhub + filters: + branches: + only: + - master + - build-arm64-image: + context: dockerhub + filters: + branches: + only: + - master + - build-and-deploy-gh-pages: + filters: + branches: + only: master + + # Defines jobs to run when a commit is pushed to dev branch + build-dev-version: + jobs: + - build-armhf-image: + context: dockerhub + filters: + branches: + only: + - dev + - build-arm64-image: + context: dockerhub + filters: + branches: + only: + - dev + + # Defines jobs to run when a new release tag is created + build-tagged-version: + jobs: + - build-ubuntu-image: + context: dockerhub + filters: + branches: + ignore: /.*/ + tags: + only: /^\d+\.\d+.*/ + - build-alpine-image: + context: dockerhub + filters: + branches: + ignore: /.*/ + tags: + only: /^\d+\.\d+.*/ + - build-armhf-image: + context: dockerhub + filters: + branches: + ignore: /.*/ + tags: + only: /^\d+\.\d+.*/ + - build-arm64-image: + context: dockerhub + filters: + branches: + ignore: /.*/ + tags: + only: /^\d+\.\d+.*/ jobs: build-ubuntu-image: @@ -34,6 +89,26 @@ jobs: name: Push image command: docker push $IMAGE_NAME:$IMAGE_TAG + build-alpine-image: + environment: + IMAGE_NAME: haugene/transmission-openvpn + docker: + - image: circleci/buildpack-deps:stretch + steps: + - checkout + - setup_remote_docker + - calculate-tag-name: + distro: alpine + - run: + name: Build Docker image + command: docker build -t $IMAGE_NAME:$IMAGE_TAG -f Dockerfile.alpine . + - run: + name: Login to Docker Hub + command: echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin + - run: + name: Push image + command: docker push $IMAGE_NAME:$IMAGE_TAG + build-armhf-image: environment: IMAGE_NAME: haugene/transmission-openvpn @@ -98,33 +173,28 @@ jobs: name: "Build and push site" command: mkdocs gh-deploy --message "Deployed {sha} with MkDocs version {version}. [skip ci]" -workflows: - version: 2 - build-images: - jobs: - - build-ubuntu-image: - context: dockerhub - filters: - branches: - only: - - beta - - build-armhf-image: - context: dockerhub - filters: - branches: - only: - - master - - dev - - build-arm64-image: - context: dockerhub - filters: - branches: - only: - - master - - dev - documentation-update: - jobs: - - build-and-deploy-gh-pages: - filters: - branches: - only: master +commands: + calculate-tag-name: + description: "Calculates the target tag name for Docker image" + parameters: + distro: + type: string + steps: + - run: + name: Calculate tag to set for the built Docker image + command: | + if [ ! -z $CIRCLE_TAG ]; then + TAG_VERSION=$CIRCLE_TAG + elif [ "$CIRCLE_BRANCH" = "master" ]; then + TAG_VERSION=latest + else + TAG_VERSION=$CIRCLE_BRANCH; + fi + + if [ "<< parameters.distro >>" = "ubuntu" ]; then + TAG_DISTRO=""; + else + TAG_DISTRO=-<< parameters.distro >>; + fi + + echo "export IMAGE_TAG=$TAG_VERSION$TAG_DISTRO" >> $BASH_ENV