mirror of
https://github.com/terraform-docs/terraform-docs.git
synced 2026-03-27 04:48:33 +07:00
chore: Enhance release scripts (#326)
This commit is contained in:
2
.github/workflows/release.yaml
vendored
2
.github/workflows/release.yaml
vendored
@@ -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 }}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user