Repository navigation
ci(ios): cut pull request runs from ~25 min to ~12 min - #57
Conversation
|
Note Review skipped Codemetrics is installed on this repository, but it hasn't been added to your team yet. To enable AI code reviews for this repo, go to your dashboard and add house-scanning-master to your team's repositories. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
A run spent 2:40 booting the Simulator with nothing else running, and 10:00 in one test, the every-state accessibility audit (65 app launches). With 5 macOS jobs allowed at once, those long runs also queued other pull requests for up to 22 minutes. - Boot the Simulator in the background right after checkout, alongside swift test and the device build. - Skip the audit test on pull requests unless labelled full-ui; pushes to t3/ios-mvf and main, and manual runs, still run it. - Skip drafts (run on ready_for_review) and Markdown-only changes. - Turn off the index store in CI builds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
I own One gap: skipping the audit on pull requests moves audit failures onto Please run the audit automatically on any PR that changes what it checks: Smaller points:
|
|
Read-only workflow review at |
|
@AidenJohnston Carrying the open workflow findings after #57 merged as Run 36280567170 passed, but its logs explicitly excluded |
|
First run: 19:21, down from about 25:00. The background Simulator boot slowed |
On the 3-core runner it slowed swift test from 1:22 to 5:25 and the device build from 1:00 to 1:54, costing about 6 minutes to save 2:40. The first run of #57 took 19:21; the audit skip alone should give about 15. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The run is stored as running with a start time before stages execute. dump-run lists stages and timings, including merge_objects_s. Read hints are emitted, early blobs are written under captures/{id}/early/, start_run flushes a pending capture check, and each wall_gap hint is published once.
Co-authored-by: hss-cloud-agent <hss-cloud-agent@users.noreply.github.com>
Why
iOS pull requests were taking about 30 minutes to go green. There were two causes:
The run itself took 25–29 min. Timings from run 36277917860 (
t3/ar-occlusion):swift testHouseScanKitFullFlowUITests(3 tests)testEveryStatePassesTheAccessibilityAuditScreenStatesUITestsThe audit test launches the app 65 times: 42 states, plus 23 of them again at the largest text size. It is a single test method, so it can't be split across runners.
Queueing. A free personal account runs at most 5 macOS jobs at once. With 5–6 iOS pull requests pushing together, jobs waited up to 22 minutes for a slot. Mark an existing battery or another box on the wall (#27) #52 waited 22 min and then failed in 90 s.
What changes (workflow only; no app or test code)
swift testand the device build. A new "Wait for the Simulator" step blocks until the boot finishes, just before the UI tests. The tests target the booted device by UDID.-skip-testing:. A notice in the run log says it was skipped. To include it, add the newfull-uilabel: the run restarts with the audit. Pushes tot3/ios-mvfandmain, and manual runs (workflow_dispatch), always run it, so a problem it would catch gets caught when the pull request merges.full-uistarts no run and cancels none.full-uiis added to.github/labels.json(I also created it in the repo, so it works now).CONTRIBUTING.mdexplains when to use it.Expected: about 12 min per pull request run (25 − 10 audit − about 2.5 boot). Each run also frees its macOS slot about twice as fast, which should mostly clear the queue.
Not done
Testing
actionlint1.7.7 reports only that it doesn't know themacos-26runner label (its label list predates that image).ios.yml, so it runs the new workflow without the audit. I'll post the timings when it finishes.🤖 Generated with Claude Code