From b98cc216ad835e49fc57dfee39142e8953fce608 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Tue, 20 Oct 2026 23:24:53 +0200 Subject: [PATCH] Build releases on the Xcode 27.1 runner The iPhone Duo hinge and status-column code uses iOS 27.1 SDK APIs, which the macos-26 image (Xcode 26.6 max) cannot compile. Build jobs move to the xcode-27 runner and select the 27.1 RC by full path, since the Xcode_27.1.app symlink is ambiguous with the beta and App Store Connect rejects beta-built uploads. --- .github/workflows/release.yml | 40 ++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4515454b..76e0e262 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -83,9 +83,15 @@ jobs: if: ${{ inputs.build_ios }} needs: [determine_build_number] name: Release iOS to TestFlight - runs-on: macos-26 + runs-on: xcode-27 steps: - uses: actions/checkout@v4 + - name: Select Xcode 27.1 RC + # Pinned by full path: the Xcode_27.1.app symlink is ambiguous between + # beta and RC, and App Store Connect rejects beta-built uploads. + run: | + sudo xcode-select -s /Applications/Xcode_27.1_Release_Candidate.app + xcodebuild -version - uses: ruby/setup-ruby@v1 with: ruby-version: '3.4' @@ -109,9 +115,15 @@ jobs: if: ${{ inputs.build_tvos }} needs: [determine_build_number] name: Release tvOS to TestFlight - runs-on: macos-26 + runs-on: xcode-27 steps: - uses: actions/checkout@v4 + - name: Select Xcode 27.1 RC + # Pinned by full path: the Xcode_27.1.app symlink is ambiguous between + # beta and RC, and App Store Connect rejects beta-built uploads. + run: | + sudo xcode-select -s /Applications/Xcode_27.1_Release_Candidate.app + xcodebuild -version - uses: ruby/setup-ruby@v1 with: ruby-version: '3.4' @@ -135,9 +147,15 @@ jobs: if: ${{ inputs.build_mac_beta }} needs: [determine_build_number] name: Release macOS to TestFlight - runs-on: macos-26 + runs-on: xcode-27 steps: - uses: actions/checkout@v4 + - name: Select Xcode 27.1 RC + # Pinned by full path: the Xcode_27.1.app symlink is ambiguous between + # beta and RC, and App Store Connect rejects beta-built uploads. + run: | + sudo xcode-select -s /Applications/Xcode_27.1_Release_Candidate.app + xcodebuild -version - uses: ruby/setup-ruby@v1 with: ruby-version: '3.4' @@ -161,12 +179,18 @@ jobs: if: ${{ inputs.build_mac_notarized }} needs: [determine_build_number] name: Build and notarize macOS app - runs-on: macos-26 + runs-on: xcode-27 env: BUILD_NUMBER: ${{ needs.determine_build_number.outputs.build_number }} VERSION_NUMBER: ${{ needs.determine_build_number.outputs.version_number }} steps: - uses: actions/checkout@v4 + - name: Select Xcode 27.1 RC + # Pinned by full path: the Xcode_27.1.app symlink is ambiguous between + # beta and RC, and App Store Connect rejects beta-built uploads. + run: | + sudo xcode-select -s /Applications/Xcode_27.1_Release_Candidate.app + xcodebuild -version - uses: ruby/setup-ruby@v1 with: ruby-version: '3.4' @@ -248,7 +272,7 @@ jobs: if: ${{ inputs.build_mac_notarized && inputs.create_release && !cancelled() && !failure() }} needs: [determine_build_number, mac_notarized, release] name: Publish Sparkle appcast - runs-on: macos-26 + runs-on: xcode-27 permissions: contents: write env: @@ -268,6 +292,12 @@ jobs: - uses: actions/checkout@v4 with: token: ${{ secrets.REPO_TOKEN }} + - name: Select Xcode 27.1 RC + # Pinned by full path: the Xcode_27.1.app symlink is ambiguous between + # beta and RC, and App Store Connect rejects beta-built uploads. + run: | + sudo xcode-select -s /Applications/Xcode_27.1_Release_Candidate.app + xcodebuild -version - name: Download notarized mac artifact uses: actions/download-artifact@v4 with: