chore: docker-latest tag can be create automatically in cut.sh

This commit is contained in:
Ivan Dyachkov 2023-03-01 16:57:42 +01:00
parent b04f7ecccf
commit 7a154e4d58
3 changed files with 68 additions and 36 deletions

View File

@ -43,9 +43,10 @@ jobs:
- name: Get profiles to build
id: get_profile
env:
INPUTS_PROFILE: ${{ github.event.inputs.profile }}
run: |
cd source
tag=${{ github.ref }}
# tag docker-latest-ce or docker-latest-ee
if git describe --tags --exact --match 'docker-latest-*' 2>/dev/null; then
echo 'is_latest=true due to docker-latest-* tag'
@ -57,25 +58,21 @@ jobs:
echo 'is_latest=false'
is_latest=false
fi
if git describe --tags --match "[v|e]*" --exact; then
# resolve profile
if git describe --tags --match "v*" --exact; then
echo "This is an exact git tag, will publish images"
is_exact='true'
PROFILE=emqx
elif git describe --tags --match "e*" --exact; then
echo "This is an exact git tag, will publish images"
is_exact='true'
PROFILE=emqx-enterprise
else
echo "This is NOT an exact git tag, will not publish images"
is_exact='false'
fi
case $tag in
refs/tags/v*)
PROFILE='emqx'
EDITION='Opensource'
;;
refs/tags/e*)
PROFILE=emqx-enterprise
EDITION='Enterprise'
;;
*)
PROFILE=${{ github.event.inputs.profile }}
case "$PROFILE" in
case "${PROFILE:-$INPUTS_PROFILE}" in
emqx)
EDITION='Opensource'
;;
@ -87,8 +84,7 @@ jobs:
exit 1
;;
esac
;;
esac
VSN="$(./pkg-vsn.sh "$PROFILE")"
echo "Building emqx/$PROFILE:$VSN image (latest=$is_latest)"
echo "Push = $is_exact"

View File

@ -20,15 +20,23 @@ RELEASE_GIT_TAG is a 'v*' or 'e*' tag for example:
options:
-h|--help: Print this usage.
-b|--base: Specify the current release base branch, can be one of
release-50
NOTE: this option should be used when --dryrun.
--dryrun: Do not actually create the git tag.
--skip-appup: Skip checking appup
Useful when you are sure that appup is already updated'
--prev-tag: Provide the prev tag to automatically generate changelogs
--prev-tag <tag>: Provide the prev tag to automatically generate changelogs
If this option is absent, the tag found by git describe will be used
--docker-latest: Set this option to assign :latest tag on the corresponding docker image
in addition to regular :<version> one
NOTE: For 5.0 series the current working branch must be 'release-50' for opensource edition
and 'release-e50' for enterprise edition.
--.--[ master ]---------------------------.-----------.---
@ -45,18 +53,21 @@ logmsg() {
}
TAG="${1:-}"
DOCKER_LATEST_TAG=
case "$TAG" in
v*)
TAG_PREFIX='v'
PROFILE='emqx'
SKIP_APPUP='yes'
DOCKER_LATEST_TAG='docker-latest-ce'
;;
e*)
TAG_PREFIX='e'
PROFILE='emqx-enterprise'
#TODO change to no when we are ready to support hot-upgrade
SKIP_APPUP='yes'
DOCKER_LATEST_TAG='docker-latest-ee'
;;
-h|--help)
usage
@ -72,6 +83,7 @@ esac
shift 1
DRYRUN='no'
DOCKER_LATEST='no'
while [ "$#" -gt 0 ]; do
case $1 in
-h|--help)
@ -99,6 +111,10 @@ while [ "$#" -gt 0 ]; do
PREV_TAG="$1"
shift
;;
--docker-latest)
DOCKER_LATEST='yes'
shift
;;
*)
logerr "Unknown option $1"
exit 1
@ -180,11 +196,11 @@ assert_release_version() {
assert_release_version "$TAG"
## Check if all upstream branches are merged
if [ -z "${BASE_BR:-}" ]; then
./scripts/rel/sync-remotes.sh
else
./scripts/rel/sync-remotes.sh --base "$BASE_BR"
fi
SYNC_REMOTES_ARGS=
[ -n "${BASE_BR:-}" ] && SYNC_REMOTES_ARGS="--base $BASE_BR $SYNC_REMOTES_ARGS"
[ "$DRYRUN" = 'yes' ] && SYNC_REMOTES_ARGS="--dryrun $SYNC_REMOTES_ARGS"
# shellcheck disable=SC2086
./scripts/rel/sync-remotes.sh $SYNC_REMOTES_ARGS
## Check if the Chart versions are in sync
./scripts/rel/check-chart-vsn.sh "$PROFILE"
@ -231,6 +247,9 @@ generate_changelog () {
if [ "$DRYRUN" = 'yes' ]; then
logmsg "Release tag is ready to be created with command: git tag $TAG"
if [ "$DOCKER_LATEST" = 'yes' ]; then
logmsg "Docker latest tag is ready to be created with command: git tag --force $DOCKER_LATEST_TAG"
fi
else
case "$TAG" in
*rc*)
@ -252,4 +271,8 @@ else
esac
git tag "$TAG"
logmsg "$TAG is created OK."
if [ "$DOCKER_LATEST" = 'yes' ]; then
git tag --force "$DOCKER_LATEST_TAG"
logmsg "$DOCKER_LATEST_TAG is created OK."
fi
fi

View File

@ -33,6 +33,10 @@ options:
Without this option, the script executes 'git merge' command
with '--ff-only' option which conveniently pulls remote
updates if there is any, and fails when fast-forward is not possible
--dryrun:
Do not perform merge. Run the checks, fetch from remote,
and show what's going to happen.
EOF
}
@ -48,6 +52,7 @@ logmsg() {
}
INTERACTIVE='no'
DRYRUN='no'
while [ "$#" -gt 0 ]; do
case $1 in
-h|--help)
@ -63,6 +68,10 @@ while [ "$#" -gt 0 ]; do
BASE_BRANCH="$1"
shift
;;
--dryrun)
shift
DRYRUN='yes'
;;
*)
logerr "Unknown option $1"
exit 1
@ -151,6 +160,10 @@ upstream_branches() {
}
for remote_ref in $(upstream_branches "$BASE_BRANCH"); do
if [ "$DRYRUN" = 'yes' ]; then
logmsg "Merge with this command: git merge $MERGE_OPTS $remote_ref"
else
logmsg "Merging $remote_ref"
git merge $MERGE_OPTS "$remote_ref"
fi
done