ci: Xcode 26.6 / simulator 26.5, and Swift 6.4 in the ubuntu matrix - #432
Conversation
|
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: defaults Review profile: CHILL Plan: Pro Plus 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 |
ReviewPure CI-config change — mechanical version bump across the three root workflow files, no source/test changes involved. Went through it against Code quality / correctness
Potential issue — undercuts the PR's own stated goal
Performance
Security
Test coverage
Overall: safe, well-scoped mechanical bump. The main thing I'd want resolved before merge is the |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## v1.0.0-beta.4 #432 +/- ##
================================================
Coverage ? 76.22%
================================================
Files ? 158
Lines ? 3761
Branches ? 0
================================================
Hits ? 2867
Misses ? 894
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The macos-26 runner image now defaults to Xcode 26.6 (17F113), whose preinstalled simulator runtimes are 26.5 across iOS, watchOS, tvOS, and visionOS. The workflows were pinned to Xcode_26.4.app with runtimes 26.4/26.4.1, which are no longer preinstalled — so every simulator lane paid a download-platform fetch and CI was two Xcode releases behind what consumers build with. Bump the macos-26 lanes in MistKit.yml and MistDemo.yml (build-macos and build-macos-platforms) plus the CodeQL Swift job to Xcode_26.6.app, and move all four simulator osVersion pins to 26.5. Device names are unchanged — iPhone 17 Pro, Apple Watch Ultra 3 (49mm), Apple TV, and Apple Vision Pro are all still present under the 26.5 runtimes. The macos-15 backward-compat lane in MistKit.yml (Xcode 16.4 and 16.3 SPM builds, plus iOS on iPhone 16 / 18.4) is deliberately left alone. That image still ships Xcode 16.3 with a matching iOS 18.4 runtime, and this lane is the only older-toolchain signal in the repo. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XvtV3mTRRLqC7Xnqhaim92
Two changes.
1. Carry the Xcode 26.6 / simulator 26.5 bump into the Examples subrepos.
BushelCloud was still on Xcode_26.4 with runtimes 26.4/26.4.1, and its
CodeQL job had drifted further back to Xcode_26.2. CelestraCloud was
already current and needed no edit.
2. Add the in-development Swift 6.4 branch to build-ubuntu's matrix in
MistKit, MistDemo, BushelCloud, and CelestraCloud, following the shape
ConfigKeyKit already uses.
Swift matrix entries gain an optional `image` key, and the snapshot entry
carries it:
{"version":"6.4","image":"swiftlang/swift:nightly-6.4.x"}
The container is then resolved with a fallback expression so stable and
snapshot entries share one job:
container: ${{ matrix.swift.image
&& format('{0}-{1}', matrix.swift.image, matrix.os)
|| format('swift:{0}-{1}', matrix.swift.version, matrix.os) }}
Two registry details drive that indirection: the official `swift` image
publishes no nightly tags at all, so snapshots must come from the
`swiftlang/swift` registry, and the tag is `nightly-6.4.x-<distro>` —
`nightly-6.4-noble` does not exist.
MistDemo, BushelCloud, and CelestraCloud carried their ubuntu swift
versions as bare strings, so those move to the same object shape, and
their codecov flags follow from `matrix.swift` to `matrix.swift.version`.
Where the ubuntu matrix has a `type` dimension (MistKit, MistDemo), 6.4
is excluded from wasm and wasm-embedded: Swift nightly publishes no
matching Wasm SDK snapshot. Only the full matrix carries the 6.4 entry;
the quick matrix stays on one stable version.
Verified locally against swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-08-14-a on
Ubuntu 24.04: MistKit builds clean, exit 0.
Also refresh .claude/memory/feedback_ci_swift_matrix.md, which recorded a
blanket "no nightly toolchains in CI" rule that this change supersedes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XvtV3mTRRLqC7Xnqhaim92
65878f9 to
74332bb
Compare
Review: ci: update macOS lanes to Xcode 26.6 and simulator runtime 26.5Reviewed the diff (9 files) against the PR description and Scope vs. descriptionThe PR body only describes the Xcode 26.4→26.6 / simulator 26.4→26.5 bump, but the actual diff also bundles a second, unrelated change: adding a Swift 6.4 nightly-snapshot entry to the Potential issues
Nice-to-haves confirmed correct
SecurityNo new secrets or permissions introduced. The one new external dependency is the floating Test coverageThis is CI-config only, so "test coverage" isn't really applicable — the only real validation is a green run of the actual GitHub Actions pipeline. Worth watching the first run closely, especially the new nightly-toolchain cell and the flattened simulator Overall this is a clean, low-risk config bump with good internal consistency (matrix shape, exclusions, and codecov flags all updated in lockstep). The main asks are: reconcile the PR description with the full diff, and double-check the two data-fact items (BushelCloud's codeql Xcode jump and the flattened |
ReviewReviewed the diff and cross-checked the YAML for consistency. This is a clean, well-scoped CI-only change — no code in What checks out
Worth a second pair of eyes (not blockers, mostly already acknowledged in the PR body)
Security / test coverageNo security concerns — this only touches CI runner/toolchain pins and doesn't change trigger permissions, secrets handling, or third-party action versions. Test coverage doesn't apply in the traditional sense (no product code changed); the real "test" of this PR is whether the new matrix cells actually go green on GitHub's runners, which can't be verified from the diff alone. Overall: solid, well-documented change. Nothing here blocks merging. |
Two related CI changes. The original description only covered the first; this covers the whole diff.
1. Xcode 26.6 / simulator runtime 26.5
The
macos-26runner image now defaults to Xcode 26.6 (17F113), and its preinstalled simulator runtimes are 26.5 on iOS, watchOS, tvOS, and visionOS. The workflows were pinned toXcode_26.4.appwith runtimes26.4/26.4.1— two Xcode releases behind, and those runtimes are no longer preinstalled..github/workflows/MistKit.ymlXcode_26.4.app→26.6; fourosVersionpins →26.5.github/workflows/MistDemo.yml.github/workflows/codeql.ymlxcode-selectpath →Xcode_26.6.appExamples/BushelCloud/.github/workflows/BushelCloud.ymlExamples/BushelCloud/.github/workflows/codeql.ymlXcode_26.2.app→26.6Two notes on that table:
codeql.ymljumps26.2→26.6, a bigger delta than everything else. That is intentional catch-up, not a typo — that one job had drifted two releases further back than the rest of the repo.Device names are unchanged:
iPhone 17 Pro,Apple Watch Ultra 3 (49mm),Apple TV, andApple Vision Proare all still listed under the 26.5 runtimes for Xcode 26.6.The macos-15 compat lane is deliberately untouched
MistKit.yml'sbuild-macos-platformskeeps itsmacos-15entries — Xcode 16.4 SPM, Xcode 16.3 SPM, and iOS oniPhone 16@18.4. Verified against the currentmacos-15-arm64manifest that Xcode 16.3 still ships there with a matching iOS 18.4 runtime, so the lane is still valid. It is the only older-toolchain signal in the repo.2. Swift 6.4 in the
build-ubuntumatrixAdds the in-development Swift 6.4 branch to
build-ubuntuinMistKit.yml,MistDemo.yml,BushelCloud.yml, andCelestraCloud.yml, following the shapeConfigKeyKitalready uses.Swift matrix entries gain an optional
imagekey, and the snapshot entry carries it:The container is then resolved with a fallback expression so stable and snapshot entries share one job:
Two registry details drive that indirection:
swiftimage publishes no nightly tags at all, so snapshots must come from theswiftlang/swiftregistry.nightly-6.4.x-<distro>.nightly-6.4-nobledoes not exist.Supporting changes:
MistDemo.yml,BushelCloud.yml, andCelestraCloud.ymlcarried their ubuntu swift versions as bare strings, so those move to the same object shape, and their Codecovflags:follow frommatrix.swifttomatrix.swift.version.typedimension (MistKit.yml,MistDemo.yml), 6.4 is excluded fromwasmandwasm-embedded— Swift nightly publishes no matching Wasm SDK snapshot. BushelCloud and CelestraCloud have notypedimension, so they need no exclude.Verification
swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-08-14-aon Ubuntu 24.04 and built the package:Build complete!, exit 0.26.5runtime strings are correct. All four platforms under Xcode 26.6 are exactly26.5with no patch component, per themacos-26-arm64image manifest. This matters because iOS and visionOS previously pinned26.4.1while watchOS and tvOS pinned26.4, so the flattening is a real change and a wrong string fails the simulator boot outright.download-platform: trueis retained deliberately.brightdigit/swift-buildrunsxcodebuild -downloadPlatform <platform>unconditionally and lets Xcode no-op when the runtime is already installed, so it is a cheap check rather than a fetch. Keeping it means the matrix still works if a future image drops a runtime.matrix.swiftreferences remain anywhere.Known trade-off
swiftlang/swift:nightly-6.4.xis a floating tag, and the 6.4 cell is a normal blocking matrix entry with nocontinue-on-error— matching the ConfigKeyKit precedent. A Swift 6.4 snapshot regression can therefore redden unrelated PRs. Accepted deliberately; worth revisiting if it proves noisy in practice.