chore(ci): remove Cirrus runners and use only Bitrise - #6563
Conversation
Remove all Cirrus Labs runner configurations from CI workflows and standardize on Bitrise runners for macOS/iOS jobs and ubuntu-24.04-16core for Android/Linux jobs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
iOS (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 64630e5+dirty | 3842.70 ms | 1218.11 ms | -2624.60 ms |
| b0d3373+dirty | 3831.75 ms | 1227.29 ms | -2604.46 ms |
| b04af96+dirty | 3818.92 ms | 1219.76 ms | -2599.16 ms |
| 3d31fcf+dirty | 3838.09 ms | 1223.46 ms | -2614.63 ms |
| a0a3177+dirty | 3844.73 ms | 1225.23 ms | -2619.51 ms |
| af33f3b+dirty | 3849.98 ms | 1236.45 ms | -2613.53 ms |
| 09a902f+dirty | 3835.67 ms | 1217.11 ms | -2618.57 ms |
| 5a316ea+dirty | 3820.11 ms | 1211.28 ms | -2608.83 ms |
| acd838e+dirty | 3849.78 ms | 1230.00 ms | -2619.78 ms |
| c2e182c+dirty | 3848.40 ms | 1211.79 ms | -2636.61 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 64630e5+dirty | 4.98 MiB | 6.46 MiB | 1.49 MiB |
| b0d3373+dirty | 5.15 MiB | 6.68 MiB | 1.53 MiB |
| b04af96+dirty | 4.98 MiB | 6.54 MiB | 1.56 MiB |
| 3d31fcf+dirty | 4.98 MiB | 6.56 MiB | 1.58 MiB |
| a0a3177+dirty | 4.98 MiB | 6.55 MiB | 1.58 MiB |
| af33f3b+dirty | 4.98 MiB | 6.51 MiB | 1.54 MiB |
| 09a902f+dirty | 4.98 MiB | 6.46 MiB | 1.49 MiB |
| 5a316ea+dirty | 4.98 MiB | 6.51 MiB | 1.53 MiB |
| acd838e+dirty | 5.15 MiB | 6.70 MiB | 1.55 MiB |
| c2e182c+dirty | 4.98 MiB | 6.50 MiB | 1.52 MiB |
Android (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| d2eadf8+dirty | 414.64 ms | 454.56 ms | 39.92 ms |
| 1e5d96d+dirty | 519.43 ms | 543.62 ms | 24.19 ms |
| 822d35b+dirty | 429.31 ms | 498.04 ms | 68.73 ms |
| 84cba31+dirty | 511.12 ms | 567.62 ms | 56.50 ms |
| 3a829f0+dirty | 474.65 ms | 518.24 ms | 43.59 ms |
| c823bb5+dirty | 409.87 ms | 478.57 ms | 68.70 ms |
| 5a23c47+dirty | 423.85 ms | 466.47 ms | 42.62 ms |
| 5ee78d6+dirty | 551.80 ms | 568.27 ms | 16.47 ms |
| d67e46f+dirty | 418.11 ms | 447.62 ms | 29.51 ms |
| b04af96+dirty | 496.48 ms | 557.88 ms | 61.40 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| d2eadf8+dirty | 48.30 MiB | 53.48 MiB | 5.18 MiB |
| 1e5d96d+dirty | 49.74 MiB | 54.81 MiB | 5.07 MiB |
| 822d35b+dirty | 49.74 MiB | 54.84 MiB | 5.10 MiB |
| 84cba31+dirty | 49.74 MiB | 55.37 MiB | 5.63 MiB |
| 3a829f0+dirty | 48.30 MiB | 53.58 MiB | 5.28 MiB |
| c823bb5+dirty | 48.30 MiB | 53.58 MiB | 5.28 MiB |
| 5a23c47+dirty | 49.74 MiB | 54.82 MiB | 5.07 MiB |
| 5ee78d6+dirty | 48.30 MiB | 53.58 MiB | 5.28 MiB |
| d67e46f+dirty | 49.74 MiB | 55.44 MiB | 5.70 MiB |
| b04af96+dirty | 49.74 MiB | 55.00 MiB | 5.26 MiB |
iOS (new) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 7d6fd3a+dirty | 1210.89 ms | 1217.63 ms | 6.74 ms |
| 774257e+dirty | 3821.35 ms | 1211.96 ms | -2609.39 ms |
| 4e0b819+dirty | 3828.96 ms | 1205.64 ms | -2623.32 ms |
| d038a14+dirty | 3831.11 ms | 1216.30 ms | -2614.81 ms |
| 882f8ae+dirty | 3842.51 ms | 1230.40 ms | -2612.11 ms |
| 5125c43+dirty | 3827.94 ms | 1208.79 ms | -2619.15 ms |
| 15d4514+dirty | 3843.73 ms | 1228.09 ms | -2615.64 ms |
| 3d31fcf+dirty | 3857.46 ms | 1237.17 ms | -2620.29 ms |
| 4b87b12+dirty | 1199.49 ms | 1199.78 ms | 0.29 ms |
| 5c1e987+dirty | 1208.43 ms | 1220.72 ms | 12.29 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 7d6fd3a+dirty | 3.38 MiB | 4.77 MiB | 1.39 MiB |
| 774257e+dirty | 5.15 MiB | 6.70 MiB | 1.54 MiB |
| 4e0b819+dirty | 4.98 MiB | 6.46 MiB | 1.49 MiB |
| d038a14+dirty | 5.15 MiB | 6.67 MiB | 1.51 MiB |
| 882f8ae+dirty | 5.15 MiB | 6.70 MiB | 1.54 MiB |
| 5125c43+dirty | 5.15 MiB | 6.68 MiB | 1.53 MiB |
| 15d4514+dirty | 5.15 MiB | 6.70 MiB | 1.55 MiB |
| 3d31fcf+dirty | 4.98 MiB | 6.56 MiB | 1.58 MiB |
| 4b87b12+dirty | 3.38 MiB | 4.77 MiB | 1.39 MiB |
| 5c1e987+dirty | 3.38 MiB | 4.73 MiB | 1.35 MiB |
Android (new) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 1a2e7e0+dirty | 451.98 ms | 501.50 ms | 49.52 ms |
| ab203f9+dirty | 430.27 ms | 464.22 ms | 33.95 ms |
| 2c735cc+dirty | 435.20 ms | 459.48 ms | 24.28 ms |
| 2363c0f+dirty | 419.48 ms | 463.92 ms | 44.44 ms |
| 774257e+dirty | 541.42 ms | 575.55 ms | 34.13 ms |
| ca9d079+dirty | 460.67 ms | 512.54 ms | 51.87 ms |
| 5a316ea+dirty | 626.41 ms | 645.00 ms | 18.59 ms |
| a736b76+dirty | 405.78 ms | 458.74 ms | 52.96 ms |
| 3817909+dirty | 357.52 ms | 391.52 ms | 34.00 ms |
| 9474ead+dirty | 432.18 ms | 481.92 ms | 49.73 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 1a2e7e0+dirty | 49.74 MiB | 54.82 MiB | 5.07 MiB |
| ab203f9+dirty | 49.74 MiB | 54.85 MiB | 5.11 MiB |
| 2c735cc+dirty | 43.94 MiB | 48.94 MiB | 5.00 MiB |
| 2363c0f+dirty | 49.74 MiB | 54.84 MiB | 5.10 MiB |
| 774257e+dirty | 48.30 MiB | 53.58 MiB | 5.28 MiB |
| ca9d079+dirty | 48.30 MiB | 53.58 MiB | 5.28 MiB |
| 5a316ea+dirty | 49.74 MiB | 55.09 MiB | 5.34 MiB |
| a736b76+dirty | 48.30 MiB | 53.48 MiB | 5.18 MiB |
| 3817909+dirty | 43.94 MiB | 48.94 MiB | 5.00 MiB |
| 9474ead+dirty | 48.30 MiB | 53.61 MiB | 5.30 MiB |
| - platform: android | ||
| runs-on: | ||
| [ | ||
| "ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", | ||
| "runner_group_id:10", | ||
| ] | ||
| exclude: | ||
| - platform: android | ||
| runner_provider: bitrise | ||
| runs-on: ubuntu-latest |
There was a problem hiding this comment.
Bug: Android CI jobs are configured with ubuntu-latest instead of the intended, more powerful ubuntu-24.04-16core runner, which may degrade test performance.
Severity: MEDIUM
Suggested Fix
Update the runs-on value for all Android jobs in .github/workflows/e2e-v2.yml and .github/workflows/native-tests.yml from ubuntu-latest to ubuntu-24.04-16core to match the performance requirements and the stated intent of the pull request.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: .github/workflows/e2e-v2.yml#L396-L397
Potential issue: The pull request aims to standardize CI runners, specifying
`ubuntu-24.04-16core` for Android jobs. However, the implementation in `e2e-v2.yml` and
`native-tests.yml` sets the runner to `ubuntu-latest`. The `ubuntu-latest` runner
provides 4 CPU cores, whereas the intended runner has 16. Since the Android jobs run
resource-intensive emulator tests using KVM, this discrepancy will likely lead to
significantly longer test execution times, potential timeouts, and increased test
flakiness. This represents a performance regression and misaligns with the stated goals
of the change.
Also affects:
.github/workflows/native-tests.yml:116~116.github/workflows/e2e-v2.yml:61~61.github/workflows/e2e-v2.yml:250~250
Did we get this right? 👍 / 👎 to inform future reviews.
There was a problem hiding this comment.
I do agree with the bot here, it needs to be a specific version of Ubuntu, not ubuntu-latest.
| - platform: android | ||
| runs-on: | ||
| [ | ||
| "ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", | ||
| "runner_group_id:10", | ||
| ] | ||
| exclude: | ||
| - platform: android | ||
| runner_provider: bitrise | ||
| runs-on: ubuntu-latest |
There was a problem hiding this comment.
I do agree with the bot here, it needs to be a specific version of Ubuntu, not ubuntu-latest.
📢 Type of change
📜 Description
Remove all Cirrus Labs runner configurations from CI workflows and standardize on Bitrise runners for macOS/iOS jobs and
ubuntu-24.04-16corefor Android/Linux jobs.Changes across three workflow files:
native-tests.yml: iOStest-iosnow runs solely on Bitrise (bitrise_pool_name:tahoe), removedrunner_providermatrix and Cirrus-only steps (rbenv cache,ruby/setup-ruby). Androidtest-androidswitched from Cirrus toubuntu-24.04-16core.sample-application.yml: iOStest-iosnow runs solely on Bitrise, removedrunner_providermatrix and conditionals.e2e-v2.yml: Android runners inmetrics,react-native-build, andreact-native-testswitched from Cirrus toubuntu-24.04-16core. iOSreact-native-testnow runs on Bitrise, removedrunner_providermatrix,continue-on-error, and Cirrus runner refs.💡 Motivation and Context
Consolidate CI runners by removing Cirrus Labs machines and using only Bitrise for macOS/iOS workloads.
💚 How did you test it?
CI workflow changes — will be validated by running the workflows on this PR.
📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps