Support rolling releases in Bazel release scripts.
PiperOrigin-RevId: 376692239
diff --git a/scripts/release/common.sh b/scripts/release/common.sh
index 240171f..5035e35 100755
--- a/scripts/release/common.sh
+++ b/scripts/release/common.sh
@@ -62,9 +62,24 @@
# Extract the release name from the git branch name
function get_release_name() {
- # Match branch name release-X.X.X-rcY and return X.X.X
- # or match tag name X.X.X and return X.X.X
- git_get_branch 2>/dev/null | grep -Po "(?<=release-)([0-9]|\.)*(?=rc)" || git_get_tag | grep -Po "^([0-9]|\.)*$" || true
+ # Match branch name release-X.X.X[-pre.XXXXXXXX.X]rcY and return X.X.X[-pre.XXXXXXXX.X]
+ # or match tag name X.X.X[-pre.XXXXXXXX.X] and return X.X.X[-pre.XXXXXXXX.X]
+ git_get_branch 2>/dev/null | grep -Po "(?<=release-)([0-9]|\.)*(-pre\.[0-9]{8}(\.[0-9]+){1,2})?(?=rc)" || git_get_tag | grep -Po "^([0-9]|\.)*(-pre\.[0-9]{8}(\.[0-9]+){1,2})?$" || true
+}
+
+# Returns whether this is a rolling release (or an RCs of one)
+function is_rolling_release() {
+ if [[ "$(get_release_name)" =~ [0-9]+\.[0-9]+\.[0-9]+-pre\.[0-9]{8}\.[0-9]+(\.[0-9]+)?$ ]]; then
+ echo 1
+ else
+ echo 0
+ fi
+}
+
+# Returns the name of the LTS release that belongs to the current rolling release
+function get_lts_name() {
+ local release_name="$(get_release_name)"
+ echo "${release_name}" | grep -oE "^([0-9]+\.[0-9]+\.[0-9]+)"
}
# Get the list of commit hashes between two revisions
diff --git a/scripts/release/relnotes.sh b/scripts/release/relnotes.sh
index b0182f2..8e2986a 100755
--- a/scripts/release/relnotes.sh
+++ b/scripts/release/relnotes.sh
@@ -303,16 +303,16 @@
}
# Returns the release notes for the CHANGELOG.md taken from either from
-# the notes for a release candidate or from the commit message for a
+# the notes for a release candidate/rolling release, or from the commit message for a
# full release.
function get_full_release_notes() {
local release_name="$(get_full_release_name "$@")"
- if [[ "${release_name}" =~ rc[0-9]+$ ]]; then
- # Release candidate, we need to generate from the notes
+ if [[ "${release_name}" =~ rc[0-9]+$ ]] || [[ "$(is_rolling_release)" -eq 1 ]]; then
+ # Release candidate or rolling release -> generate from the notes
generate_release_message "${release_name}" "$@"
else
- # Full release, returns the commit message
+ # Full LTS release -> return the commit message
git_commit_msg "$@"
fi
}