Fix legacy ota1 OTA upload broken by the denis cutover (#11290)

This commit is contained in:
Austin McKinley
2026-07-26 14:42:38 -07:00
committed by GitHub
parent 66ec855efc
commit b662cd43b5
2 changed files with 37 additions and 15 deletions
+22 -14
View File
@@ -204,20 +204,19 @@ jobs:
SENTRY_DIST=${{ steps.env.outputs.bundle-identifier }} SENTRY_DIST=${{ steps.env.outputs.bundle-identifier }}
pnpm export pnpm export
- name: 📦 Package Bundle and 🚀 Deploy # denis on EKS has been the sole origin for updates.bsky.app since
if: ${{ !steps.fingerprint.outputs.includes-changes && # 2026-07-26, so it publishes FIRST: it is the path that actually serves
!steps.version.outputs.version-changed }} # clients. The legacy ota1 upload runs after it, and exists only so that
run: pnpm use-build-number bash scripts/bundleUpdate.sh # rolling the Bunny origin back to ota1 would find current bundles there.
env: #
DENIS_API_KEY: ${{ secrets.DENIS_API_KEY }} # The ordering is load-bearing, not cosmetic. While the legacy step ran
RUNTIME_VERSION: ${{ inputs.runtimeVersion }} # first, its failure skipped these steps and nothing reached EITHER origin
CHANNEL_NAME: ${{ inputs.channel || 'testflight' }} # -- the dual-write took down the working path with it. Both steps are
# still required to pass, so a stale ota1 remains a loud failure, but the
# The three steps below dual-write the same exported bundle to the new # publish that serves users has already landed before the legacy one can
# denis/S3 service alongside the legacy ota1 upload above. This is a # fail.
# deliberate temporary dual-write during the ota1 -> denis migration: #
# both paths run and both must succeed. The legacy step above and this # Both halves are removed together when ota1 is decommissioned (Phase 5).
# block are removed together once denis is the sole origin (Phase 5).
- name: ☁️ Configure AWS credentials (denis) - name: ☁️ Configure AWS credentials (denis)
if: ${{ !steps.fingerprint.outputs.includes-changes && if: ${{ !steps.fingerprint.outputs.includes-changes &&
!steps.version.outputs.version-changed }} !steps.version.outputs.version-changed }}
@@ -243,6 +242,15 @@ jobs:
RUNTIME_VERSION: ${{ inputs.runtimeVersion }} RUNTIME_VERSION: ${{ inputs.runtimeVersion }}
CHANNEL_NAME: ${{ inputs.channel || 'testflight' }} CHANNEL_NAME: ${{ inputs.channel || 'testflight' }}
- name: 📦 Package Bundle and 🚀 Deploy (legacy ota1)
if: ${{ !steps.fingerprint.outputs.includes-changes &&
!steps.version.outputs.version-changed }}
run: pnpm use-build-number bash scripts/bundleUpdate.sh
env:
DENIS_API_KEY: ${{ secrets.DENIS_API_KEY }}
RUNTIME_VERSION: ${{ inputs.runtimeVersion }}
CHANNEL_NAME: ${{ inputs.channel || 'testflight' }}
buildIfNecessaryIOS: buildIfNecessaryIOS:
name: Build and Submit iOS name: Build and Submit iOS
needs: [bundleDeploy] needs: [bundleDeploy]
+15 -1
View File
@@ -15,7 +15,21 @@ fi
cd bundleTempDir || exit cd bundleTempDir || exit
BUNDLE_VERSION=$(date +%s) BUNDLE_VERSION=$(date +%s)
DEPLOYMENT_URL="https://updates.bsky.app/v1/upload?runtime-version=$RUNTIME_VERSION&bundle-version=$BUNDLE_VERSION&channel=$CHANNEL_NAME&ios-build-number=$BSKY_IOS_BUILD_NUMBER&android-build-number=$BSKY_ANDROID_VERSION_CODE"
# This MUST address ota1's own origin hostname, never updates.bsky.app.
#
# Since the 2026-07-26 cutover updates.bsky.app resolves to denis on EKS, which
# deliberately has no /v1/upload route -- publishing there is out-of-band via
# `denis publish` (see denisPublish.sh). Posting to the CDN hostname therefore
# returns 404, which is what broke this step the first time it ran after the
# flip. The dual-write was never independent of the cutover precisely because it
# addressed the hostname being cut over.
#
# This upload exists only to keep ota1 carrying current bundles so a rollback of
# the Bunny origin remains useful. It goes away with this whole script when ota1
# is decommissioned (Phase 5).
OTA1_ORIGIN="${OTA1_ORIGIN:-https://ota1.us-east.updates.bsky.network}"
DEPLOYMENT_URL="$OTA1_ORIGIN/v1/upload?runtime-version=$RUNTIME_VERSION&bundle-version=$BUNDLE_VERSION&channel=$CHANNEL_NAME&ios-build-number=$BSKY_IOS_BUILD_NUMBER&android-build-number=$BSKY_ANDROID_VERSION_CODE"
tar czvf bundle.tar.gz ./* tar czvf bundle.tar.gz ./*