github.com/newrelic/newrelic-client-go@v1.1.0/scripts/release.sh (about)

     1  #!/bin/bash
     2  
     3  DEFAULT_BRANCH='main'
     4  CURRENT_GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
     5  
     6  SRCDIR=${SRCDIR:-"."}
     7  GOBIN=$(go env GOPATH)/bin
     8  VER_PACKAGE="internal/version"
     9  VER_CMD=${GOBIN}/svu
    10  VER_BUMP=${GOBIN}/gobump
    11  CHANGELOG_CMD=${GOBIN}/git-chglog
    12  CHANGELOG_FILE=CHANGELOG.md
    13  REL_CMD=${GOBIN}/goreleaser
    14  RELEASE_NOTES_FILE=${SRCDIR}/tmp/relnotes.md
    15  SPELL_CMD=${GOBIN}/misspell
    16  
    17  if [ $CURRENT_GIT_BRANCH != ${DEFAULT_BRANCH} ]; then
    18    echo "Not on ${DEFAULT_BRANCH}, skipping"
    19    exit 0
    20  fi
    21  
    22  # Compare versions
    23  VER_CURR=$(${VER_CMD} current --strip-prefix)
    24  VER_NEXT=$(${VER_CMD} next --strip-prefix)
    25  
    26  echo " "
    27  echo "Comparing tag versions..."
    28  echo "Current version: ${VER_CURR}"
    29  echo "Next version:    ${VER_NEXT}"
    30  echo " "
    31  
    32  if [ "${VER_CURR}" = "${VER_NEXT}" ]; then
    33    echo "No new version recommended, skipping"
    34    exit 0
    35  fi
    36  
    37  GIT_USER=$(git config user.name)
    38  GIT_EMAIL=$(git config user.email)
    39  
    40  if [ -z "${GIT_USER}" ]; then
    41    echo "git user.name not set"
    42    exit 1
    43  fi
    44  
    45  if [ -z "${GIT_EMAIL}" ]; then
    46    echo "git user.email not set"
    47    exit 1
    48  fi
    49  
    50  echo "Generating release for v${VER_NEXT} with git user ${GIT_USER}"
    51  
    52  # Update package version in version.go file using svu
    53  ${VER_BUMP} set ${VER_NEXT} -r -w ${VER_PACKAGE}
    54  
    55  # Auto-generate CHANGELOG updates
    56  ${CHANGELOG_CMD} --next-tag v${VER_NEXT} -o ${CHANGELOG_FILE}
    57  ${SPELL_CMD}  -source text -w ${CHANGELOG_FILE}
    58  
    59  # Commit CHANGELOG updates
    60  git add CHANGELOG.md ${VER_PACKAGE}
    61  
    62  git commit --no-verify -m "chore(release): release v${VER_NEXT}"
    63  git push --no-verify origin HEAD:${DEFAULT_BRANCH}
    64  
    65  if [ $? -ne 0 ]; then
    66    echo "Failed to push branch updates, exiting"
    67    exit 1
    68  fi
    69  
    70  # Tag and push
    71  git tag v${VER_NEXT}
    72  git push --no-verify origin HEAD:${DEFAULT_BRANCH} --tags
    73  
    74  if [ $? -ne 0 ]; then
    75    echo "Failed to push tag, exiting."
    76    exit 1
    77  fi
    78  
    79  # Generate release notes for GoReleaser to add to the GitHub release description
    80  ${CHANGELOG_CMD} -o ${RELEASE_NOTES_FILE} ${VER_NEXT} --sort semver
    81  
    82  # Correct spelling mistakes in release notes
    83  ${SPELL_CMD} -source text -w ${RELEASE_NOTES_FILE}
    84  
    85  # Publish the release
    86  ${REL_CMD} release --release-notes=${RELEASE_NOTES_FILE}