Skip to content

CI: move to the xcode-27 runner image#123

Merged
kyleve merged 1 commit into
mainfrom
cursor/ci-xcode-27
Jul 23, 2026
Merged

CI: move to the xcode-27 runner image#123
kyleve merged 1 commit into
mainfrom
cursor/ci-xcode-27

Conversation

@kyleve

@kyleve kyleve commented Jul 23, 2026

Copy link
Copy Markdown
Owner

What

Moves CI onto GitHub's new xcode-27 runner image (public preview) so we build and test on Xcode 27 (Swift 6.4).

Why

GitHub's Xcode 27 runner image is now available, and its new support model keys images to the Xcode major version rather than the OS — hence the xcode-27 label instead of macos-27.

Beyond keeping the toolchain current, this unblocks Xcode's String Catalog symbol generation for SwiftPM package targets, which is only reliable on Xcode 27 (it mis-ordered generation in the test-bundle build graph on Xcode 26.x). The type-safe strings migration lands as a follow-up PR on top of this.

Changes

  • Both CI jobs (format, test) → runs-on: xcode-27.
  • The image ships only the iOS 27.0 simulator runtime, so the test destination is pinned to iPhone 17 / OS 27.0 (the device still exists there).
  • Added a xcrun simctl list CoreSimulator warm-up step — the preview image can need a nudge to rebuild its device cache before a destination resolves.
  • Docs + scripts synced: AGENTS.md, README.md, RegionViewer/README.md, and the profile / flaky script defaults.

Not in scope

Verification

  • ./swiftformat --lint clean.
  • Build & test validated by this PR's CI run on the xcode-27 image.

GitHub now offers an `xcode-27` runner image (public preview), keyed to the
Xcode major version rather than the OS. Move both CI jobs to
`runs-on: xcode-27` so we build and test on Xcode 27 (Swift 6.4).

The image ships only the iOS 27.0 simulator runtime, so pin the test
destination to iPhone 17 / OS 27.0. This also unblocks Xcode's String
Catalog symbol generation for SwiftPM package targets, which is only
reliable on Xcode 27.

Deployment target stays iOS 26.0 — building it with the iOS 27 SDK is fine;
raising the minimum OS is a separate follow-up. Add a CoreSimulator warm-up
step since the preview image can need a nudge to rebuild its device cache.
Update docs (AGENTS.md, README.md, RegionViewer) and the profile/flaky
script defaults to match.
Comment thread .github/workflows/ci.yml
- uses: actions/checkout@v4
- uses: jdx/mise-action@v3
# The xcode-27 image is a public-preview image whose CoreSimulator can
# need a nudge to rebuild its device cache before a destination resolves.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Is this true

@kyleve
kyleve merged commit 3c34178 into main Jul 23, 2026
2 checks passed
@kyleve
kyleve deleted the cursor/ci-xcode-27 branch July 23, 2026 04:08
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