From b113ebc2832128f4a8da9262cfa906faa4882832 Mon Sep 17 00:00:00 2001 From: Eddie Webb Date: Wed, 15 Jan 2020 16:18:55 -0500 Subject: [PATCH 1/4] Added version to docker tag #542, using existing tag scheme --- .circleci/config.yml | 79 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f91812c45..fd4f733b1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,9 +1,21 @@ -version: 2 +version: 2.1 + +workflows: + build-and-deploy: + jobs: + - build + - push: + filters: + tags: + only: /^v.*/ + branches: + ignore: /.*/ jobs: build: working_directory: /go/src/go.mozilla.org/sops docker: - image: circleci/golang:1.13 + resource_class: large steps: - checkout - setup_remote_docker @@ -12,10 +24,65 @@ jobs: command: | docker build -t mozilla/sops . docker tag mozilla/sops "mozilla/sops:$CIRCLE_SHA1" + + push: + machine: true + resource_class: large + steps: + - checkout + - run: + name: semver check + command: | + curl "https://raw.githubusercontent.com/fsaintjacques/semver-tool/d66113a6803dbffca2a3830e207a6795a8516cd1/src/semver" > semver.bash + sudo mv semver.bash /usr/local/bin/semver + sudo chmod a+x /usr/local/bin/semver + MAJOR=$(semver get major ${CIRCLE_TAG#v}) + MINOR=$(semver get minor ${CIRCLE_TAG#v}) + PATCH=$(semver get patch ${CIRCLE_TAG#v}) + echo "export MAJOR=${MAJOR}" >> $BASH_ENV + echo "export MINOR=${MINOR}" >> $BASH_ENV + echo "export PATCH=${PATCH}" >> $BASH_ENV + - run: + when: on_fail + name: semver error message + command: | + cat \<< EOF + Failure Info: + + This job uses a simple semver library to ensure the TAG is a valid version to publish. + + - This should only run on workflows triggered by a tag. + - The tag name should be a semver like 'v1.2.3' + - The version should follow conventions documented at https://github.com/fsaintjacques/semver-tool + EOF - run: - name: Push containers + name: Build containers command: | - if [ "${CIRCLE_BRANCH}" == "master" ]; then - ${GOPATH}/src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "latest" - ${GOPATH}/src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "$CIRCLE_SHA1" - fi + docker build -t mozilla/sops . + - run: + name: Tag & Push containers + command: | + #latest + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "latest" + + # by sha + + echo "Tag and push mozilla/sops:$CIRCLE_SHA1" + docker tag mozilla/sops "mozilla/sops:$CIRCLE_SHA1" + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "$CIRCLE_SHA1" + + # by semver + # v1.2.3 + echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR.$PATCH" + docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR.$PATCH" + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH" + # v1.2 + echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR" + docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR" + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR" + # v1 + echo "Tag and Push mozilla/sops:v$MAJOR" + docker tag mozilla/sops "mozilla/sops:v$MAJOR" + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR" + + From f65e55e90519ad961085042e35c524672aea764b Mon Sep 17 00:00:00 2001 From: Eddie Webb Date: Sat, 18 Jan 2020 08:31:15 -0500 Subject: [PATCH 2/4] Use simple cut command for version This eliminates use of 3rd party tool but greatly simplifies supported versions. MAJOR.MINOR.PTACH Minor & Patch may be omitted ("v3", "v3.2", "v3.2.1") --- .circleci/config.yml | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fd4f733b1..7d753f902 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -33,15 +33,26 @@ jobs: - run: name: semver check command: | - curl "https://raw.githubusercontent.com/fsaintjacques/semver-tool/d66113a6803dbffca2a3830e207a6795a8516cd1/src/semver" > semver.bash - sudo mv semver.bash /usr/local/bin/semver - sudo chmod a+x /usr/local/bin/semver - MAJOR=$(semver get major ${CIRCLE_TAG#v}) - MINOR=$(semver get minor ${CIRCLE_TAG#v}) - PATCH=$(semver get patch ${CIRCLE_TAG#v}) + + MAJOR=$(echo ${CIRCLE_TAG#v} | cut -d"." -f1) + MINOR=$(echo ${CIRCLE_TAG#v} | cut -d"." -f2) + PATCH=$(echo ${CIRCLE_TAG#v} | cut -d"." -f3) echo "export MAJOR=${MAJOR}" >> $BASH_ENV echo "export MINOR=${MINOR}" >> $BASH_ENV echo "export PATCH=${PATCH}" >> $BASH_ENV + + if [ -z $MAJOR ];then + cat \<< EOF + Failure Info: + + This job uses the semver from the git TAG as the public version to publish. + + - This should only run on workflows triggered by a tag. + - The tag name should be a semver like 'v1.2.3' + - The version should follow conventions documented at https://github.com/fsaintjacques/semver-tool + EOF + exit 1 + fi - run: when: on_fail name: semver error message @@ -66,20 +77,23 @@ jobs: src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "latest" # by sha - echo "Tag and push mozilla/sops:$CIRCLE_SHA1" docker tag mozilla/sops "mozilla/sops:$CIRCLE_SHA1" src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "$CIRCLE_SHA1" # by semver # v1.2.3 - echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR.$PATCH" - docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR.$PATCH" - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH" + if [ ! -z $PATCH ];then + echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR.$PATCH" + docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR.$PATCH" + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH" + fi # v1.2 - echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR" - docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR" - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR" + if [ ! -z $MINOR ];then + echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR" + docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR" + src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR" + fi # v1 echo "Tag and Push mozilla/sops:v$MAJOR" docker tag mozilla/sops "mozilla/sops:v$MAJOR" From 75b87018745acb481a613fbbfcd8f45949216dd0 Mon Sep 17 00:00:00 2001 From: Eddie Webb Date: Sat, 18 Jan 2020 08:39:27 -0500 Subject: [PATCH 3/4] change local reference to dpeloy script --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d753f902..f8851301a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,29 +74,29 @@ jobs: name: Tag & Push containers command: | #latest - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "latest" + bin/ci/deploy_dockerhub.sh "latest" # by sha echo "Tag and push mozilla/sops:$CIRCLE_SHA1" docker tag mozilla/sops "mozilla/sops:$CIRCLE_SHA1" - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "$CIRCLE_SHA1" + bin/ci/deploy_dockerhub.sh "$CIRCLE_SHA1" # by semver # v1.2.3 if [ ! -z $PATCH ];then echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR.$PATCH" docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR.$PATCH" - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH" + bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR.$PATCH" fi # v1.2 if [ ! -z $MINOR ];then echo "Tag and Push mozilla/sops:v$MAJOR.$MINOR" docker tag mozilla/sops "mozilla/sops:v$MAJOR.$MINOR" - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR" + bin/ci/deploy_dockerhub.sh "v$MAJOR.$MINOR" fi # v1 echo "Tag and Push mozilla/sops:v$MAJOR" docker tag mozilla/sops "mozilla/sops:v$MAJOR" - src/go.mozilla.org/sops/bin/ci/deploy_dockerhub.sh "v$MAJOR" + bin/ci/deploy_dockerhub.sh "v$MAJOR" From 19e44ab46f043aa5d7fb70031f0beff7c953c617 Mon Sep 17 00:00:00 2001 From: Eddie Webb Date: Sat, 18 Jan 2020 11:29:47 -0500 Subject: [PATCH 4/4] removed duplicate error message --- .circleci/config.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f8851301a..bd95f2c8a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -33,7 +33,6 @@ jobs: - run: name: semver check command: | - MAJOR=$(echo ${CIRCLE_TAG#v} | cut -d"." -f1) MINOR=$(echo ${CIRCLE_TAG#v} | cut -d"." -f2) PATCH=$(echo ${CIRCLE_TAG#v} | cut -d"." -f3) @@ -53,19 +52,6 @@ jobs: EOF exit 1 fi - - run: - when: on_fail - name: semver error message - command: | - cat \<< EOF - Failure Info: - - This job uses a simple semver library to ensure the TAG is a valid version to publish. - - - This should only run on workflows triggered by a tag. - - The tag name should be a semver like 'v1.2.3' - - The version should follow conventions documented at https://github.com/fsaintjacques/semver-tool - EOF - run: name: Build containers command: |