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
 }