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}