1version: 2.1 2 3workflows: 4 build-and-deploy: 5 jobs: 6 - build 7 - push: 8 filters: 9 tags: 10 only: /^v.*/ 11 branches: 12 ignore: /.*/ 13jobs: 14 build: 15 working_directory: /go/src/go.mozilla.org/sops 16 docker: 17 - image: circleci/golang:1.13 18 resource_class: large 19 steps: 20 - checkout 21 - setup_remote_docker 22 - run: 23 name: Build containers 24 command: | 25 docker build -t mozilla/sops . 26 docker tag mozilla/sops "mozilla/sops:$CIRCLE_SHA1" 27 28 push: 29 machine: true 30 resource_class: large 31 steps: 32 - checkout 33 - run: 34 name: semver check 35 command: | 36 MAJOR=$(echo ${CIRCLE_TAG#v} | cut -d"." -f1) 37 MINOR=$(echo ${CIRCLE_TAG#v} | cut -d"." -f2) 38 PATCH=$(echo ${CIRCLE_TAG#v} | cut -d"." -f3) 39 echo "export MAJOR=${MAJOR}" >> $BASH_ENV 40 echo "export MINOR=${MINOR}" >> $BASH_ENV 41 echo "export PATCH=${PATCH}" >> $BASH_ENV 42 43 if [ -z $MAJOR ];then 44 cat \<< EOF 45 Failure Info: 46 47 This job uses the semver from the git TAG as the public version to publish. 48 49 - This should only run on workflows triggered by a tag. 50 - The tag name should be a semver like 'v1.2.3' 51 - The version should follow conventions documented at https://github.com/fsaintjacques/semver-tool 52 EOF 53 exit 1 54 fi 55 - run: 56 name: Build containers 57 command: | 58 docker build -t mozilla/sops . 59 docker build -f Dockerfile.alpine -t mozilla/sops:alpine . 60 - run: 61 name: Tag & Push containers 62 command: | 63 #latest 64 bin/ci/deploy_dockerhub.sh "latest" 65 bin/ci/deploy_dockerhub.sh "alpine" 66 67 # by sha 68 echo "Tag and push mozilla/sops:$CIRCLE_SHA1" 69 docker tag mozilla/sops "mozilla/sops:$CIRCLE_SHA1" 70 bin/ci/deploy_dockerhub.sh "$CIRCLE_SHA1" 71 72 # no sha for alpine 73 74 # by semver 75 # v1.2.3 76 if [ ! -z $PATCH ];then 77 echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR.$PATCH" 78 docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR.$PATCH" 79 bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH" 80 81 echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR.$PATCH-alpine" 82 docker tag mozilla/sops:alpine "mozilla/sops:v$MAJOR.$MINOR.$PATCH-alpine" 83 bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH-alpine" 84 fi 85 # v1.2 86 if [ ! -z $MINOR ];then 87 echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR" 88 docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR" 89 bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR" 90 91 echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR-alpine" 92 docker tag mozilla/sops:alpine "mozilla/sops:v$MAJOR.$MINOR-alpine" 93 bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR-alpine" 94 fi 95 # v1 96 echo "Tag and Push mozilla/sops:v$MAJOR" 97 docker tag mozilla/sops "mozilla/sops:v$MAJOR" 98 bin/ci/deploy_dockerhub.sh "v$MAJOR" 99 100 echo "Tag and Push mozilla/sops:v$MAJOR-alpine" 101 docker tag mozilla/sops:alpine "mozilla/sops:v$MAJOR-alpine" 102 bin/ci/deploy_dockerhub.sh "v$MAJOR-alpine" 103