feat: create Runway RC#27662
Conversation
|
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. |
fix permission issue test ota update [skip ci] Bump version number to 4061 resolve if release tag does not exist fix no PR number found error fix base branch issue change version to 7.69.0 change to workflow_dispatch revert build number change ota version revert build number
58dc329 to
f12eda7
Compare
| * We keep this OTA_VERSION here to because changes in ota.config.js will affect the fingerprint and break the workflow in Github Actions | ||
| */ | ||
| export const OTA_VERSION: string = 'v7.65.1'; | ||
| export const OTA_VERSION: string = 'vX.XX.X'; |
There was a problem hiding this comment.
Placeholder OTA version string committed to production code
High Severity
OTA_VERSION is set to the placeholder 'vX.XX.X' instead of a real version string. This value is displayed to users in the App Information settings screen (e.g. "MetaMask ota vX.XX.X (build)") and is passed as the message input when the new workflow triggers an OTA update via push-eas-update.yml. The file's own comment says to use version strings like v0, v1, v2 and reset to v0 for new native builds — vX.XX.X is a template marker, not a valid version.
There was a problem hiding this comment.
we will always want to update this when it's an OTA push, so it makes sense to keep it generic on main
97773fc to
73503b1
Compare
…ask/metamask-mobile into wsun/create-runway-rc-ios-workflow
| else | ||
| echo "ota_bump=false" >> "$GITHUB_OUTPUT" | ||
| echo "No OTA version bump (base: $BASE_OTA, current: $CURRENT_OTA) → will trigger build" | ||
| fi |
There was a problem hiding this comment.
Duplicated decide job across iOS and Android workflows
Low Severity
The entire decide job (~70 lines including OTA detection logic, PR resolution, and sed-based version extraction) is copy-pasted verbatim between runway_ios_rc_workflow.yml and runway_android_rc_workflow.yml. The trigger-ota job is also nearly identical (differing only in the platform value). A bug fix or behavior change to the OTA detection logic (e.g., the fragile sed -n '9p' extraction) would need to be applied to both files independently, risking divergence. Extracting the shared decide logic into a reusable workflow (like build.yml is used) would reduce this maintenance risk.
Additional Locations (1)
There was a problem hiding this comment.
sounds good will extract in the next PR :)
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
None of these changes affect: app source code logic, UI components, controllers, navigation, test infrastructure (page objects, fixtures, test framework), or any user flows tested by E2E tests. No E2E tests are warranted. Performance Test Selection: |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
There are 4 total unresolved issues (including 2 from previous reviews).
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
| echo "Using PR #${{ needs.decide.outputs.pr_number }}" | ||
|
|
||
| - name: Trigger Push OTA Update workflow | ||
| uses: actions/github-script@v6 |
There was a problem hiding this comment.
Deprecated Node.js 16 action in new workflows
Medium Severity
Both new workflow files use actions/github-script@v6, which runs on the deprecated Node.js 16 runtime. GitHub has been warning about Node.js 16 deprecation since September 2023, and these actions will eventually fail. The same repo already uses actions/github-script@v7 (Node.js 20) in generate-rc-test-plan.yml, so the newer version is already proven to work in this codebase.
Additional Locations (1)
| else | ||
| echo "ota_bump=false" >> "$GITHUB_OUTPUT" | ||
| echo "No OTA version bump (base: $BASE_OTA, current: $CURRENT_OTA) → will trigger build" | ||
| fi |
There was a problem hiding this comment.
Near-identical decide job duplicated across workflows
Low Severity
The decide job (~70 lines) is completely identical between runway_ios_rc_workflow.yml and runway_android_rc_workflow.yml. The only differences between the two files are the platform string ('ios' vs 'android') in trigger-ota and trigger-build, plus the iOS-specific TestFlight upload jobs. A reusable workflow parameterized by platform would eliminate the duplication and the risk of the two copies drifting out of sync.
Additional Locations (1)
There was a problem hiding this comment.
we want separate workflows for Runway
|





Description
New workflow runway_ios_rc_workflow is created. We are using this workflow in Runway for RC release to iOS. If there is a change in OTA version in ota.ts, then we call Push OTA update workflow and push an OTA update to iOS RC. If not, we are going to call Build Mobile App workflow and build a new iOS RC.
Note: added runway_android_rc_workflow
Success workflow runs:
Regular build: https://github.com/MetaMask/metamask-mobile/actions/runs/23260145017
OTA Push: https://github.com/MetaMask/metamask-mobile/actions/runs/23267287137
Changelog
CHANGELOG entry: Added new workflow runway_ios_rc_workflow
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Adds new GitHub Actions workflows that can dispatch builds, OTA updates, and iOS TestFlight uploads; misconfiguration could trigger the wrong release path or fail deployments. Changes are CI/release-pipeline only, with no runtime app behavior impact beyond the
OTA_VERSIONconstant value change.Overview
Adds Runway RC GitHub Actions workflows for
iosandandroidthat, onworkflow_dispatch, detect whetherapp/constants/ota.ts’sOTA_VERSIONchanged vs the current release tag (ormain) and then either dispatchpush-eas-update.yml(requires resolving a PR number) or invoke the reusablebuild.ymlformain-rcbuilds.The iOS workflow additionally uploads the generated IPA to TestFlight (with a step summary) after a successful build. Separately simplifies
build.ymlbranch selection by switchingsource_branchhandling toinputs.source_branch || github.ref_name, and updatesOTA_VERSIONto a placeholder value.Written by Cursor Bugbot for commit b8641bc. This will update automatically on new commits. Configure here.