chore: Enhance release scripts (#326)

This commit is contained in:
Khosrow Moossavi
2020-09-25 12:05:10 -04:00
committed by GitHub
parent c3f3604bb0
commit dac90f1948
4 changed files with 30 additions and 41 deletions

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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

View File

@@ -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}"