Commit d2eb1e1
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
- ios
- MetaMask.xcodeproj
- scripts/docker
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
103 | | - | |
| 103 | + | |
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
| 177 | + | |
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
182 | | - | |
183 | 182 | | |
184 | 183 | | |
185 | 184 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3076 | 3076 | | |
3077 | 3077 | | |
3078 | 3078 | | |
3079 | | - | |
| 3079 | + | |
3080 | 3080 | | |
3081 | 3081 | | |
3082 | 3082 | | |
| |||
3432 | 3432 | | |
3433 | 3433 | | |
3434 | 3434 | | |
3435 | | - | |
| 3435 | + | |
3436 | 3436 | | |
3437 | 3437 | | |
3438 | 3438 | | |
| |||
3519 | 3519 | | |
3520 | 3520 | | |
3521 | 3521 | | |
3522 | | - | |
| 3522 | + | |
3523 | 3523 | | |
3524 | 3524 | | |
3525 | 3525 | | |
3526 | 3526 | | |
3527 | 3527 | | |
3528 | | - | |
| 3528 | + | |
3529 | 3529 | | |
3530 | 3530 | | |
3531 | 3531 | | |
| |||
3555 | 3555 | | |
3556 | 3556 | | |
3557 | 3557 | | |
3558 | | - | |
| 3558 | + | |
3559 | 3559 | | |
3560 | 3560 | | |
3561 | 3561 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
301 | 301 | | |
302 | 302 | | |
303 | 303 | | |
304 | | - | |
| 304 | + | |
305 | 305 | | |
306 | 306 | | |
307 | 307 | | |
0 commit comments