Re-use the existing bundle steps for nightly too (#41699)

One of the reasons we didn't spot that we were missing the telemetry env
vars for the production builds was that nightly (which was working) had
its own set of build steps. This re-uses those and pushes the env vars
down from the workflow to the job.

It also fixes nightly releases to upload all-in-one go so that all
platforms update in sync.

Closes #41655

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin
2025-11-03 12:29:22 -07:00
committed by GitHub
parent 5fc54986c7
commit 4da5675920
13 changed files with 839 additions and 942 deletions
+1 -6
View File
@@ -170,12 +170,7 @@ cp "assets/licenses.md" "${zed_dir}/licenses.md"
# Create archive out of everything that's in the temp directory
arch=$(uname -m)
target="linux-${arch}"
if [[ "$channel" == "dev" ]]; then
archive="zed-${commit}-${target}.tar.gz"
else
archive="zed-${target}.tar.gz"
fi
archive="zed-linux-${arch}.tar.gz"
rm -rf "${archive}"
remove_match="zed(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz"
+5 -5
View File
@@ -70,12 +70,12 @@ target_triple=${host_line#*: }
if [[ $# -gt 0 && -n "$1" ]]; then
target_triple="$1"
fi
remote_server_arch=""
arch_suffix=""
if [[ "$target_triple" = "x86_64-apple-darwin" ]]; then
remote_server_arch="x86_64"
arch_suffix="x86_64"
elif [[ "$target_triple" = "aarch64-apple-darwin" ]]; then
remote_server_arch="aarch64"
arch_suffix="aarch64"
else
echo "Unsupported architecture $target_triple"
exit 1
@@ -232,7 +232,7 @@ function sign_app_binaries() {
else
dmg_target_directory="target/${target_triple}/${target_dir}"
dmg_source_directory="${dmg_target_directory}/dmg"
dmg_file_path="${dmg_target_directory}/Zed.dmg"
dmg_file_path="${dmg_target_directory}/Zed-${arch_suffix}.dmg"
xcode_bin_dir_path="$(xcode-select -p)/usr/bin"
rm -rf ${dmg_source_directory}
@@ -310,4 +310,4 @@ cp target/${target_triple}/${target_dir}/cli "${app_path}/Contents/MacOS/cli"
sign_app_binaries
sign_binary "target/$target_triple/release/remote_server"
gzip -f --stdout --best target/$target_triple/release/remote_server > target/zed-remote-server-macos-$remote_server_arch.gz
gzip -f --stdout --best target/$target_triple/release/remote_server > target/zed-remote-server-macos-$arch_suffix.gz
+6 -63
View File
@@ -1,75 +1,18 @@
#!/usr/bin/env bash
# Based on the template in: https://docs.digitalocean.com/reference/api/spaces-api/
bash -euo pipefail
source script/lib/blob-store.sh
allowed_targets=("linux-targz" "macos" "freebsd")
is_allowed_target() {
for val in "${allowed_targets[@]}"; do
if [[ "$1" == "$val" ]]; then
return 0
fi
done
return 1
}
allowed_arch=("x86_64" "aarch64")
is_allowed_arch() {
for val in "${allowed_arch[@]}"; do
if [[ "$1" == "$val" ]]; then
return 0
fi
done
return 1
}
if is_allowed_target "$1"; then
target="$1"
else
echo "Error: Target '$1' is not allowed"
echo "Usage: $0 [${allowed_targets[*]}] {arch}"
exit 1
fi
if is_allowed_arch "$2"; then
arch="$2"
else
echo "Error: Arch '$2' is not allowed"
echo "Usage: $0 $1 [${allowed_arch[*]}]"
exit 1
fi
echo "Uploading nightly for target: $target $arch"
bucket_name="zed-nightly-host"
sha=$(git rev-parse HEAD)
echo ${sha} > target/latest-sha
find target -type f -name "zed-remote-server-*.gz" -print0 | while IFS= read -r -d '' file_to_upload; do
for file_to_upload in ./release-artifacts/*; do
[ -f "$file_to_upload" ] || continue
upload_to_blob_store $bucket_name "$file_to_upload" "nightly/$(basename "$file_to_upload")"
upload_to_blob_store $bucket_name "$file_to_upload" "${GITHUB_SHA}/$(basename "$file_to_upload")"
rm -f "$file_to_upload"
done
case "$target" in
macos)
upload_to_blob_store $bucket_name "target/$arch-apple-darwin/release/Zed.dmg" "nightly/Zed-$arch.dmg"
upload_to_blob_store $bucket_name "target/latest-sha" "nightly/latest-sha"
rm -f "target/$arch-apple-darwin/release/Zed.dmg" "target/release/Zed.dmg"
rm -f "target/latest-sha"
;;
linux-targz)
find . -type f -name "zed-*.tar.gz" -print0 | while IFS= read -r -d '' file_to_upload; do
upload_to_blob_store $bucket_name "$file_to_upload" "nightly/$(basename "$file_to_upload")"
rm -f "$file_to_upload"
done
upload_to_blob_store $bucket_name "target/latest-sha" "nightly/latest-sha-linux-targz"
rm -f "target/latest-sha"
;;
freebsd)
echo "No freebsd client build (yet)."
;;
*)
echo "Error: Unknown target '$target'"
exit 1
;;
esac
sha=$(git rev-parse HEAD)
echo -n ${sha} > ./release-artifacts/latest-sha
upload_to_blob_store $bucket_name "release-artifacts/latest-sha" "nightly/latest-sha"