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}