github.com/spinnaker/spin@v1.30.0/.github/workflows/release_info.sh (about)

     1  #!/bin/bash -x
     2  
     3  NEW_TAG=${GITHUB_REF/refs\/tags\//}
     4  export NEW_TAG
     5  echo "NEW_TAG=$NEW_TAG"
     6  # Glob match previous tags which should be format v1.2.3. Avoids Deck's npm tagging.
     7  PREVIOUS_TAG=$(git describe --abbrev=0 --tags "${NEW_TAG}"^ --match 'v[0-9]*')
     8  export PREVIOUS_TAG
     9  echo "PREVIOUS_TAG=$PREVIOUS_TAG"
    10  CHANGELOG=$(git log "$NEW_TAG"..."$PREVIOUS_TAG" --oneline)
    11  export CHANGELOG
    12  echo "CHANGELOG=$CHANGELOG"
    13  
    14  # Format the changelog so it's markdown compatible
    15  CHANGELOG="${CHANGELOG//$'%'/%25}"
    16  CHANGELOG="${CHANGELOG//$'\n'/%0A}"
    17  CHANGELOG="${CHANGELOG//$'\r'/%0D}"
    18  
    19  # If the previous release tag is the same as this tag the user likely cut a release (and in the process created a tag), which means we can skip the need to create a release
    20  SKIP_RELEASE=$([[ "$PREVIOUS_TAG" = "$NEW_TAG" ]] && echo "true" || echo "false")
    21  export SKIP_RELEASE
    22  
    23  # https://github.com/fsaintjacques/semver-tool/blob/master/src/semver#L5-L14
    24  NAT='0|[1-9][0-9]*'
    25  ALPHANUM='[0-9]*[A-Za-z-][0-9A-Za-z-]*'
    26  IDENT="$NAT|$ALPHANUM"
    27  FIELD='[0-9A-Za-z-]+'
    28  SEMVER_REGEX="\
    29  ^[vV]?\
    30  ($NAT)\\.($NAT)\\.($NAT)\
    31  (\\-(${IDENT})(\\.(${IDENT}))*)?\
    32  (\\+${FIELD}(\\.${FIELD})*)?$"
    33  
    34  # Used in downstream steps to determine if the release should be marked as a "prerelease" and if the build should build candidate release artifacts
    35  IS_CANDIDATE=$([[ $NEW_TAG =~ $SEMVER_REGEX && -n ${BASH_REMATCH[4]} ]] && echo "true" || echo "false")
    36  export IS_CANDIDATE
    37  
    38  # This is the version string we will pass to the build, trim off leading 'v' if present
    39  RELEASE_VERSION=$([[ $NEW_TAG =~ $SEMVER_REGEX ]] && echo "${NEW_TAG:1}" || echo "${NEW_TAG}")
    40  export RELEASE_VERSION
    41  echo "RELEASE_VERSION=$RELEASE_VERSION"