From 729cd8fda4864c8054e97f91361a8eb649d41db1 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Sun, 27 Nov 2022 22:42:52 +0100 Subject: [PATCH] build: add release helper scripts --- scripts/rel/check-chart-vsn.sh | 35 ++++++ scripts/rel/cut.sh | 214 +++++++++++++++++++++++++++++++++ scripts/rel/sync-remotes.sh | 156 ++++++++++++++++++++++++ 3 files changed, 405 insertions(+) create mode 100755 scripts/rel/check-chart-vsn.sh create mode 100755 scripts/rel/cut.sh create mode 100755 scripts/rel/sync-remotes.sh diff --git a/scripts/rel/check-chart-vsn.sh b/scripts/rel/check-chart-vsn.sh new file mode 100755 index 000000000..81ba32413 --- /dev/null +++ b/scripts/rel/check-chart-vsn.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ "${DEBUG:-}" = 1 ]; then + set -x +fi + +# ensure dir +cd -P -- "$(dirname -- "$0")/../.." + +PROFILE="$1" +CHART_FILE="deploy/charts/${PROFILE}/Chart.yaml" + +if [ ! -f "$CHART_FILE" ]; then + echo "Chart file $CHART_FILE is not found" + echo "Current working dir: $(pwd)" + exit 1 +fi + +CHART_VSN="$(grep -oE '^version:.*' "$CHART_FILE" | cut -d ':' -f 2 | tr -d ' ')" +APP_VSN="$(grep -oE '^appVersion:.*' "$CHART_FILE" | cut -d ':' -f 2 | tr -d ' ')" + +if [ "$CHART_VSN" != "$APP_VSN" ]; then + echo "Chart version and app version mismatch in $CHART_FILE" + exit 2 +fi + +PKG_VSN="$(./pkg-vsn.sh "$PROFILE" | cut -d '-' -f 1)" + +if [ "$CHART_VSN" != "$PKG_VSN" ]; then + echo "Chart version in $CHART_FILE is not in sync with release version." + echo "Chart version: $CHART_VSN" + echo "Release version: $PKG_VSN" + exit 3 +fi diff --git a/scripts/rel/cut.sh b/scripts/rel/cut.sh new file mode 100755 index 000000000..d28955bca --- /dev/null +++ b/scripts/rel/cut.sh @@ -0,0 +1,214 @@ +#!/usr/bin/env bash + +## cut a new 5.x release for EMQX (opensource or enterprise). + +set -euo pipefail + +if [ "${DEBUG:-}" = 1 ]; then + set -x +fi + +# ensure dir +cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." + +usage() { + cat </dev/null | xargs -0)" + for c in $CHECKS; do + logmsg "Executing $c" + $c + done +fi + +if [ "$DRYRUN" = 'yes' ]; then + logmsg "Release tag is ready to be created with command: git tag $TAG" +else + git tag "$TAG" + logmsg "$TAG is created OK." +fi diff --git a/scripts/rel/sync-remotes.sh b/scripts/rel/sync-remotes.sh new file mode 100755 index 000000000..dda910785 --- /dev/null +++ b/scripts/rel/sync-remotes.sh @@ -0,0 +1,156 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# ensure dir +cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." + +BASE_BRANCHES=( 'release-50' 'master' ) + +usage() { + cat <