CI: fan out spm-16 matrix and download each non-macOS simulator#113
Merged
CI: fan out spm-16 matrix and download each non-macOS simulator#113
Conversation
Runner images stopped shipping iOS 18.5 (and likely other) simulators pre-installed, so the Build Xcode 16 (iOS_18,watchOS_11) job failed with "Unable to find a device matching the provided destination specifier". The previous step only downloaded visionOS. Mirror the SafeDI pattern: iterate over each comma-separated matrix entry, strip the version suffix, and invoke -downloadPlatform for any entry that targets a simulator-bearing OS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #113 +/- ##
=======================================
Coverage 98.72% 98.72%
=======================================
Files 8 8
Lines 392 392
=======================================
Hits 387 387
Misses 5 5 🚀 New features to boost your workflow:
|
Splitting the paired entries (iOS+watchOS, macOS+tvOS) into individual runners increases parallelism and shortens end-to-end CI time at the cost of more runner minutes. Scripts/build.swift already accepts a single-platform input since it splits on commas. With one platform per entry, the Download step collapses back to the SafeDI shape: guard macOS/macCatalyst with an if, strip the version suffix, and call -downloadPlatform once. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
prepare-coverage-reports.sh explicitly skips watchOS (watchOS profile artifacts aren't produced by the toolchain), so the codecov upload step has nothing to find and fails with "No coverage reports found" under fail_ci_if_error: true. Previously the iOS_18,watchOS_11 pairing masked this because iOS's reports satisfied the uploader. Now that watchOS runs alone, skip the two coverage steps for that matrix entry. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Build Xcode 16 (iOS_18,watchOS_11)failed withxcodebuild: error: Unable to find a device matching the provided destination specifier: { platform:iOS Simulator, OS:18.5, name:iPad (10th generation) }(run) because the runner no longer ships the iOS 18.5 simulator pre-installed and the old step only downloaded the visionOS runtime.spm-16matrix out to one platform per runner (iOS, tvOS, macOS, macCatalyst, watchOS, visionOS). More parallelism, shorter end-to-end CI.Scripts/build.swiftalready accepts a single-platform argument since it splits on commas.if, strip the version suffix, and callxcodebuild -downloadPlatformonce.Test plan
Build Xcode 16 (iOS_18)succeeds.Build Xcode 16 (tvOS_18)succeeds (tvOS simulator now explicitly fetched).Build Xcode 16 (watchOS_11)succeeds (watchOS simulator now explicitly fetched).Build Xcode 16 (visionOS_2)still succeeds (same behavior as before).Build Xcode 16 (macOS_15)andBuild Xcode 16 (macCatalyst_15)still pass (download step skipped).🤖 Generated with Claude Code