ci: add separate Runway OTA and native build workflows (phase 1) cp-7.75.0#29294
Merged
weitingsun merged 2 commits intoApr 24, 2026
Merged
Conversation
Contributor
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
Contributor
🔍 Smart E2E Test Selection⏭️ Smart E2E selection skipped - draft PR All E2E tests pre-selected. |
|
Contributor
|
✅ E2E Fixture Validation — Schema is up to date |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Description
Splits the Runway release flow so that OTA updates and native binary builds are triggered by dedicated entry points rather than being auto-detected inside a shared core workflow. This PR is phase 1 (additive-only) — it introduces the new workflows alongside the existing ones without removing or renaming anything.
Why
Today the 4 per-platform Runway entry workflows (
runway-{ios,android}-{production,rc}-workflow.yml) all go throughrunway-ota-build-core.yml, which comparesOTA_VERSIONinapp/constants/ota.tsagainst the release tag to decide whether to dispatchpush-eas-update.yml(OTA) orbuild.yml(native binary). We want release engineers to make that choice explicitly in Runway, and to combine iOS + Android into a single dispatch so the build-version bump only happens once per release.Why two phases
Runway dispatches a workflow from the currently-selected release branch (no
source_branchinput is passed). That means the workflow file must exist on whichever branch Runway points at. Runway is a single configuration across all branches.Because this PR can only be cherry-picked to
release/7.75.0and not to older active branches (release/7.73.x,release/7.74.x), the cleanup (deleting the 4 old per-platform workflows and renaming the core) has to wait until those older branches are retired — otherwise flipping Runway to the new names would break dispatches against them.To keep this PR safe and reviewable without committing the organisation to the cleanup yet, the work is split into two phases:
runway-ota-build-core.yml→auto-rc-ota-build-core.yml, and updatebuild-rc-auto.yml. This will be opened only afterrelease/7.73.xandrelease/7.74.xare retired and Runway has been flipped to the new workflow names.What this PR adds
runway-ota-resolve-context.yml— reusable workflow that resolvespr_number,base_ref,ota_version, andota_bumpfrom a given ref. Consumed by the new OTA workflows and designed to be consumed by the renamed core in phase 2.runway-production-builds.yml— bumps the build version once, then runsbuild.ymlwithplatform: bothformain-prod, and uploads the iOS IPA to TestFlight. No OTA, no Slack (matches today's production behaviour).runway-rc-builds.yml— same shape as above formain-rc, plus the existing Slack RC notification (matches today's RC behaviour).runway-ota-production.yml— pushes OTA to theproductionchannel for both platforms viapush-eas-update.yml(platform: all), then creates thev<OTA_VERSION>release tag via the existingrunway-create-ota-production-tag.yml.runway-ota-rc.yml— pushes OTA to thercchannel for both platforms, plus the existing Slack RC notification.What this PR does NOT change
runway-ios-production-workflow.yml,runway-android-production-workflow.yml,runway-ios-rc-workflow.yml,runway-android-rc-workflow.yml— untouched; Runway can keep dispatching these as today.runway-ota-build-core.yml— untouched.build-rc-auto.yml— untouched; keeps callingrunway-ota-build-core.ymlas today.Rollout notes
main, then cherry-pick torelease/7.75.0so the new workflow files exist on the first release branch that will use them.release/7.73.xandrelease/7.74.xare retired.Changelog
CHANGELOG entry:null
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Medium Risk
Adds new Runway-triggered workflows that publish OTA updates, bump build versions, and create production tags; misconfiguration could impact release automation and tagging but changes are additive and don’t alter existing workflows.
Overview
Introduces new Runway entrypoint GitHub Actions workflows to explicitly choose between OTA releases and native binary builds (additive-only).
Adds
runway-ota-rc.ymlandrunway-ota-production.ymlto publish EAS OTA updates for both platforms viapush-eas-update.yml, with PR-number validation and production tag creation (v<OTA_VERSION>).Adds
runway-rc-builds.ymlandrunway-production-builds.ymlto bump the build version once viaupdate-latest-build-version.yml, build iOS+Android together (platform: both), upload iOS to TestFlight, and (for RC) post the existing Slack notification.Adds reusable
runway-ota-resolve-context.ymlto resolvepr_number,base_ref(frompackage.json),ota_version(fromapp/constants/ota.ts), and anota_bumpflag for future consumers.Reviewed by Cursor Bugbot for commit 4a78c24. Bugbot is set up for automated code reviews on this repo. Configure here.