Skip to content

chore(ci): Move sample app iOS build jobs to GitHub Actions runners#6356

Merged
itaybre merged 3 commits into
mainfrom
itay/sample-app-github-runners
Jun 26, 2026
Merged

chore(ci): Move sample app iOS build jobs to GitHub Actions runners#6356
itaybre merged 3 commits into
mainfrom
itay/sample-app-github-runners

Conversation

@itaybre

@itaybre itaybre commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Moves build-only iOS jobs from Cirrus/Bitrise to GitHub-hosted runners:

  • sample-application.yml build-iosmacos-26-xlarge
  • sample-application.yml build-macosmacos-15-xlarge (needs Xcode 16.4)
  • sample-application-expo.yml build-iosmacos-26-xlarge

Removes the runner_provider matrix and all dead Bitrise-specific steps (asdf, Bitrise Ruby cache/install) from build jobs. Test jobs (test-ios) remain on Cirrus/Bitrise as they need simulators.

Artifact names no longer include the runner provider suffix since builds now produce a single artifact.

💡 Motivation and Context

Build-only jobs don't need simulator access — they just compile with Xcode. GitHub-hosted macos-26-xlarge runners showed comparable performance to Cirrus in prior testing (size-analysis and testflight PRs) while being simpler to maintain and more stable.

Workflow Cirrus macos-26 macos-26-xlarge
iOS Size Analysis 6 min 15 min 7 min
Testflight 7 min 18 min 8 min

💚 How did you test it?

  • Verified all removed steps were behind runner_provider == 'bitrise' conditions.
  • Confirmed test-ios artifact download references match the updated upload names.
  • Android and test jobs are unchanged.

📝 Checklist

  • I added tests to verify changes
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • All tests passing
  • No breaking changes

🔮 Next steps

…xlarge

Move build-only iOS jobs from Cirrus/Bitrise to GitHub-hosted runners:
- sample-application build-ios → macos-26-xlarge
- sample-application build-macos → macos-15-xlarge (needs Xcode 16.4)
- sample-application-expo build-ios → macos-26-xlarge

Remove runner_provider matrix and all Bitrise-specific steps from build
jobs. Test jobs (test-ios) remain on Cirrus/Bitrise as they need
simulators.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@itaybre itaybre added the ready-to-merge Triggers the full CI test suite label Jun 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Semver Impact of This PR

None (no version bump detected)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


  • chore(ci): Move sample app iOS build jobs to GitHub Actions runners by itaybre in #6356
  • feat(core): Use native btoa for envelope base64 encoding by alwx in #6351

🤖 This preview updates automatically when you update the PR.

itaybre and others added 2 commits June 25, 2026 16:04
The metrics job only builds perf test apps on the runner — metrics are
collected externally via Sauce Labs. No simulator needed, so it can
run on GitHub-hosted runners.

Remove runner_provider matrix and Bitrise-specific steps from the
metrics job. Android metrics remain on Cirrus.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Map RN 0.71.19 (Xcode 16.4) to macos-15-xlarge and RN 0.86.0
(Xcode 26) to macos-26-xlarge. Remove runner_provider matrix and
Bitrise-specific steps from the build job. Android builds remain
on Cirrus. Test job (react-native-test) stays on Cirrus/Bitrise as
it needs simulators.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3836.98 ms 1225.54 ms -2611.44 ms
Size 4.98 MiB 6.50 MiB 1.52 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7a89652+dirty 3861.46 ms 1229.61 ms -2631.85 ms
7d8c8bd+dirty 3837.24 ms 1215.51 ms -2621.73 ms
bc0d8cf+dirty 3830.33 ms 1220.52 ms -2609.81 ms
0b1b5e3+dirty 3823.96 ms 1220.12 ms -2603.84 ms
c823bb5+dirty 3843.44 ms 1225.70 ms -2617.74 ms
21a1e70+dirty 3834.15 ms 1218.43 ms -2615.73 ms
3a829f0+dirty 3839.76 ms 1214.69 ms -2625.06 ms
b0d3373+dirty 3831.75 ms 1227.29 ms -2604.46 ms
7d6fd3a+dirty 1223.29 ms 1229.57 ms 6.28 ms
038a6d7+dirty 3849.69 ms 1228.40 ms -2621.28 ms

App size

Revision Plain With Sentry Diff
7a89652+dirty 5.15 MiB 6.70 MiB 1.55 MiB
7d8c8bd+dirty 5.15 MiB 6.68 MiB 1.53 MiB
bc0d8cf+dirty 5.15 MiB 6.67 MiB 1.51 MiB
0b1b5e3+dirty 5.15 MiB 6.70 MiB 1.54 MiB
c823bb5+dirty 5.15 MiB 6.69 MiB 1.53 MiB
21a1e70+dirty 4.98 MiB 6.46 MiB 1.49 MiB
3a829f0+dirty 5.15 MiB 6.70 MiB 1.54 MiB
b0d3373+dirty 5.15 MiB 6.68 MiB 1.53 MiB
7d6fd3a+dirty 3.38 MiB 4.77 MiB 1.39 MiB
038a6d7+dirty 5.15 MiB 6.70 MiB 1.55 MiB

@github-actions

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 431.22 ms 469.33 ms 38.11 ms
Size 49.74 MiB 54.85 MiB 5.11 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
23598c3+dirty 414.12 ms 426.24 ms 12.12 ms
5fe1c6c+dirty 401.62 ms 445.28 ms 43.66 ms
0b1b5e3+dirty 416.42 ms 470.58 ms 54.16 ms
c151573+dirty 530.34 ms 559.43 ms 29.09 ms
f3215d3+dirty 411.11 ms 454.38 ms 43.27 ms
7887847+dirty 416.61 ms 462.04 ms 45.43 ms
5a010b7+dirty 425.62 ms 469.38 ms 43.76 ms
7ac3378+dirty 404.78 ms 439.84 ms 35.06 ms
a3265b6+dirty 406.86 ms 449.84 ms 42.98 ms
a0d8cf8+dirty 411.71 ms 467.57 ms 55.87 ms

App size

Revision Plain With Sentry Diff
23598c3+dirty 43.75 MiB 48.16 MiB 4.41 MiB
5fe1c6c+dirty 43.75 MiB 48.14 MiB 4.39 MiB
0b1b5e3+dirty 48.30 MiB 53.60 MiB 5.29 MiB
c151573+dirty 48.30 MiB 53.54 MiB 5.24 MiB
f3215d3+dirty 48.30 MiB 53.49 MiB 5.19 MiB
7887847+dirty 49.74 MiB 54.81 MiB 5.07 MiB
5a010b7+dirty 48.30 MiB 53.58 MiB 5.28 MiB
7ac3378+dirty 43.75 MiB 48.13 MiB 4.37 MiB
a3265b6+dirty 48.30 MiB 53.58 MiB 5.28 MiB
a0d8cf8+dirty 48.30 MiB 53.49 MiB 5.19 MiB

@github-actions

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3860.19 ms 1224.81 ms -2635.38 ms
Size 4.98 MiB 6.50 MiB 1.52 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7d8c8bd+dirty 3847.98 ms 1230.77 ms -2617.21 ms
64630e5+dirty 3845.49 ms 1215.19 ms -2630.30 ms
ad66da3+dirty 3855.02 ms 1213.43 ms -2641.59 ms
5569641+dirty 3824.35 ms 1210.78 ms -2613.57 ms
f170ec3+dirty 3844.74 ms 1222.67 ms -2622.07 ms
4b87b12+dirty 1199.49 ms 1199.78 ms 0.29 ms
ae37560+dirty 3840.10 ms 1217.89 ms -2622.21 ms
68672fc+dirty 3832.22 ms 1228.29 ms -2603.93 ms
267d3ed+dirty 3860.14 ms 1223.39 ms -2636.76 ms
7d6fd3a+dirty 1210.89 ms 1217.63 ms 6.74 ms

App size

Revision Plain With Sentry Diff
7d8c8bd+dirty 5.15 MiB 6.68 MiB 1.53 MiB
64630e5+dirty 4.98 MiB 6.46 MiB 1.49 MiB
ad66da3+dirty 5.15 MiB 6.67 MiB 1.51 MiB
5569641+dirty 5.15 MiB 6.67 MiB 1.51 MiB
f170ec3+dirty 5.15 MiB 6.69 MiB 1.53 MiB
4b87b12+dirty 3.38 MiB 4.77 MiB 1.39 MiB
ae37560+dirty 5.15 MiB 6.70 MiB 1.54 MiB
68672fc+dirty 5.15 MiB 6.71 MiB 1.55 MiB
267d3ed+dirty 5.15 MiB 6.69 MiB 1.54 MiB
7d6fd3a+dirty 3.38 MiB 4.77 MiB 1.39 MiB

@github-actions

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 439.67 ms 511.92 ms 72.25 ms
Size 49.74 MiB 54.85 MiB 5.11 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
20fbd51+dirty 594.38 ms 655.35 ms 60.97 ms
7436d0f+dirty 429.58 ms 452.52 ms 22.94 ms
ad66da3+dirty 411.49 ms 449.38 ms 37.89 ms
7ff4d0f+dirty 403.38 ms 427.06 ms 23.68 ms
a3265b6+dirty 410.96 ms 444.76 ms 33.80 ms
a50b33d+dirty 353.21 ms 398.48 ms 45.27 ms
6176a94+dirty 403.58 ms 446.73 ms 43.15 ms
5569641+dirty 465.92 ms 532.22 ms 66.30 ms
5a010b7+dirty 475.15 ms 519.02 ms 43.88 ms
1e5d96d+dirty 423.33 ms 482.46 ms 59.13 ms

App size

Revision Plain With Sentry Diff
20fbd51+dirty 49.74 MiB 54.81 MiB 5.07 MiB
7436d0f+dirty 48.30 MiB 53.60 MiB 5.30 MiB
ad66da3+dirty 48.30 MiB 53.49 MiB 5.19 MiB
7ff4d0f+dirty 48.30 MiB 53.60 MiB 5.30 MiB
a3265b6+dirty 48.30 MiB 53.58 MiB 5.28 MiB
a50b33d+dirty 43.94 MiB 48.94 MiB 5.00 MiB
6176a94+dirty 48.30 MiB 53.54 MiB 5.24 MiB
5569641+dirty 48.30 MiB 53.48 MiB 5.18 MiB
5a010b7+dirty 48.30 MiB 53.58 MiB 5.28 MiB
1e5d96d+dirty 49.74 MiB 54.81 MiB 5.07 MiB

@itaybre itaybre marked this pull request as ready for review June 25, 2026 20:06
@itaybre

itaybre commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

Test results:

┌────────────────────────┬───────────────┬────────────────┬───────────────────┐
│          Job           │ Cirrus (main) │ Bitrise (main) │ macos-xlarge (PR) │
├────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-ios dev          │ 8m 34s        │ 9m 19s         │ 9m 56s            │
├────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-ios production   │ 7m 41s        │ 10m 00s        │ 11m 21s           │
├────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-macos dev        │ 6m 10s        │ 7m 12s         │ 8m 00s            │
├────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-macos production │ 6m 08s        │ 8m 27s         │ 7m 03s            │
└────────────────────────┴───────────────┴────────────────┴───────────────────┘

┌───────────────────────────────────┬───────────────┬────────────────┬───────────────────┐
│                Job                │ Cirrus (main) │ Bitrise (main) │ macos-xlarge (PR) │
├───────────────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-ios dev no-frameworks       │ 5m 41s        │ 8m 24s         │ 7m 31s            │
├───────────────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-ios dev dynamic-frameworks  │ 5m 29s        │ 7m 51s         │ 7m 15s            │
├───────────────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-ios prod no-frameworks      │ 5m 19s        │ 7m 22s         │ 7m 22s            │
├───────────────────────────────────┼───────────────┼────────────────┼───────────────────┤
│ build-ios prod dynamic-frameworks │ 5m 35s        │ 7m 45s         │ 7m 27s            │
└───────────────────────────────────┴───────────────┴────────────────┴───────────────────┘

┌───────────────────────┬───────────────┬────────────────┬──────────────────────┐
│          Job          │ Cirrus (main) │ Bitrise (main) │ macos-26-xlarge (PR) │
├───────────────────────┼───────────────┼────────────────┼──────────────────────┤
│ metrics (legacy, ios) │ 14m 53s       │ 15m 41s        │ 15m 02s              │
├───────────────────────┼───────────────┼────────────────┼──────────────────────┤
│ metrics (new, ios)    │ 26m 39s       │ 14m 08s        │ 12m 44s              │
└───────────────────────┴───────────────┴────────────────┴──────────────────────┘

@alwx

alwx commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Q: but aren't custom runners simply more stable than GH at this point?

@itaybre

itaybre commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

Q: but aren't custom runners simply more stable than GH at this point?

Usually when GH infra goes down I see all action runners failing.

Regarding stability, we haven't seen issues for just building the apps. The workers were indeed a problem for unit testing and UI testing, this is why I only moved jobs that didn't involve testing.

@antonis antonis 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 🙇

@itaybre itaybre merged commit 4951e2a into main Jun 26, 2026
88 checks passed
@itaybre itaybre deleted the itay/sample-app-github-runners branch June 26, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Triggers the full CI test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants