Skip to content

Commit 1f52e9a

Browse files
fweikertcopybara-github
authored andcommitted
Support rolling releases in Bazel release scripts.
PiperOrigin-RevId: 376692239
1 parent 541cb3b commit 1f52e9a

File tree

3 files changed

+49
-16
lines changed

3 files changed

+49
-16
lines changed

scripts/ci/build.sh

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ function generate_email() {
8989
RELEASE_CANDIDATE_URL="https://releases.bazel.build/%release_name%/rc%rc%/index.html"
9090
RELEASE_URL="https://github.com/bazelbuild/bazel/releases/tag/%release_name%"
9191

92+
if [ "$(is_rolling_release)" -eq 1 ]; then
93+
echo "No emails for rolling releases"
94+
return 0
95+
fi
96+
9297
local release_name=$(get_release_name)
9398
local rc=$(get_release_candidate)
9499
local args=(
@@ -146,7 +151,13 @@ function release_to_github() {
146151
local github_token="$(gsutil cat gs://bazel-trusted-encrypted-secrets/github-trusted-token.enc | \
147152
gcloud kms decrypt --project bazel-public --location global --keyring buildkite --key github-trusted-token --ciphertext-file - --plaintext-file -)"
148153

149-
GITHUB_TOKEN="${github_token}" github-release "bazelbuild/bazel" "${release_name}" "" "$(get_release_page)" "${artifact_dir}/*"
154+
local cmd = "GITHUB_TOKEN=\"${github_token}\" github-release \"bazelbuild/bazel\" \"${release_name}\" \"\" \"$(get_release_page)\" \"${artifact_dir}/*\""
155+
156+
if [ "$(is_rolling_release)" -eq 1 ]; then
157+
eval "${cmd} -prerelease"
158+
else
159+
eval "${cmd}"
160+
fi
150161
fi
151162
}
152163

@@ -182,7 +193,10 @@ function release_to_gcs() {
182193

183194
if [ -n "${release_name}" ]; then
184195
local release_path="${release_name}/release"
185-
if [ -n "${rc}" ]; then
196+
if [ "$(is_rolling_release)" -eq 1 ]; then
197+
# Store rolling releases and their RCs in the same directory (for simplicity)
198+
release_path="$(get_lts_name)/rolling/$(get_full_release_name)"
199+
elif [ -n "${rc}" ]; then
186200
release_path="${release_name}/rc${rc}"
187201
fi
188202
create_index_html "${artifact_dir}" > "${artifact_dir}/index.html"
@@ -400,13 +414,16 @@ function deploy_release() {
400414
gpg --no-tty --detach-sign -u "${APT_GPG_KEY_ID}" "${file}"
401415
done
402416

403-
apt_working_dir="$(mktemp -d --tmpdir)"
404-
echo "apt_working_dir = ${apt_working_dir}"
405-
mkdir "${apt_working_dir}/${release_name}"
406-
cp "${artifact_dir}/bazel_${release_label}-linux-x86_64.deb" "${apt_working_dir}/${release_name}"
407-
cp "${artifact_dir}/bazel_${release_label}.dsc" "${apt_working_dir}/${release_name}"
408-
cp "${artifact_dir}/bazel_${release_label}.tar.gz" "${apt_working_dir}/${release_name}"
409-
release_to_apt "${apt_working_dir}"
417+
if [ "$(is_rolling_release)" -eq 0 ]; then
418+
apt_working_dir="$(mktemp -d --tmpdir)"
419+
echo "apt_working_dir = ${apt_working_dir}"
420+
mkdir "${apt_working_dir}/${release_name}"
421+
cp "${artifact_dir}/bazel_${release_label}-linux-x86_64.deb" "${apt_working_dir}/${release_name}"
422+
cp "${artifact_dir}/bazel_${release_label}.dsc" "${apt_working_dir}/${release_name}"
423+
cp "${artifact_dir}/bazel_${release_label}.tar.gz" "${apt_working_dir}/${release_name}"
424+
release_to_apt "${apt_working_dir}"
425+
fi
426+
410427

411428
gcs_working_dir="$(mktemp -d --tmpdir)"
412429
echo "gcs_working_dir = ${gcs_working_dir}"
@@ -419,3 +436,4 @@ function deploy_release() {
419436
rm -f "${github_working_dir}/bazel_${release_label}"*.{dsc,tar.gz}{,.sha256,.sig}
420437
release_to_github "${github_working_dir}"
421438
}
439+

scripts/release/common.sh

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,24 @@ function get_release_candidate() {
6262

6363
# Extract the release name from the git branch name
6464
function get_release_name() {
65-
# Match branch name release-X.X.X-rcY and return X.X.X
66-
# or match tag name X.X.X and return X.X.X
67-
git_get_branch 2>/dev/null | grep -Po "(?<=release-)([0-9]|\.)*(?=rc)" || git_get_tag | grep -Po "^([0-9]|\.)*$" || true
65+
# Match branch name release-X.X.X[-pre.XXXXXXXX.X]rcY and return X.X.X[-pre.XXXXXXXX.X]
66+
# or match tag name X.X.X[-pre.XXXXXXXX.X] and return X.X.X[-pre.XXXXXXXX.X]
67+
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
68+
}
69+
70+
# Returns whether this is a rolling release (or an RCs of one)
71+
function is_rolling_release() {
72+
if [[ "$(get_release_name)" =~ [0-9]+\.[0-9]+\.[0-9]+-pre\.[0-9]{8}\.[0-9]+(\.[0-9]+)?$ ]]; then
73+
echo 1
74+
else
75+
echo 0
76+
fi
77+
}
78+
79+
# Returns the name of the LTS release that belongs to the current rolling release
80+
function get_lts_name() {
81+
local release_name="$(get_release_name)"
82+
echo "${release_name}" | grep -oE "^([0-9]+\.[0-9]+\.[0-9]+)"
6883
}
6984

7085
# Get the list of commit hashes between two revisions

scripts/release/relnotes.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,16 +303,16 @@ function generate_release_message() {
303303
}
304304

305305
# Returns the release notes for the CHANGELOG.md taken from either from
306-
# the notes for a release candidate or from the commit message for a
306+
# the notes for a release candidate/rolling release, or from the commit message for a
307307
# full release.
308308
function get_full_release_notes() {
309309
local release_name="$(get_full_release_name "$@")"
310310

311-
if [[ "${release_name}" =~ rc[0-9]+$ ]]; then
312-
# Release candidate, we need to generate from the notes
311+
if [[ "${release_name}" =~ rc[0-9]+$ ]] || [[ "$(is_rolling_release)" -eq 1 ]]; then
312+
# Release candidate or rolling release -> generate from the notes
313313
generate_release_message "${release_name}" "$@"
314314
else
315-
# Full release, returns the commit message
315+
# Full LTS release -> return the commit message
316316
git_commit_msg "$@"
317317
fi
318318
}

0 commit comments

Comments
 (0)