Skip to content

ci: Revert CI runners from Cirrus Labs back to GitHub-hosted#6032

Draft
antonis wants to merge 6 commits intomainfrom
antonis/revert-to-gh-runners
Draft

ci: Revert CI runners from Cirrus Labs back to GitHub-hosted#6032
antonis wants to merge 6 commits intomainfrom
antonis/revert-to-gh-runners

Conversation

@antonis
Copy link
Copy Markdown
Contributor

@antonis antonis commented Apr 22, 2026

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Swap every ghcr.io/cirruslabs/* runner label in .github/workflows/ back to the GitHub-hosted equivalent.

Cirrus label GitHub label
ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04 ubuntu-latest
ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0 macos-26
ghcr.io/cirruslabs/macos-sequoia-xcode:16.4 macos-15

Touched workflows:

  • buildandtest.yml (all 7 jobs)
  • codegen.yml
  • e2e-v2.yml (metrics / react-native-build / react-native-test)
  • native-tests.yml
  • sample-application.yml
  • sample-application-expo.yml
  • size-analysis.yml
  • testflight.yml

Only runner labels change in this PR. The Tart-VM-specific workarounds layered on top during the migration — simulator warm-up, wait_for_boot, MAESTRO_DRIVER_STARTUP_TIMEOUT, TOOLCHAINS: XcodeDefault env, dual corepack enable / npm i -g corepack paths, the Swiftly+Swift 6 lint block, manual CocoaPods/Ninja installs, Maestro retries, and e2e test assertion relaxations — are intentionally left in place. They become unnecessary or simplifiable on GitHub runners, but stripping them in the same PR would obscure what broke. A cleanup PR follows once this one is green.

💡 Motivation and Context

Cirrus Labs runners are being discontinued, so we need to move back to GitHub-hosted runners. macos-26 (macOS Tahoe / Xcode 26.2) has been generally available on GitHub since 2026-02-26, which removes the original reason for the Cirrus move.

Migration history for context: #5485, #5675, #5696.

💚 How did you test it?

Draft PR with ready-to-merge label so the full suite — E2E, native tests, sample application builds, size analysis — runs on the new runners.

📝 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

Follow-up PR to remove the Cirrus-specific workarounds once CI is green here:

  1. Drop TOOLCHAINS: com.apple.dt.toolchain.XcodeDefault from iOS build steps.
  2. Remove simulator warm-up block, wait_for_boot: true / erase_before_boot: false, xcrun simctl bootstatus, Settings.app launch, and MAESTRO_DRIVER_STARTUP_TIMEOUT override.
  3. Remove the Maestro warm-up flow in sample-application.yml test-ios.
  4. Collapse the Enable Corepack (NPM) / Enable Corepack dual steps to a single corepack enable.
  5. Drop the explicit gem install cocoapods + RBENV_VERSION: system block from native-tests.yml test-ios (GH macOS runners ship CocoaPods).
  6. Revisit per-flow Maestro retries in dev-packages/e2e-tests/cli.mjs and samples/react-native/e2e/utils/maestro.ts.
  7. Re-tighten e2e assertion relaxations that were added to mask Tart-VM timing (envelope sorting, HTTP span count >= 1, app-start envelope scanning).

🤖 Generated with Claude Code

Cirrus Labs is being discontinued — swap every `ghcr.io/cirruslabs/*`
runner label back to the GitHub-hosted equivalent:

- ubuntu-runner-amd64:24.04 → ubuntu-latest
- macos-tahoe-xcode:26.2.0  → macos-26 (GA since 2026-02-26)
- macos-sequoia-xcode:16.4  → macos-15

Only the runner labels change in this commit. The Tart-VM-specific
workarounds (simulator warm-up, `wait_for_boot`, MAESTRO_DRIVER_STARTUP_TIMEOUT,
TOOLCHAINS env, dual corepack paths, Swiftly block, extra CocoaPods install)
are intentionally left in place — they'll be cleaned up in a follow-up
once CI is green on GitHub runners.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@antonis antonis added the ready-to-merge Triggers the full CI test suite label Apr 22, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 426.86 ms 453.96 ms 27.10 ms
Size 43.75 MiB 48.15 MiB 4.40 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
04207c4+dirty 459.19 ms 518.54 ms 59.35 ms
a50b33d+dirty 500.81 ms 532.11 ms 31.30 ms
4953e94+dirty 442.02 ms 456.52 ms 14.50 ms
0d9949d+dirty 403.57 ms 437.00 ms 33.43 ms
3d377b5+dirty 406.18 ms 453.52 ms 47.34 ms
df5d108+dirty 527.06 ms 603.58 ms 76.52 ms
3ce5254+dirty 410.57 ms 448.48 ms 37.91 ms
2c735cc+dirty 414.09 ms 438.47 ms 24.38 ms
7d6fd3a+dirty 403.02 ms 422.56 ms 19.54 ms
3817909+dirty 406.67 ms 416.58 ms 9.91 ms

App size

Revision Plain With Sentry Diff
04207c4+dirty 43.75 MiB 48.12 MiB 4.37 MiB
a50b33d+dirty 43.75 MiB 48.08 MiB 4.33 MiB
4953e94+dirty 43.75 MiB 48.08 MiB 4.33 MiB
0d9949d+dirty 43.75 MiB 48.13 MiB 4.37 MiB
3d377b5+dirty 43.75 MiB 48.14 MiB 4.39 MiB
df5d108+dirty 43.75 MiB 48.08 MiB 4.33 MiB
3ce5254+dirty 43.75 MiB 48.12 MiB 4.37 MiB
2c735cc+dirty 43.75 MiB 48.08 MiB 4.33 MiB
7d6fd3a+dirty 43.75 MiB 48.14 MiB 4.39 MiB
3817909+dirty 43.75 MiB 48.08 MiB 4.33 MiB

@sentry
Copy link
Copy Markdown

sentry Bot commented Apr 22, 2026

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
Sentry RN io.sentry.reactnative.sample 8.9.2 (85) Release

⚙️ sentry-react-native Build Distribution Settings

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1217.91 ms 1223.26 ms 5.35 ms
Size 3.38 MiB 4.77 MiB 1.39 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7ac3378+dirty 1213.37 ms 1218.15 ms 4.78 ms
4b87b12+dirty 1212.90 ms 1222.09 ms 9.19 ms
890d145+dirty 1223.59 ms 1231.37 ms 7.78 ms
0d9949d+dirty 1211.38 ms 1219.67 ms 8.29 ms
04207c4+dirty 1191.27 ms 1189.78 ms -1.48 ms
3ce5254+dirty 1219.93 ms 1221.90 ms 1.96 ms
4953e94+dirty 1212.06 ms 1214.83 ms 2.77 ms
2c735cc+dirty 1229.67 ms 1221.50 ms -8.17 ms
a50b33d+dirty 1197.74 ms 1197.17 ms -0.57 ms
df5d108+dirty 1225.90 ms 1220.14 ms -5.76 ms

App size

Revision Plain With Sentry Diff
7ac3378+dirty 3.38 MiB 4.76 MiB 1.38 MiB
4b87b12+dirty 3.38 MiB 4.77 MiB 1.39 MiB
890d145+dirty 3.38 MiB 4.77 MiB 1.38 MiB
0d9949d+dirty 3.38 MiB 4.76 MiB 1.38 MiB
04207c4+dirty 3.38 MiB 4.76 MiB 1.38 MiB
3ce5254+dirty 3.38 MiB 4.76 MiB 1.38 MiB
4953e94+dirty 3.38 MiB 4.73 MiB 1.35 MiB
2c735cc+dirty 3.38 MiB 4.74 MiB 1.35 MiB
a50b33d+dirty 3.38 MiB 4.73 MiB 1.35 MiB
df5d108+dirty 3.38 MiB 4.73 MiB 1.35 MiB

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 413.70 ms 440.33 ms 26.62 ms
Size 43.94 MiB 49.01 MiB 5.07 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
04207c4+dirty 395.40 ms 456.55 ms 61.15 ms
a50b33d+dirty 353.21 ms 398.48 ms 45.27 ms
4953e94+dirty 398.80 ms 431.81 ms 33.01 ms
0d9949d+dirty 414.88 ms 428.68 ms 13.81 ms
3d377b5+dirty 425.38 ms 440.67 ms 15.30 ms
df5d108+dirty 434.82 ms 447.39 ms 12.57 ms
3ce5254+dirty 373.90 ms 427.84 ms 53.94 ms
2c735cc+dirty 435.20 ms 459.48 ms 24.28 ms
7d6fd3a+dirty 435.06 ms 458.78 ms 23.72 ms
3817909+dirty 357.52 ms 391.52 ms 34.00 ms

App size

Revision Plain With Sentry Diff
04207c4+dirty 43.94 MiB 48.98 MiB 5.04 MiB
a50b33d+dirty 43.94 MiB 48.94 MiB 5.00 MiB
4953e94+dirty 43.94 MiB 48.94 MiB 5.00 MiB
0d9949d+dirty 43.94 MiB 48.99 MiB 5.05 MiB
3d377b5+dirty 43.94 MiB 49.00 MiB 5.06 MiB
df5d108+dirty 43.94 MiB 48.94 MiB 5.00 MiB
3ce5254+dirty 43.94 MiB 48.98 MiB 5.04 MiB
2c735cc+dirty 43.94 MiB 48.94 MiB 5.00 MiB
7d6fd3a+dirty 43.94 MiB 49.00 MiB 5.06 MiB
3817909+dirty 43.94 MiB 48.94 MiB 5.00 MiB

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1218.71 ms 1219.28 ms 0.57 ms
Size 3.38 MiB 4.77 MiB 1.39 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7ac3378+dirty 1202.35 ms 1198.31 ms -4.04 ms
4b87b12+dirty 1199.49 ms 1199.78 ms 0.29 ms
890d145+dirty 1212.98 ms 1220.10 ms 7.12 ms
0d9949d+dirty 1203.94 ms 1202.27 ms -1.67 ms
04207c4+dirty 1228.55 ms 1226.04 ms -2.51 ms
3ce5254+dirty 1217.70 ms 1224.69 ms 6.99 ms
4953e94+dirty 1217.41 ms 1223.53 ms 6.12 ms
2c735cc+dirty 1223.33 ms 1224.38 ms 1.04 ms
a50b33d+dirty 1207.11 ms 1212.10 ms 5.00 ms
df5d108+dirty 1207.34 ms 1210.50 ms 3.16 ms

App size

Revision Plain With Sentry Diff
7ac3378+dirty 3.38 MiB 4.76 MiB 1.38 MiB
4b87b12+dirty 3.38 MiB 4.77 MiB 1.39 MiB
890d145+dirty 3.38 MiB 4.77 MiB 1.38 MiB
0d9949d+dirty 3.38 MiB 4.76 MiB 1.38 MiB
04207c4+dirty 3.38 MiB 4.76 MiB 1.38 MiB
3ce5254+dirty 3.38 MiB 4.76 MiB 1.38 MiB
4953e94+dirty 3.38 MiB 4.73 MiB 1.35 MiB
2c735cc+dirty 3.38 MiB 4.74 MiB 1.35 MiB
a50b33d+dirty 3.38 MiB 4.73 MiB 1.35 MiB
df5d108+dirty 3.38 MiB 4.73 MiB 1.35 MiB

antonis and others added 3 commits April 22, 2026 18:15
GitHub-hosted macos-26 runner only ships iOS 26.x simulator runtimes,
so the previous 'iPhone 16 / iOS >=18.0' requirement matched no device.
'iPhone 17' is the default current-gen simulator on macos-26 and still
satisfies '>=18.0'. Matches what e2e-v2.yml already uses.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ANDROID_APP_ARCHIVE_PATH: sentry-react-native-sample.apk.zip
REACT_NATIVE_SAMPLE_PATH: samples/react-native
IOS_DEVICE: 'iPhone 16'
IOS_DEVICE: 'iPhone 17'
Copy link
Copy Markdown

@sentry-warden sentry-warden Bot Apr 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IOS_DEVICE bumped to 'iPhone 17' while IOS_VERSION remains '>=18.0'

The default simulator device was changed from 'iPhone 16' to 'iPhone 17' as part of a PR whose stated scope is reverting runner labels only. The 'iPhone 17' simulator is only available with Xcode 26 / iOS 26 runtimes, but IOS_VERSION still allows iOS >=18.0. If the macos-26 runner image does not ship the iPhone 17 simulator (or an iOS 18.x runtime paired with it), simulator selection in downstream e2e/test steps will fail, breaking the sample-application workflow. This also appears to be an unintended side effect outside the PR's documented scope.

Verification

Reviewed the hunk and PR description. The PR explicitly states 'Only runner labels change in this PR', yet line 22 changes IOS_DEVICE from 'iPhone 16' to 'iPhone 17' — a behavioral change unrelated to runner labels. IOS_VERSION on line 23 remains '>=18.0', creating a potential mismatch with the new device which is iOS 26-era hardware.

Identified by Warden code-review, find-bugs · RND-JRU

@antonis antonis removed the ready-to-merge Triggers the full CI test suite label May 4, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

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).


  • ci: Revert CI runners from Cirrus Labs back to GitHub-hosted by antonis in #6032
  • chore(deps): bump github/codeql-action from 4.35.2 to 4.35.3 by dependabot in #6078
  • fix: Prevent shell injection vulnerability in GitHub Actions workflow by fix-it-felix-sentry in #6077
  • chore(deps): update Maestro to v2.5.1 by github-actions in #6075

🤖 This preview updates automatically when you update the PR.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

Fails
🚫 Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request

Generated by 🚫 dangerJS against 102c095

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant