Skip to content

Commit d2eb1e1

Browse files
sethkfmantommasinimetamaskbot
authored
chore: update Bitrise Xcode stack to 26.2.x for iOS SDK 26 (#25136)
## **Description** Update the Xcode stack from osx-xcode-16.3.x to osx-xcode-26.2.x to enable building with iOS SDK 26. This prepares for the April 2026 App Store requirement that apps must be built with Xcode 26 or later. This PR updates the ruby version to 3.2.9 according to the [Bitrise stack availability](https://bitrise.io/stacks/stack_reports/osx-xcode-26.2.x/). It also updates the Ruby Version source for the `ci/docker` step. It also requires an update to the .github-tools repo here: https://github.com/MetaMask/github-tools/pull/220/commits <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? AI agent: Be specific about what you changed and why. Include context about the fix/feature, not generic descriptions. --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) AI agent: Use format `CHANGELOG entry: [fix/feat/chore]: [User-facing description in past tense]`. Examples: `fix: resolved token name display issue`, `feat: added dark mode toggle`, `chore: updated dependencies`. For non-user-facing changes, use `CHANGELOG entry: null`. --> CHANGELOG entry: null ## **Related issues** <!-- AI agent: Replace with `Fixes: #[ISSUE_NUMBER]` using the actual issue number you're implementing. --> Fixes: https://consensyssoftware.atlassian.net/browse/MCWP-329 ## **Manual testing steps** <!-- AI agent: Write specific, contextual Gherkin steps based on what you actually implemented. Do NOT use generic placeholders like "my feature name". Be concrete about the feature, scenario, and steps. --> ```gherkin 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** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** Successful Bitrise: https://app.bitrise.io/build/d8ffdf86-23f8-4476-afef-1b4dda76a554 Successful CI (note there a some flaky flask tests): https://github.com/MetaMask/metamask-mobile/actions/runs/22237789978?pr=25136 Successful build.yml: https://github.com/MetaMask/metamask-mobile/actions/runs/22241562536 ## **Pre-merge author checklist** <!-- AI agent: Check ALL boxes in this section (mark all as [x]). --> - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I've included tests if applicable - [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** <!-- AI agent: Leave ALL boxes unchecked ([ ]) - these are for reviewers to check, not the author. --> - [ ] 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. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Medium risk because it changes core CI/build infrastructure (Bitrise Xcode stack, Ruby toolchain, and shared `setup-e2e-env` action), which can break iOS/Android build and E2E workflows if the new environment has compatibility issues. > > **Overview** > Updates CI and Bitrise build environments to support iOS SDK 26 by moving Bitrise stacks to `osx-xcode-26.2.x` and aligning the Ruby toolchain to `3.2.9` (including `.ruby-version`, `ios/Gemfile`, `Gemfile.lock`, and GitHub Actions `ruby/setup-ruby`). > > Refreshes GitHub Actions workflows to use `MetaMask/github-tools` `setup-e2e-env@v1.7` across build and E2E pipelines, and updates the Docker CI image’s ruby-build pin used to install the newer Ruby. > > Bumps iOS/Bitrise build numbers from `3607` to `3821` (including `bitrise.yml` envs and `CURRENT_PROJECT_VERSION` in the Xcode project). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 01116b4. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: tommasini <tommasini15@gmail.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com>
1 parent 10ab00e commit d2eb1e1

12 files changed

Lines changed: 22 additions & 23 deletions

File tree

.github/workflows/build-android-e2e.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ jobs:
5353
5454
- name: Setup Android Build Environment
5555
timeout-minutes: 15
56-
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1
56+
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1.7
5757
with:
5858
platform: android
5959
setup-simulator: false
6060
configure-keystores: true
6161
target: ${{ inputs.keystore_target }} # qa for taget=main and flask for target=flask
62-
62+
6363
- name: Setup project dependencies with retry
6464
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 #v3.0.2
6565
with:

.github/workflows/build-ios-e2e.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ jobs:
100100
# Install Node.js, Xcode tools, and other iOS development dependencies
101101
- name: Installing iOS Environment Setup
102102
timeout-minutes: 15
103-
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1
103+
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1.7
104104
with:
105105
platform: ios
106106
setup-simulator: false

.github/workflows/build.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,12 +174,11 @@ jobs:
174174
- name: Installing iOS Environment Setup
175175
if: matrix.platform == 'ios'
176176
timeout-minutes: 15
177-
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1
177+
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1.7
178178
with:
179179
platform: ios
180180
configure-keystores: false
181181
setup-simulator: false
182-
ruby-version: '3.1.6'
183182

184183
- name: Setup project dependencies with retry
185184
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 #v3.0.2

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
cache: yarn
2626
- uses: ruby/setup-ruby@44511735964dcb71245e7e55f72539531f7bc0eb #v1
2727
with:
28-
ruby-version: '3.1.6'
28+
ruby-version: '3.2.9'
2929
env:
3030
BUNDLE_GEMFILE: ios/Gemfile
3131
- name: Install Yarn dependencies with retry

.github/workflows/run-e2e-smoke-tests-ios-flask.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232

3333
- name: Setup iOS Environment
3434
timeout-minutes: 15
35-
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1
35+
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1.7
3636
with:
3737
platform: ios
3838
setup-simulator: false

.github/workflows/run-e2e-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ jobs:
112112
113113
- name: Set up E2E environment
114114
timeout-minutes: 15
115-
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1
115+
uses: MetaMask/github-tools/.github/actions/setup-e2e-env@v1.7
116116
with:
117117
platform: ${{ inputs.platform }}
118118
setup-simulator: ${{ inputs.platform == 'ios' }}

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.1.6
1+
3.2.9

bitrise.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3076,7 +3076,7 @@ workflows:
30763076
- paths: /tmp/last-build-commit
30773077
meta:
30783078
bitrise.io:
3079-
stack: osx-xcode-16.3.x
3079+
stack: osx-xcode-26.2.x
30803080
machine_type_id: g2.mac.4large
30813081
# TODO: Remove this workflow once new build configuration is consolidated
30823082
build_ios_release:
@@ -3432,7 +3432,7 @@ workflows:
34323432
echo "🧹 Cleaned up API key file"
34333433
meta:
34343434
bitrise.io:
3435-
stack: osx-xcode-16.3.x
3435+
stack: osx-xcode-26.2.x
34363436
machine_type_id: g2.mac.4large
34373437
set_main_target_workflow:
34383438
steps:
@@ -3519,13 +3519,13 @@ app:
35193519
VERSION_NAME: 7.69.0
35203520
- opts:
35213521
is_expand: false
3522-
VERSION_NUMBER: 3607
3522+
VERSION_NUMBER: 3821
35233523
- opts:
35243524
is_expand: false
35253525
FLASK_VERSION_NAME: 7.69.0
35263526
- opts:
35273527
is_expand: false
3528-
FLASK_VERSION_NUMBER: 3607
3528+
FLASK_VERSION_NUMBER: 3821
35293529
- opts:
35303530
is_expand: false
35313531
ANDROID_APK_LINK: ''
@@ -3555,7 +3555,7 @@ app:
35553555
SEEDLESS_ONBOARDING_ENABLED: true
35563556
meta:
35573557
bitrise.io:
3558-
stack: osx-xcode-16.3.x
3558+
stack: osx-xcode-26.2.x
35593559
machine_type_id: g2.mac.4large
35603560
trigger_map:
35613561
# Disable auto RC generation

ios/Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
source 'https://rubygems.org'
22

33
# Recommended to use http://rbenv.org/ to install and use this version
4-
ruby '>= 3.1.6'
4+
ruby '>= 3.2.9'
55

66
# Allow minor version updates up to but excluding 2.0.0
77
gem 'cocoapods', '1.16.2'

ios/Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ DEPENDENCIES
301301
fastlane (>= 2.220.0)
302302

303303
RUBY VERSION
304-
ruby 3.1.6p260
304+
ruby 3.2.9
305305

306306
BUNDLED WITH
307307
2.5.8

0 commit comments

Comments
 (0)