Skip to content

ci: add separate Runway OTA and native build workflows (phase 1) cp-7.75.0#29294

Merged
weitingsun merged 2 commits into
mainfrom
wsun/modify-runway-workflows-to-separate-ota-and-native-build
Apr 24, 2026
Merged

ci: add separate Runway OTA and native build workflows (phase 1) cp-7.75.0#29294
weitingsun merged 2 commits into
mainfrom
wsun/modify-runway-workflows-to-separate-ota-and-native-build

Conversation

@weitingsun

@weitingsun weitingsun commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

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 through runway-ota-build-core.yml, which compares OTA_VERSION in app/constants/ota.ts against the release tag to decide whether to dispatch push-eas-update.yml (OTA) or build.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_branch input 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.0 and 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:

  • Phase 1 (this PR) — add the 5 new workflow files only; do not touch or remove anything existing.
  • Phase 2 (follow-up PR, later) — delete the 4 old per-platform workflows, rename runway-ota-build-core.ymlauto-rc-ota-build-core.yml, and update build-rc-auto.yml. This will be opened only after release/7.73.x and release/7.74.x are retired and Runway has been flipped to the new workflow names.

What this PR adds

  • runway-ota-resolve-context.yml — reusable workflow that resolves pr_number, base_ref, ota_version, and ota_bump from 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 runs build.yml with platform: both for main-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 for main-rc, plus the existing Slack RC notification (matches today's RC behaviour).
  • runway-ota-production.yml — pushes OTA to the production channel for both platforms via push-eas-update.yml (platform: all), then creates the v<OTA_VERSION> release tag via the existing runway-create-ota-production-tag.yml.
  • runway-ota-rc.yml — pushes OTA to the rc channel 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 calling runway-ota-build-core.yml as today.

Rollout notes

  • Merge this PR to main, then cherry-pick to release/7.75.0 so the new workflow files exist on the first release branch that will use them.
  • Runway config is not flipped yet. It keeps pointing at the 4 old per-platform workflow names until release/7.73.x and release/7.74.x are retired.
  • The phase 2 cleanup PR will flip Runway and delete the now-unused old workflows.

Changelog

CHANGELOG entry:null

Related issues

Fixes:

Manual testing steps

Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]

Screenshots/Recordings

Before

After

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
    • Ideally on a mid-range device; emulator is acceptable
  • I've tested with a power user scenario
    • Use these power-user SRPs to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

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.yml and runway-ota-production.yml to publish EAS OTA updates for both platforms via push-eas-update.yml, with PR-number validation and production tag creation (v<OTA_VERSION>).

Adds runway-rc-builds.yml and runway-production-builds.yml to bump the build version once via update-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.yml to resolve pr_number, base_ref (from package.json), ota_version (from app/constants/ota.ts), and an ota_bump flag for future consumers.

Reviewed by Cursor Bugbot for commit 4a78c24. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

Copy link
Copy Markdown
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.

@metamaskbotv2 metamaskbotv2 Bot added the team-mobile-platform Mobile Platform team label Apr 23, 2026
@weitingsun weitingsun changed the title ci: create separate Runway ota and build workflows ci: create separate Runway ota and build workflows cp:7.75.0 Apr 23, 2026
@weitingsun weitingsun changed the title ci: create separate Runway ota and build workflows cp:7.75.0 ci: create separate Runway ota and build workflows cp-7.75.0 Apr 23, 2026
@weitingsun weitingsun changed the title ci: create separate Runway ota and build workflows cp-7.75.0 ci: add separate Runway OTA and native build workflows (phase 1) Apr 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

⏭️ Smart E2E selection skipped - draft PR

All E2E tests pre-selected.

View GitHub Actions results

@github-actions github-actions Bot added size-M and removed size-L labels Apr 24, 2026
@weitingsun weitingsun marked this pull request as ready for review April 24, 2026 00:22
@weitingsun weitingsun requested a review from a team as a code owner April 24, 2026 00:22
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

E2E Fixture Validation — Schema is up to date
12 value mismatches detected (expected — fixture represents an existing user).
View details

@weitingsun weitingsun changed the title ci: add separate Runway OTA and native build workflows (phase 1) ci: add separate Runway OTA and native build workflows (phase 1) cp-7.75.0 Apr 24, 2026

@Cal-L Cal-L left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@weitingsun weitingsun added this pull request to the merge queue Apr 24, 2026
Merged via the queue into main with commit 764a031 Apr 24, 2026
125 checks passed
@weitingsun weitingsun deleted the wsun/modify-runway-workflows-to-separate-ota-and-native-build branch April 24, 2026 22:08
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 24, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.76.0 Issue or pull request that will be included in release 7.76.0 label Apr 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.76.0 Issue or pull request that will be included in release 7.76.0 size-M team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants