Skip to content

ci: take the iOS size baseline and the terminate stall off the Run iOS path - #2910

Draft
bitsandfoxes wants to merge 2 commits into
ci/native-sdk-cachefrom
ci/ios-critical-path
Draft

bitsandfoxes wants to merge 2 commits into
ci/native-sdk-cachefrom
ci/ios-critical-path

Conversation

@bitsandfoxes

@bitsandfoxes bitsandfoxes commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Run iOS, the job that ends every CI run, no longer waits for the iOS build-size baseline compile, and its first app launch no longer stalls on simctl terminate.

In 23 green first attempts over the last 21 days, Run iOS ended the run every time (p50 55 / p90 90 min). Two things on that path only cost time:

  • Compile iOS also builds the Xcode project without Sentry when its cached baseline misses (21 of 55 runtime legs, ~5.9 min each). That baseline only feeds the build-size comparison, but Run iOS needs the whole Compile iOS job, so it waited for it.
  • The first simctl terminate after a simulator boot stalled 59–430 s in 16% of Run iOS legs (Skip the iOS simulator terminate right after boot and bound the others app-runner#65 has the numbers).

How it works now:

  • test-build-size-ios.yml ("Measure iOS Build Size") is a new job that runs after Compile iOS. It takes over the baseline steps from test-compile-ios.yml unchanged: the same build-nosentry-iOS-compiled-<full version> cache, saved on main only, and the same measurement. The with-Sentry app comes from the testapp-ios-compiled-<v>-runtime artifact that Run iOS installs. Build Size now needs this job instead of Compile iOS. Run iOS still only needs Compile iOS, which got shorter. Summed the way measure-build-size.ps1 does it, the artifact from run 40217553065 comes to 135289358 bytes, exactly the WithSentry value that run reported.
  • modules/app-runner moves to Skip the iOS simulator terminate right after boot and bound the others app-runner#65: wait for simctl bootstatus before the first launch, and bound terminate to 60 s with a --terminate-running-process fallback.

Modelled on the same 23 runs, this saves about 6.8 min (size job) plus 2.5–3 min (terminate) at p90. p50 barely changes, because most runs hit the baseline cache and don't stall. The new job adds one macos-15 runner per Unity version, roughly 1–1.5 macOS minutes each on a cache hit.

Stacked on #2909.

CI evidence: run 40241909708 is green 58/58 in 32.1 min. It carried #2907 as a throwaway commit (since dropped). Compile iOS runtime legs no longer run the baseline, and both "Measure iOS Build Size" jobs and Build Size are green with the iOS rows. In all 4 Run iOS legs the first launch started 0 s after "Run log" (the terminate stalled up to 430 s before), later launches started within 1–5 s, no terminate timed out, and each passed 57/57. An earlier version that waited for simctl bootstatus (run 40238565235) still stalled to the 60 s cap on one leg, so it was replaced.

Rebased onto #2907: run 40307988661 is green on the first attempt in 45.1 min.

🤖 Generated with Claude Code

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