From e6ed5cf671a4461875f789e05c4bfb3373940d1b Mon Sep 17 00:00:00 2001 From: timo <44401485+Timo972@users.noreply.github.com> Date: Mon, 15 Jun 2026 22:32:07 +0200 Subject: [PATCH 1/2] ci: publish prebuilt runners as .ipa instead of .zip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Repackage each -Runner.app (the shared build-real.sh / build-sim.sh emit it as a root-level zip) into a standard .ipa — the app under a top-level Payload/ directory — in the publish job, then checksum and upload the .ipa set. The shared build scripts, which publish.js.yml also depends on, are left untouched. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/prebuild-r2.yml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/prebuild-r2.yml b/.github/workflows/prebuild-r2.yml index 52f4d4b62..076ae248b 100644 --- a/.github/workflows/prebuild-r2.yml +++ b/.github/workflows/prebuild-r2.yml @@ -1,8 +1,9 @@ name: Prebuild & Publish WDA to R2 -# Builds the prebuilt WebDriverAgentRunner artifacts (the same six zips the -# manual wda-package.yml produced) and mirrors them to Cloudflare R2 under -# releases/mobilerun-wda/, following the droidrun-ios release/preview pattern: +# Builds the prebuilt WebDriverAgentRunner artifacts (six .ipa packages: iOS + +# tvOS, real device + simulator arm64/x86_64) and mirrors them to Cloudflare R2 +# under releases/mobilerun-wda/, following the droidrun-ios release/preview +# pattern: # # release published -> releases/mobilerun-wda// + releases/mobilerun-wda/latest/ # push to master -> releases/mobilerun-wda/preview/ @@ -133,6 +134,23 @@ jobs: path: dist merge-multiple: true + - name: Repackage runner .app bundles as .ipa + working-directory: dist + run: | + set -eu + # Each build-* artifact is a zip holding a -Runner.app at the + # archive root. An .ipa is the same app under a top-level Payload/ + # directory, so rewrap each one (keeps the shared build-*.sh scripts, + # which other workflows depend on, untouched). + for z in *.zip; do + rm -rf Payload + mkdir Payload + unzip -q "$z" -d Payload + zip -qr "${z%.zip}.ipa" Payload + rm -rf Payload "$z" + done + echo "Repackaged:"; ls -1 *.ipa + - name: Generate SHA256SUMS and BUILD_INFO working-directory: dist run: | @@ -142,7 +160,7 @@ jobs: else VERSION="preview-${GITHUB_SHA::7}" fi - sha256sum *.zip > SHA256SUMS + sha256sum *.ipa > SHA256SUMS { echo "version=${VERSION}" echo "commit=${GITHUB_SHA}" From 5336be6be69f72e92d2c312c3495c1b6f2a8fa0b Mon Sep 17 00:00:00 2001 From: timo <44401485+Timo972@users.noreply.github.com> Date: Mon, 15 Jun 2026 22:44:00 +0200 Subject: [PATCH 2/2] ci: only real-device runners as .ipa; keep simulator builds as .zip Convert just the -Runner.zip artifacts (real iOS/tvOS devices) to .ipa; leave the *-Build-Sim-*.zip simulator builds as plain .zip, since a simulator .app is installed directly rather than as an .ipa. SHA256SUMS now covers both the .ipa and .zip artifacts. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/prebuild-r2.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/prebuild-r2.yml b/.github/workflows/prebuild-r2.yml index 076ae248b..ed785c1af 100644 --- a/.github/workflows/prebuild-r2.yml +++ b/.github/workflows/prebuild-r2.yml @@ -1,9 +1,9 @@ name: Prebuild & Publish WDA to R2 -# Builds the prebuilt WebDriverAgentRunner artifacts (six .ipa packages: iOS + -# tvOS, real device + simulator arm64/x86_64) and mirrors them to Cloudflare R2 -# under releases/mobilerun-wda/, following the droidrun-ios release/preview -# pattern: +# Builds the prebuilt WebDriverAgentRunner artifacts (iOS + tvOS, real device + +# simulator arm64/x86_64) and mirrors them to Cloudflare R2 under +# releases/mobilerun-wda/. Real-device runners ship as .ipa; simulator builds +# stay as .zip. Follows the droidrun-ios release/preview pattern: # # release published -> releases/mobilerun-wda// + releases/mobilerun-wda/latest/ # push to master -> releases/mobilerun-wda/preview/ @@ -134,22 +134,23 @@ jobs: path: dist merge-multiple: true - - name: Repackage runner .app bundles as .ipa + - name: Repackage real-device runners as .ipa working-directory: dist run: | set -eu - # Each build-* artifact is a zip holding a -Runner.app at the - # archive root. An .ipa is the same app under a top-level Payload/ - # directory, so rewrap each one (keeps the shared build-*.sh scripts, - # which other workflows depend on, untouched). - for z in *.zip; do + # Real-device runner artifacts (-Runner.zip) ship as .ipa: + # the same .app under a top-level Payload/ directory. Simulator + # builds (*-Build-Sim-*.zip) stay as plain .zip, since a simulator + # .app is installed directly rather than as an .ipa. The shared + # build-*.sh scripts, which other workflows depend on, are untouched. + for z in *-Runner.zip; do rm -rf Payload mkdir Payload unzip -q "$z" -d Payload zip -qr "${z%.zip}.ipa" Payload rm -rf Payload "$z" done - echo "Repackaged:"; ls -1 *.ipa + echo "Packages:"; ls -1 *.ipa *.zip - name: Generate SHA256SUMS and BUILD_INFO working-directory: dist @@ -160,7 +161,7 @@ jobs: else VERSION="preview-${GITHUB_SHA::7}" fi - sha256sum *.ipa > SHA256SUMS + sha256sum *.ipa *.zip > SHA256SUMS { echo "version=${VERSION}" echo "commit=${GITHUB_SHA}"