Skip to content

ci: change create release PR to bump OTA version#28202

Merged
Cal-L merged 17 commits into
mainfrom
wsun/version-bump-for-hotfixes
Apr 8, 2026
Merged

ci: change create release PR to bump OTA version#28202
Cal-L merged 17 commits into
mainfrom
wsun/version-bump-for-hotfixes

Conversation

@weitingsun

@weitingsun weitingsun commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Description

Runway OTA hotfixes use a two-digit patch (e.g. 7.76.01) so CI can distinguish OTA hotfixes from native hotfixes (7.76.1). That form is not valid SemVer, so @metamask/auto-changelog fails when the release changelog workflow passes it through unchanged.

This PR:

  • Detects OTA hotfixes when the patch segment has exactly two digits (resolve-bases in create-release-pr.yml) and sets is_ota.

  • Skips native semver / build-version bump for OTA: generate-build-version is skipped; create-release-pr still runs using always() and explicit job-result checks so skipped dependents do not block the job.

  • Bumps only OTA_VERSION in app/constants/ota.ts via bump-ota-version-constants.sh, commits and pushes the release branch, and creates a draft PR to stable when none exists. A prior gh pr list check avoids double-bumping on retries.

  • Changelog: run-update-release-changelog-mobile.sh calls github-tools update-release-changelog.sh with a SemVer prerelease mapping X.Y.AB → X.Y.A-ota.B so headers stay valid for auto-changelog. Comparison URLs are post-processed on release-changelog/ so GitHub compare links use the real Runway tag (e.g. v7.76.01) instead of a non-existent v7.76.0-ota.1.

  • Wires update-release-changelog.yml and the OTA path in create-release-pr.yml through that wrapper (with github-tools checkout + yarn install + script).

  • Hardens runway-ota-build-core.yml by parsing OTA_VERSION from the export line instead of a fixed line number (comment length changes).

  • Documents the convention in auto-create-release-pr.yml comments and app/constants/ota.ts JSDoc; adjusts Runway workflow comments that referenced a specific line.

Screenshot 2026-04-06 at 3 25 59 PM

Testing:
OTA hotfix 7.77.01 ✅
release PR: #28478
changelog PR: https://github.com/MetaMask/metamask-mobile/pull/28477/changes

Binary hotfix 7.77.3 ✅
release PR: #28485
changelog PR: #28484

OTA hotfix 7.77.31 ✅
release PR: #28488
changelog PR: https://github.com/MetaMask/metamask-mobile/pull/28487/changes

Changelog

CHANGELOG entry: ci: include OTA version bump when creating a new release branch

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

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
Changes release automation workflows to treat two-digit patch releases as OTA hotfixes, including branch pushes and changelog generation. Risk is medium because it modifies CI/release pipelines and version/tag mapping, which could impact release PR creation or changelog correctness if the heuristics misclassify versions.

Overview
Adds first-class OTA hotfix handling for release/X.Y.AB branches (two-digit patch) in the release PR and changelog automation.

For OTA hotfixes, create-release-pr.yml now skips native version/build bumps, bumps OTA_VERSION in app/constants/ota.ts to vX.Y.AB, updates the release changelog via a new wrapper, and creates a draft OTA release PR (while guarding against retries when a PR already exists).

Changelog generation is made SemVer-safe by converting Runway’s two-digit patch format to a SemVer prerelease (e.g. 7.77.017.77.0-ota.1) and then post-fixing comparison URLs back to Runway tags; OTA bump detection in runway-ota-build-core.yml is also hardened to parse OTA_VERSION by pattern instead of a fixed line number.

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

@weitingsun weitingsun requested a review from a team as a code owner March 31, 2026 20:14
@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.

@metamaskbot metamaskbot added the team-mobile-platform Mobile Platform team label Mar 31, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk size-M labels Mar 31, 2026
Comment thread .github/workflows/create-release-pr.yml
Comment thread .github/workflows/create-release-pr.yml Outdated
Comment thread .github/scripts/bump-ota-version-constants.sh
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 31, 2026
Comment thread .github/workflows/create-release-pr.yml Outdated
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 31, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 31, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 31, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Mar 31, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 1, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 1, 2026
@github-actions github-actions Bot added the risk-low Low testing needed · Low bug introduction risk label Apr 6, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 6, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 6, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 7, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 7, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 7, 2026
@github-actions

github-actions Bot commented Apr 7, 2026

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: None (no tests recommended)
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 97%
click to see 🤖 AI reasoning details

E2E Test Selection:
All 9 changed files are exclusively CI/CD release pipeline infrastructure for OTA (Over-The-Air) hotfix support. No app source code logic was changed:

  1. GitHub workflow files (6 files): Changes add OTA hotfix detection (two-digit patch convention), OTA_VERSION bump automation, and changelog generation for OTA releases. These are release automation workflows triggered by Runway, not E2E test workflows. The runway-android/ios-rc-workflow files only have comment changes. The runway-ota-build-core.yml fixes OTA_VERSION parsing to use grep instead of a fixed line number.

  2. Shell scripts (2 new files): bump-ota-version-constants.sh and run-update-release-changelog-mobile.sh are CI helper scripts for the release pipeline, not test infrastructure.

  3. app/constants/ota.ts: Only JSDoc comment updates — the actual exported OTA_VERSION constant value (vX.XX.X) is completely unchanged. No runtime behavior is affected.

None of these changes affect:

  • Any E2E test execution paths or test infrastructure
  • App source code logic or user-facing features
  • Shared components (Browser, TabBar, Modals, Confirmations)
  • Controllers, Engine, or state management
  • Performance-sensitive code paths

Running E2E tests would provide zero validation value for these purely CI/release-pipeline changes.

Performance Test Selection:
No performance-sensitive code was changed. All modifications are CI/CD release pipeline scripts and workflow files. The app/constants/ota.ts change is documentation-only with no runtime impact. No UI components, data loading, state management, or critical user flows were modified.

View GitHub Actions results

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.29%. Comparing base (da75427) to head (3456ce7).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #28202   +/-   ##
=======================================
  Coverage   82.29%   82.29%           
=======================================
  Files        4904     4906    +2     
  Lines      128690   128690           
  Branches    28691    28692    +1     
=======================================
+ Hits       105903   105905    +2     
+ Misses      15514    15509    -5     
- Partials     7273     7276    +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sonarqubecloud

sonarqubecloud Bot commented Apr 7, 2026

Copy link
Copy Markdown

@weitingsun weitingsun changed the title change create release PR to bump OTA version ci: change create release PR to bump OTA version Apr 7, 2026
@weitingsun weitingsun self-assigned this Apr 7, 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

@Cal-L Cal-L added this pull request to the merge queue Apr 8, 2026
Merged via the queue into main with commit 8f239c2 Apr 8, 2026
109 of 124 checks passed
@Cal-L Cal-L deleted the wsun/version-bump-for-hotfixes branch April 8, 2026 05:21
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 8, 2026
@weitingsun weitingsun added release-7.74.0 Issue or pull request that will be included in release 7.74.0 and removed release-7.78.0 labels Apr 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.74.0 Issue or pull request that will be included in release 7.74.0 risk-low Low testing needed · Low bug introduction risk size-M team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants