github.com/argoproj/argo-cd/v2@v2.10.9/hack/trigger-release.sh (about) 1 #!/usr/bin/env bash 2 3 # This script requires bash shell - sorry. 4 5 NEW_TAG="${1}" 6 GIT_REMOTE="${2}" 7 8 set -ue 9 10 if test "${NEW_TAG}" = "" -o "${GIT_REMOTE}" = ""; then 11 echo "!! Usage: $0 <release tag> <remote>" >&2 12 exit 1 13 fi 14 15 # Target (version) tag must match version scheme vMAJOR.MINOR.PATCH with an 16 # optional pre-release tag. 17 if ! echo "${NEW_TAG}" | egrep -q '^v[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)*$'; then 18 echo "!! Malformed version tag: '${NEW_TAG}', must match 'vMAJOR.MINOR.PATCH(-rcX)'" >&2 19 exit 1 20 fi 21 22 # Check whether we are in correct branch of local repository 23 RELEASE_BRANCH="${NEW_TAG%\.[0-9]*}" 24 RELEASE_BRANCH="release-${RELEASE_BRANCH#*v}" 25 26 currentBranch=$(git branch --show-current) 27 if test "$currentBranch" != "${RELEASE_BRANCH}"; then 28 echo "!! Please checkout branch '${RELEASE_BRANCH}' (currently in branch: '${currentBranch}')" >&2 29 exit 1 30 fi 31 32 echo ">> Working in release branch '${RELEASE_BRANCH}'" 33 34 echo ">> Ensuring release branch is up to date." 35 # make sure release branch is up to date 36 git pull ${GIT_REMOTE} ${RELEASE_BRANCH} 37 38 # Check for target (version) tag in local repo 39 if git tag -l | grep -q -E "^${NEW_TAG}$"; then 40 echo "!! Target version tag '${NEW_TAG}' already exists in local repository" >&2 41 exit 1 42 fi 43 44 # Check for target (version) tag in remote repo 45 if git ls-remote ${GIT_REMOTE} refs/tags/${NEW_TAG} | grep -q -E "${NEW_TAG}$"; then 46 echo "!! Target version tag '${NEW_TAG}' already exists in remote '${GIT_REMOTE}'" >&2 47 exit 1 48 fi 49 50 echo ">> Creating new release '${NEW_TAG}' by pushing '${NEW_TAG}' to '${GIT_REMOTE}'" 51 52 # Create new tag in local repository 53 git tag ${NEW_TAG} 54 55 # Push the new tag to remote repository 56 git push ${GIT_REMOTE} ${NEW_TAG}