From fb8e5168577faef56b7c455db76c28a6e15c6187 Mon Sep 17 00:00:00 2001 From: Jean-Emmanuel BAILLAT Date: Mon, 26 Oct 2026 22:59:50 +0100 Subject: [PATCH] ci: pin macos-15, Xcode 26.3 and the 10.0.203 iOS toolchain macos-latest and unpinned SDK/workload installs let the runner build the native artifacts with whatever Xcode and iOS packs the image ships. Consumers building with Xcode 26.3 could then fail to link the published package. Pin the runner, select Xcode 26.3, and install SDK and workload set 10.0.203, the same baseline as the other iOS interop packages. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 10 +++++++--- .github/workflows/publish.yml | 10 +++++++--- .github/workflows/sample-ios.yml | 29 +++++------------------------ 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42a355b..0a07793 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,20 +9,24 @@ permissions: jobs: build_pack_ios: - runs-on: macos-latest + runs-on: macos-15 steps: - uses: actions/checkout@v4 + - name: Select Xcode 26.3 + # Pinned: the native artifacts must stay consumable by Xcode 26.3 toolchains. + run: sudo xcode-select --switch /Applications/Xcode_26.3.app/Contents/Developer + - uses: actions/setup-dotnet@v4 with: - dotnet-version: "10.0.x" + dotnet-version: "10.0.203" - name: Validate feature selection run: bash tests/validate-feature-selection.sh - name: Install iOS workload run: | - dotnet workload install ios + dotnet workload install ios --version 10.0.203 - name: Cache NuGet uses: actions/cache@v4 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index fa519bb..15bdae9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,7 +17,7 @@ permissions: jobs: pack_and_publish: - runs-on: macos-latest + runs-on: macos-15 permissions: contents: read packages: write @@ -67,16 +67,20 @@ jobs: echo "Package version: ${VERSION}" echo "Publish target: ${PUBLISH_TARGET}" + - name: Select Xcode 26.3 + # Pinned: the native artifacts must stay consumable by Xcode 26.3 toolchains. + run: sudo xcode-select --switch /Applications/Xcode_26.3.app/Contents/Developer + - uses: actions/setup-dotnet@v4 with: - dotnet-version: "10.0.x" + dotnet-version: "10.0.203" - name: Validate feature selection run: bash tests/validate-feature-selection.sh - name: Install iOS workload run: | - dotnet workload install ios + dotnet workload install ios --version 10.0.203 - name: Cache NuGet uses: actions/cache@v4 diff --git a/.github/workflows/sample-ios.yml b/.github/workflows/sample-ios.yml index 5800a95..80c3744 100644 --- a/.github/workflows/sample-ios.yml +++ b/.github/workflows/sample-ios.yml @@ -19,37 +19,18 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Setup Xcode 26.0 - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: "26.0" + - name: Select Xcode 26.3 + # Pinned: the native artifacts must stay consumable by Xcode 26.3 toolchains. + run: sudo xcode-select --switch /Applications/Xcode_26.3.app/Contents/Developer - uses: actions/setup-dotnet@v4 with: - dotnet-version: "10.0.x" - - - name: Pin workload update mode (manifests) - shell: bash - run: | - dotnet workload config --update-mode manifests - dotnet workload config --update-mode - - - name: Purge incompatible iOS packs (cache defense) - shell: bash - run: | - set -euo pipefail - PACKS_DIR="$HOME/.dotnet/packs" - for v in 26.2; do - if [ -d "$PACKS_DIR" ] && compgen -G "$PACKS_DIR/Microsoft.iOS.*_${v}*" > /dev/null; then - echo "Removing cached iOS ${v} packs from $PACKS_DIR" - rm -rf "$PACKS_DIR"/Microsoft.iOS.*_${v}* - fi - done + dotnet-version: "10.0.203" - name: Install iOS workload shell: bash run: | - dotnet workload install ios --skip-manifest-update + dotnet workload install ios --version 10.0.203 - name: Diagnostics (.NET + workloads) shell: bash