From dac90f1948558a90486c0e42140ffee8fd372303 Mon Sep 17 00:00:00 2001 From: Khosrow Moossavi Date: Fri, 25 Sep 2020 12:05:10 -0400 Subject: [PATCH] chore: Enhance release scripts (#326) --- .github/workflows/release.yaml | 2 +- scripts/build/build-all-osarch.sh | 26 ++++++++++------------ scripts/release/release-note.sh | 6 ++--- scripts/release/release.sh | 37 ++++++++++++------------------- 4 files changed, 30 insertions(+), 41 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ff6be80..ca606c2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -56,7 +56,7 @@ jobs: run: | echo ${REGISTRY_PASSWORD} | docker login -u ${REGISTRY_USERNAME} --password-stdin quay.io DOCKER_TAG=${{ steps.vars.outputs.tag }} make docker push - DOCKER_TAG=latest make push + DOCKER_TAG=latest make docker push env: REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} diff --git a/scripts/build/build-all-osarch.sh b/scripts/build/build-all-osarch.sh index 89225b8..20241b7 100755 --- a/scripts/build/build-all-osarch.sh +++ b/scripts/build/build-all-osarch.sh @@ -18,48 +18,46 @@ if [ -z "${GOLDFLAGS}" ]; then exit 1 fi -PWD=$(cd $(dirname "$0") && pwd -P) +PWD=$(cd "$(dirname "$0")" && pwd -P) BUILD_DIR="${PWD}/../../${BUILD_DIR}" CGO_ENABLED=0 gox \ -verbose \ -ldflags "${GOLDFLAGS}" \ - -gcflags=-trimpath=`go env GOPATH` \ + -gcflags=-trimpath="$(go env GOPATH)" \ -os="${GOOS}" \ -arch="${GOARCH}" \ -osarch="!darwin/arm" \ - -output="${BUILD_DIR}/{{.OS}}-{{.Arch}}/{{.Dir}}" ${PWD}/../../ + -output="${BUILD_DIR}/{{.OS}}-{{.Arch}}/{{.Dir}}" "${PWD}"/../../ printf "\033[36m==> Finalize binary\033[0m\n" -for platform in $(find ${BUILD_DIR} -mindepth 1 -maxdepth 1 -type d); do - OSARCH=$(basename ${platform}) +for platform in $(find "${BUILD_DIR}" -mindepth 1 -maxdepth 1 -type d | sort -u); do + OSARCH=$(basename "${platform}") FULLNAME="${NAME}-${VERSION}-${OSARCH}" case "${OSARCH}" in "windows"*) - mv ${platform}/${NAME}.exe ${BUILD_DIR}/${FULLNAME}.exe + mv "${platform}/${NAME}.exe" "${BUILD_DIR}/${FULLNAME}.exe" printf -- "--> %15s: bin/%s\n" "${OSARCH}" "${FULLNAME}.exe" - ;; *) - mv ${platform}/${NAME} ${BUILD_DIR}/${FULLNAME} + mv "${platform}/${NAME}" "${BUILD_DIR}/${FULLNAME}" printf -- "--> %15s: bin/%s\n" "${OSARCH}" "${FULLNAME}" - ;; esac done -cd ${BUILD_DIR} -touch ${NAME}-${VERSION}.sha256sum +cd "${BUILD_DIR}" +touch "${NAME}-${VERSION}.sha256sum" for binary in $(find . -mindepth 1 -maxdepth 1 -type f | grep -v "${NAME}-${VERSION}.sha256sum" | sort); do - binary=$(basename ${binary}) + binary=$(basename "${binary}") if command -v sha256sum >/dev/null; then - sha256sum ${binary} >>${NAME}-${VERSION}.sha256sum + sha256sum "${binary}" >>"${NAME}-${VERSION}.sha256sum" elif command -v shasum >/dev/null; then - shasum -a256 ${binary} >>${NAME}-${VERSION}.sha256sum + shasum -a256 "${binary}" >>"${NAME}-${VERSION}.sha256sum" fi done diff --git a/scripts/release/release-note.sh b/scripts/release/release-note.sh index 86b804f..c8314c6 100755 --- a/scripts/release/release-note.sh +++ b/scripts/release/release-note.sh @@ -4,7 +4,7 @@ set -o errexit set -o nounset set -o pipefail -PWD=$(cd $(dirname "$0") && pwd -P) +PWD=$(cd "$(dirname "$0")" && pwd -P) # Find closest tag CLOSEST_VERSION=$(git describe --tags --abbrev=0) @@ -15,6 +15,6 @@ if ! command -v git-chglog >/dev/null ; then fi # Generate Changelog -git-chglog --config ${PWD}/../../scripts/chglog/config-release-note.yml --tag-filter-pattern v[0-9]+.[0-9]+.[0-9]+$ --output ${PWD}/../../CURRENT-RELEASE-CHANGELOG.md ${CLOSEST_VERSION} +git-chglog --config "${PWD}"/../../scripts/chglog/config-release-note.yml --tag-filter-pattern v[0-9]+.[0-9]+.[0-9]+$ --output "${PWD}"/../../CURRENT-RELEASE-CHANGELOG.md "${CLOSEST_VERSION}" -cat ${PWD}/../../CURRENT-RELEASE-CHANGELOG.md +cat "${PWD}"/../../CURRENT-RELEASE-CHANGELOG.md diff --git a/scripts/release/release.sh b/scripts/release/release.sh index 1ce9d94..18dfb71 100755 --- a/scripts/release/release.sh +++ b/scripts/release/release.sh @@ -4,7 +4,7 @@ set -o errexit set -o pipefail CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) -if [ -z "${CURRENT_BRANCH}" -o "${CURRENT_BRANCH}" != "master" ]; then +if [ -z "${CURRENT_BRANCH}" ] && [ "${CURRENT_BRANCH}" != "master" ]; then echo "Error: The current branch is '${CURRENT_BRANCH}', switch to 'master' to do the release." exit 1 fi @@ -31,61 +31,52 @@ if [ -z "${CURRENT_VERSION}" ]; then CURRENT_VERSION=$(git describe --tags --exact-match 2>/dev/null || git describe --tags 2>/dev/null || echo "v0.0.1-$(COMMIT_HASH)") fi -if [ "v${RELEASE_VERSION}" = "${CURRENT_VERSION}" ]; then +if [ "v${RELEASE_VERSION}" == "${CURRENT_VERSION}" ]; then echo "Error: provided version (v${RELEASE_VERSION}) already exists." exit 1 fi -if [ $(git describe --tags "v${RELEASE_VERSION}" 2>/dev/null) ]; then +if [ "$(git describe --tags "v${RELEASE_VERSION}" 2>/dev/null)" ]; then echo "Error: provided version (v${RELEASE_VERSION}) already exists." exit 1 fi -PWD=$(cd $(dirname "$0") && pwd -P) +PWD=$(cd "$(dirname "$0")" && pwd -P) # get closest GA tag, ignore alpha, beta and rc tags function getClosestVersion() { for t in $(git tag --sort=-creatordate); do tag="$t" - if [[ $tag == *"-alpha"* || $tag == *"-beta"* || $tag == *"-rc"* ]]; then + if [[ "$tag" == *"-alpha"* ]] || [[ "$tag" == *"-beta"* ]] || [[ "$tag" == *"-rc"* ]]; then continue fi break done - echo "$tag" | sed 's/^v//' + echo "${tag//^v/}" } CLOSEST_VERSION=$(getClosestVersion) # Bump the released version in README and version.go -sed -i -E 's|'${CLOSEST_VERSION}'|'${RELEASE_VERSION}'|g' README.md -sed -i -E 's|v'${RELEASE_VERSION}'-alpha|v'${RELEASE_VERSION}'|g' internal/version/version.go +if [[ $RELEASE_VERSION != *"-alpha"* && $RELEASE_VERSION != *"-beta"* && $RELEASE_VERSION != *"-rc"* ]]; then + sed -i -E "s|${CLOSEST_VERSION}|${RELEASE_VERSION}|g" README.md + git add README.md +fi +sed -i -E "s|v${RELEASE_VERSION}-alpha|v${RELEASE_VERSION}|g" internal/version/version.go # Commit changes printf "\033[36m==> %s\033[0m\n" "Commit changes for release version v${RELEASE_VERSION}" -git add README.md internal/version/version.go +git add internal/version/version.go git commit -m "Release version v${RELEASE_VERSION}" printf "\033[36m==> %s\033[0m\n" "Push commits for v${RELEASE_VERSION}" git push origin master # Generate Changelog -make --no-print-directory -f ${PWD}/../../Makefile changelog NEXT="--next-tag v${RELEASE_VERSION}" +make --no-print-directory -f "${PWD}"/../../Makefile changelog NEXT="--next-tag v${RELEASE_VERSION}" # Tag the release printf "\033[36m==> %s\033[0m\n" "Tag release v${RELEASE_VERSION}" git tag --annotate --message "v${RELEASE_VERSION} Release" "v${RELEASE_VERSION}" printf "\033[36m==> %s\033[0m\n" "Push tag release v${RELEASE_VERSION}" -git push origin v${RELEASE_VERSION} - -# Bump the next version in version.go -NEXT_VERSION=$(echo "${RELEASE_VERSION}" | sed 's/^v//' | awk -F'[ .]' '{print $1"."$2+1".0"}') -sed -i -E 's|v'${RELEASE_VERSION}'|v'${NEXT_VERSION}'-alpha|g' internal/version/version.go - -# Commit changes -printf "\033[36m==> %s\033[0m\n" "Bump version to v${NEXT_VERSION}-alpha" -git add internal/version/version.go -git commit -m "Bump version to v${NEXT_VERSION}-alpha" - -printf "\033[36m==> %s\033[0m\n" "Push commits for v${NEXT_VERSION}-alpha" -git push origin master +git push origin "v${RELEASE_VERSION}"