Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 26 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,11 +144,12 @@ jobs:
yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}"

build-ios:
# Pinned: macos-latest is mid-migration to macOS 26, whose simulator set
# has no iPhone 16 Pro on an iOS >=26 runtime, breaking the harness boot.
runs-on: macos-15
# Trial: Cirrus Runners' macOS 26 (Tahoe) image on Apple Silicon. The
# runner image ships the 3 latest Xcodes (26.0.1/26.1.1/26.2) plus the
# `xcodes` switcher, so XCODE_VERSION must be one of those.
runs-on: ghcr.io/cirruslabs/macos-runner:tahoe
env:
XCODE_VERSION: 26.3
XCODE_VERSION: 26.2
TURBO_CACHE_DIR: .turbo/ios
steps:
- name: Checkout
Expand All @@ -174,11 +175,9 @@ jobs:
echo "turbo_cache_hit=1" >> $GITHUB_ENV
fi

- name: Use appropriate Xcode version
- name: Select Xcode version
if: env.turbo_cache_hit != 1
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ env.XCODE_VERSION }}
run: sudo xcodes select ${{ env.XCODE_VERSION }}

- name: Restore cocoapods
if: env.turbo_cache_hit != 1
Expand Down Expand Up @@ -214,23 +213,20 @@ jobs:
yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}"

test-harness-ios:
# Pinned to macos-15 — see build-ios. macos-26 runners lack a matching
# iPhone 16 Pro / iOS >=26 simulator, so the boot step fails intermittently.
runs-on: macos-15
# Trial: Cirrus Runners — see build-ios.
runs-on: ghcr.io/cirruslabs/macos-runner:tahoe
timeout-minutes: 60
env:
XCODE_VERSION: 26.3
XCODE_VERSION: 26.2
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup
uses: ./.github/actions/setup

- name: Use appropriate Xcode version
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ env.XCODE_VERSION }}
- name: Select Xcode version
run: sudo xcodes select ${{ env.XCODE_VERSION }}

- name: Restore cocoapods
id: cocoapods-cache
Expand Down Expand Up @@ -279,6 +275,20 @@ jobs:
path: example/ios/build
key: ${{ steps.ios-build-cache.outputs.cache-primary-key }}

# The Cirrus image only pre-creates devices for its oldest runtime (iOS 18),
# and simulator-action doesn't create devices — make one on iOS 26 explicitly.
- name: Create iPhone 16 Pro simulator on iOS 26
run: |
runtime=$(xcrun simctl list runtimes available | awk '/^iOS 26/{id=$NF} END{print id}')
if [ -z "$runtime" ]; then
echo "No iOS 26 runtime installed; downloading via xcodebuild"
sudo xcodebuild -downloadPlatform iOS
runtime=$(xcrun simctl list runtimes available | awk '/^iOS 26/{id=$NF} END{print id}')
fi
echo "Creating iPhone 16 Pro on $runtime"
xcrun simctl create 'iPhone 16 Pro' com.apple.CoreSimulator.SimDeviceType.iPhone-16-Pro "$runtime"
xcrun simctl list devices available

- name: Boot iOS Simulator
uses: futureware-tech/simulator-action@v4
with:
Expand Down
Loading