Files
inbuxa-admin/tools/release-version.sh
T
jcoffey-dev 63df3d572d
ci / build (pull_request) Skipped
ci / publish (pull_request) Skipped
ci / notices (pull_request) Successful in 53s
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 2m2s
Version 27.1-rc.1: the suite's series versions
inbuxa-version.json is now 27.1-rc.1, the version the whole suite moves to.
The console shows just that: the "(base 1.0.11)" suffix named the release
the fork started from, and no upstream version is shown any more.

tools/release-version.sh holds the rule (POSIX sh, for the docker:cli
image): a release moves its series tag and :latest; a release candidate
its series' -rc tag, never :latest. Both CIs publish v27.1, v27.1.N and
v27.1-rc.N tags as well as the dated ones from before.

The weekly release cuts the next patch of the series (27.1 -> 27.1.1),
and while main is on a release candidate it says so and stops: a series
and its candidates are cut by hand.
2026-10-28 09:35:15 -07:00

44 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
# SPDX-FileCopyrightText: 2026 Coffey Labs LLC
# SPDX-License-Identifier: AGPL-3.0-only
#
# The suite's release versions, as tags and images name them: 27.1 for a
# series, 27.1.3 for its patches, 27.1-rc.1 for a release candidate. The
# server's tools/release/version.py is the same rule in its Cargo form.
#
# release-version.sh tags VERSION image tags, one per line: a release
# moves VERSION, its series and latest;
# a release candidate VERSION and
# <series>-rc, never latest
# release-version.sh prerelease VERSION exit 0 for a release candidate
# release-version.sh next VERSION the next weekly patch, or nothing
# while on a release candidate
#
# Anything else, including the old dated versions, is refused (exit 2).
# POSIX sh: it runs in the docker:cli image, which has no bash.
set -eu
usage() { sed -n '9,18p' "$0" >&2; exit 2; }
[ $# -eq 2 ] || usage
cmd=$1 v=$2
echo "$v" | grep -Eq '^[1-9][0-9]\.([1-9]|1[0-2])(\.[1-9][0-9]*|-rc\.[1-9][0-9]*)?$' \
|| { echo "$v is not YY.M, YY.M.N or YY.M-rc.N" >&2; exit 2; }
series=$(echo "$v" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/')
case $v in *-rc.*) rc=1 ;; *) rc=0 ;; esac
case $cmd in
tags)
if [ $rc = 1 ]; then printf '%s\n%s-rc\n' "$v" "$series"
elif [ "$v" = "$series" ]; then printf '%s\nlatest\n' "$v"
else printf '%s\n%s\nlatest\n' "$v" "$series"
fi ;;
prerelease) [ $rc = 1 ] ;;
next)
if [ $rc = 1 ]; then :
elif [ "$v" = "$series" ]; then echo "$series.1"
else echo "$series.$(( ${v##*.} + 1 ))"
fi ;;
*) usage ;;
esac