Skip to content

ci: Move macOS jobs to the macos-26 runner and Xcode 26#109

Closed
keelerm84 wants to merge 1 commit into
mk/SDK-2633/get-last-event-id-racefrom
mk/SDK-2634/ci-xcode-26
Closed

ci: Move macOS jobs to the macos-26 runner and Xcode 26#109
keelerm84 wants to merge 1 commit into
mk/SDK-2633/get-last-event-id-racefrom
mk/SDK-2634/ci-xcode-26

Conversation

@keelerm84

@keelerm84 keelerm84 commented Jul 1, 2026

Copy link
Copy Markdown
Member

Apple requires App Store uploads to be built with Xcode 26 / the iOS 26 SDK as of
2026-04-28. Building and testing on Xcode 26 validates the library against the
toolchain consumers must now use. GitHub's macos-26 runner (GA) ships Xcode 26.x.

Bumps the five macOS jobs (lint, build-apple, test-macos, test-thread-sanitizer,
contract-tests) from macos-15 / Xcode 16.4 to macos-26 / Xcode 26 (pinned to the
latest 26.x via xcode-version: '26'). test-linux and test-windows are unchanged.

Orthogonal to the deployment floor: Apple's mandate governs the build SDK, not the
deployment target, so the iOS 15 / macOS 11 floor (SDK-2632) is unaffected.


Note

Low Risk
Changes are limited to CI workflow configuration; no library runtime, auth, or deployment-target behavior is modified.

Overview
Aligns GitHub Actions with Apple’s App Store toolchain requirement (Xcode 26 / iOS 26 SDK by 2026-04-28) by moving lint, build-apple, and contract-tests to macos-26, pinning xcode-version: '26' where xcodebuild or an explicit toolchain is needed, and dropping redundant Xcode setup from lint (runner default).

test-macos, test-linux, and test-windows are replaced by a single test job with a matrix (Swift 6.0/6.1 on Linux containers, macOS with conditional Xcode 26 selection, Windows with gha-setup-swift 6.1), all using ./.github/actions/test-swiftpm. test-thread-sanitizer stays on Ubuntu/swift:6.1.

Adds a short workflow comment explaining pure-Swift vs xcodebuild jobs and why contract-tests remain macOS-only (Kitura/OpenSSL 1.1).

Reviewed by Cursor Bugbot for commit 704b28b. Bugbot is set up for automated code reviews on this repo. Configure here.

@keelerm84 keelerm84 requested a review from a team as a code owner July 1, 2026 18:07
@keelerm84 keelerm84 force-pushed the mk/SDK-2633/get-last-event-id-race branch 2 times, most recently from 3845aa0 to b8cd872 Compare July 1, 2026 18:43
@keelerm84 keelerm84 force-pushed the mk/SDK-2634/ci-xcode-26 branch from fe6dd53 to 101b9ae Compare July 1, 2026 18:43
@keelerm84 keelerm84 force-pushed the mk/SDK-2633/get-last-event-id-race branch from b8cd872 to efa6daf Compare July 1, 2026 18:51
@keelerm84 keelerm84 force-pushed the mk/SDK-2634/ci-xcode-26 branch 2 times, most recently from b6ee56c to 823dff9 Compare July 1, 2026 19:16
Restructure CI to mirror swift-core: the library and its tests run on the full
OS matrix via the pure-Swift toolchain (swift test), and Xcode is confined to
the one job that genuinely needs it.

- Collapse the separate test-macos / test-linux / test-windows jobs into a
  single matrixed `test` job running `swift test` on linux (6.0/6.1), macos, and
  windows. The macOS entry uses macos-26 + Xcode 26, the toolchain Apple
  requires for App Store submission as of 2026-04-28 (on macOS `swift` comes
  from the selected Xcode).
- build-apple is the only xcodebuild job: it cross-compiles to
  iOS/tvOS/watchOS/macOS (SwiftPM cannot target the non-host Apple platforms).
  Bumped to macos-26 / Xcode 26.
- lint drops its setup-xcode step; swiftlint is a standalone binary.
- contract-tests stays on macOS + Xcode 26: its Kitura-based service pulls in
  BlueSSLService, which uses the OpenSSL 1.1 API removed in OpenSSL 3 and so
  cannot build on the Linux (Ubuntu 24.04) swift container.

test-thread-sanitizer already runs on Linux (added in the preceding commit).

Orthogonal to the deployment floor: Apple's mandate governs the build SDK, not
the deployment target, so the iOS 15 / macOS 11 floor (SDK-2632) is unaffected.
@keelerm84 keelerm84 force-pushed the mk/SDK-2634/ci-xcode-26 branch from 823dff9 to 704b28b Compare July 1, 2026 19:23
@keelerm84 keelerm84 closed this Jul 1, 2026
@keelerm84 keelerm84 deleted the mk/SDK-2634/ci-xcode-26 branch July 1, 2026 19:25
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