mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
[codex] Add stable nightly promotion gate (#962)
* Upload beta e2e spec reports to R2 * Expose beta report URLs in summary * Complete Indonesian deploy locale keys * chore: factor release workflow scripts * chore: bump packaged beta base version * test: wait for mac packaged runtime health * fix: capture mac packaged startup logs * chore: improve mac release build observability * fix: ad-hoc sign unsigned mac builds * chore: diagnose mac packaged startup * fix: relax unsigned mac launch signing * chore: improve mac launch diagnostics * chore: simplify beta mac release artifacts * fix: align packaged mac smoke launch config * fix: externalize mac daemon wasm dependency * chore: require signed stable mac releases * fix: use stable app version for nightly package builds * chore: clean release artifacts after publish * chore: publish beta reports as zip * ci: disable beta mac tools-pack cache * fix: skip mac framework binary symlinks when signing * fix: sign mac framework version bundles * ci: disable beta mac pnpm cache * chore: align stable release reports * ci: require matching nightly before stable release * ci: avoid mac pnpm cache for packaged smoke
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
for name in RELEASE_VERSION RUNNER_TEMP TOOLS_PACK_NAMESPACE; do
|
||||
if [ -z "${!name:-}" ]; then
|
||||
echo "$name is required" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
asset_suffix="${LINUX_ASSET_SUFFIX:-}"
|
||||
release_dir="$RUNNER_TEMP/release-assets"
|
||||
mkdir -p "$release_dir"
|
||||
|
||||
source_appimage="$RUNNER_TEMP/tools-pack/out/linux/namespaces/$TOOLS_PACK_NAMESPACE/builder/Open Design-$TOOLS_PACK_NAMESPACE.AppImage"
|
||||
if [ ! -f "$source_appimage" ]; then
|
||||
echo "expected AppImage not found at $source_appimage" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
versioned_appimage="open-design-${RELEASE_VERSION}${asset_suffix}-linux-x64.AppImage"
|
||||
checksum_file="$versioned_appimage.sha256"
|
||||
|
||||
cp "$source_appimage" "$release_dir/$versioned_appimage"
|
||||
(
|
||||
cd "$release_dir"
|
||||
sha256sum "$versioned_appimage" > "$checksum_file"
|
||||
)
|
||||
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
for name in CLOUDFLARE_R2_RELEASES_PUBLIC_ORIGIN RELEASE_CHANNEL RELEASE_VERSION RUNNER_TEMP TOOLS_PACK_NAMESPACE; do
|
||||
if [ -z "${!name:-}" ]; then
|
||||
echo "$name is required" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
asset_suffix="${ASSET_VERSION_SUFFIX:-}"
|
||||
mac_artifact_mode="${MAC_ARTIFACT_MODE:-dmg-and-zip}"
|
||||
release_dir="$RUNNER_TEMP/release-assets"
|
||||
mkdir -p "$release_dir"
|
||||
|
||||
case "$mac_artifact_mode" in
|
||||
dmg-only | dmg-and-zip) ;;
|
||||
*)
|
||||
echo "unsupported MAC_ARTIFACT_MODE: $mac_artifact_mode" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
source_dmg="$RUNNER_TEMP/tools-pack/out/mac/namespaces/$TOOLS_PACK_NAMESPACE/dmg/Open Design-$TOOLS_PACK_NAMESPACE.dmg"
|
||||
source_zip="$RUNNER_TEMP/tools-pack/out/mac/namespaces/$TOOLS_PACK_NAMESPACE/zip/Open Design-$TOOLS_PACK_NAMESPACE.zip"
|
||||
if [ ! -f "$source_dmg" ]; then
|
||||
echo "expected dmg not found at $source_dmg" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ "$mac_artifact_mode" != "dmg-only" ] && [ ! -f "$source_zip" ]; then
|
||||
echo "expected zip not found at $source_zip" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
versioned_dmg="open-design-${RELEASE_VERSION}${asset_suffix}-mac-arm64.dmg"
|
||||
versioned_zip="open-design-${RELEASE_VERSION}${asset_suffix}-mac-arm64.zip"
|
||||
dmg_checksum_file="$versioned_dmg.sha256"
|
||||
zip_checksum_file="$versioned_zip.sha256"
|
||||
|
||||
cp "$source_dmg" "$release_dir/$versioned_dmg"
|
||||
(
|
||||
cd "$release_dir"
|
||||
shasum -a 256 "$versioned_dmg" > "$dmg_checksum_file"
|
||||
)
|
||||
|
||||
if [ "$mac_artifact_mode" = "dmg-only" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cp "$source_zip" "$release_dir/$versioned_zip"
|
||||
(
|
||||
cd "$release_dir"
|
||||
shasum -a 256 "$versioned_zip" > "$zip_checksum_file"
|
||||
)
|
||||
|
||||
zip_sha512="$(openssl dgst -sha512 -binary "$release_dir/$versioned_zip" | openssl base64 -A)"
|
||||
zip_size="$(stat -f%z "$release_dir/$versioned_zip")"
|
||||
public_origin="${CLOUDFLARE_R2_RELEASES_PUBLIC_ORIGIN%/}"
|
||||
version_prefix="${RELEASE_VERSION_PREFIX:-$RELEASE_CHANNEL/versions/$RELEASE_VERSION$asset_suffix}"
|
||||
zip_url="$public_origin/$version_prefix/$versioned_zip"
|
||||
release_date="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
release_notes="${RELEASE_NOTES:-Open Design $RELEASE_VERSION$asset_suffix}"
|
||||
cat > "$release_dir/latest-mac.yml" <<EOF
|
||||
version: "$RELEASE_VERSION"
|
||||
files:
|
||||
- url: "$zip_url"
|
||||
sha512: "$zip_sha512"
|
||||
size: $zip_size
|
||||
path: "$zip_url"
|
||||
sha512: "$zip_sha512"
|
||||
releaseDate: "$release_date"
|
||||
releaseNotes: "$release_notes"
|
||||
EOF
|
||||
@@ -0,0 +1,52 @@
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
foreach ($name in @("CLOUDFLARE_R2_RELEASES_PUBLIC_ORIGIN", "RELEASE_CHANNEL", "RELEASE_VERSION", "RUNNER_TEMP", "TOOLS_PACK_NAMESPACE")) {
|
||||
if ([string]::IsNullOrWhiteSpace([Environment]::GetEnvironmentVariable($name))) {
|
||||
throw "$name is required"
|
||||
}
|
||||
}
|
||||
|
||||
$assetSuffix = if ($null -eq $env:WINDOWS_ASSET_SUFFIX) { "" } else { $env:WINDOWS_ASSET_SUFFIX }
|
||||
$versionPathSuffix = if ($null -eq $env:ASSET_VERSION_SUFFIX) { "" } else { $env:ASSET_VERSION_SUFFIX }
|
||||
$releaseDir = Join-Path $env:RUNNER_TEMP "release-assets"
|
||||
New-Item -ItemType Directory -Force -Path $releaseDir | Out-Null
|
||||
|
||||
$sourceInstaller = Join-Path $env:RUNNER_TEMP "tools-pack/out/win/namespaces/${env:TOOLS_PACK_NAMESPACE}/builder/Open Design-${env:TOOLS_PACK_NAMESPACE}-setup.exe"
|
||||
if (!(Test-Path $sourceInstaller)) {
|
||||
throw "expected installer not found at $sourceInstaller"
|
||||
}
|
||||
|
||||
$versionedInstaller = "open-design-${env:RELEASE_VERSION}$assetSuffix-win-x64-setup.exe"
|
||||
$checksumFile = "$versionedInstaller.sha256"
|
||||
Copy-Item $sourceInstaller (Join-Path $releaseDir $versionedInstaller)
|
||||
|
||||
$installerPath = Join-Path $releaseDir $versionedInstaller
|
||||
$hash = (Get-FileHash -Path $installerPath -Algorithm SHA256).Hash.ToLowerInvariant()
|
||||
"$hash $versionedInstaller" | Set-Content -Path (Join-Path $releaseDir $checksumFile)
|
||||
$installerBytes = [System.IO.File]::ReadAllBytes($installerPath)
|
||||
$installerSha512 = [System.Convert]::ToBase64String([System.Security.Cryptography.SHA512]::Create().ComputeHash($installerBytes))
|
||||
$installerSize = (Get-Item $installerPath).Length
|
||||
$publicOrigin = ($env:CLOUDFLARE_R2_RELEASES_PUBLIC_ORIGIN).TrimEnd("/")
|
||||
$versionPrefix = if ([string]::IsNullOrWhiteSpace($env:RELEASE_VERSION_PREFIX)) {
|
||||
"${env:RELEASE_CHANNEL}/versions/${env:RELEASE_VERSION}$versionPathSuffix"
|
||||
} else {
|
||||
$env:RELEASE_VERSION_PREFIX
|
||||
}
|
||||
$installerUrl = "$publicOrigin/$versionPrefix/$versionedInstaller"
|
||||
$releaseDate = [DateTime]::UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")
|
||||
$releaseNotes = if ([string]::IsNullOrWhiteSpace($env:RELEASE_NOTES)) {
|
||||
"Open Design ${env:RELEASE_VERSION}$assetSuffix"
|
||||
} else {
|
||||
$env:RELEASE_NOTES
|
||||
}
|
||||
@(
|
||||
"version: `"${env:RELEASE_VERSION}`""
|
||||
'files:'
|
||||
" - url: `"$installerUrl`""
|
||||
" sha512: `"$installerSha512`""
|
||||
" size: $installerSize"
|
||||
"path: `"$installerUrl`""
|
||||
"sha512: `"$installerSha512`""
|
||||
"releaseDate: `"$releaseDate`""
|
||||
"releaseNotes: `"$releaseNotes`""
|
||||
) | Set-Content -Path (Join-Path $releaseDir "latest.yml")
|
||||
Reference in New Issue
Block a user