Skip to content
Open
Show file tree
Hide file tree
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
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -371,18 +371,18 @@ jobs:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
# On PRs only the newest simulator runs; `17.0` is an OS-compat axis (not SDK behavior) and runs on main.
ios-version: ${{ github.event_name == 'pull_request' && fromJSON('["latest"]') || fromJSON('["17.0", "latest"]') }}
# On PRs only the newest simulator runs; `18.5` is an OS-compat axis (not SDK behavior) and runs on main.
ios-version: ${{ github.event_name == 'pull_request' && fromJSON('["latest"]') || fromJSON('["18.5", "latest"]') }}
init-type: ["runtime", "buildtime"]
# Check https://support.apple.com/en-us/HT201222 for the latest minor version for a given major one.
# https://developer.apple.com/support/app-store/ shows that of all iOS devices
# - `iOS 18`: 88 %
# - `iOS 17`: 17 %
# - the rest: 4 %
# as of August, 2025. Therefore, let's stick to testing iOS 17 and `latest` for now.
# https://developer.apple.com/support/app-store/ shows that of all iPhones
# - `iOS 26`: 79 %
# - `iOS 18`: 14 %
# - the rest: 7 %
# as of June, 2026. Therefore, let's stick to testing iOS 18 and `latest` for now.
# Numbers as string otherwise GH will reformat the runtime numbers removing the fractions.
# Also make sure to match the versions available here:
# - https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
# - https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md

test-run-webgl:
name: Run WebGL ${{ matrix.unity-version }} Integration Test
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/test-compile-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ defaults:
jobs:
compile:
name: ${{ inputs.unity-version }} ${{ inputs.init-type }}
runs-on: 'macos-14' # Pinning to get the oldest, supported version of iOS simulator
runs-on: 'macos-15' # Pinning to get the oldest, supported version of iOS simulator

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: The workflow specifies Xcode 15.0 and the iOS 17.0 simulator, which are unavailable on the selected macos-15 runner, causing build failures.
Severity: HIGH

Suggested Fix

To resolve the incompatibility, either switch to a runner that supports Xcode 15, such as macos-14, or update the workflows to use an Xcode version available on macos-15 (e.g., Xcode 16) and a corresponding iOS simulator.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.

Location: .github/workflows/test-compile-ios.yml#L19

Potential issue: The `test-compile-ios.yml` and `test-run-ios.yml` workflows attempt to
use Xcode 15.0 and the corresponding iOS 17.0 simulator on `macos-15` runners. However,
`macos-15` runners do not have Xcode 15.x or its associated runtimes pre-installed; they
only provide Xcode 16.x versions. This version mismatch will cause the `setup-xcode`
action and `xcodebuild` commands to fail, breaking the iOS test and compile workflows.

Also affects:

  • .github/workflows/test-run-ios.yml:32

Did we get this right? 👍 / 👎 to inform future reviews.

Comment thread
cursor[bot] marked this conversation as resolved.
env:
UNITY_VERSION: ${{ inputs.unity-version }}
INIT_TYPE: ${{ inputs.init-type }}
Expand Down Expand Up @@ -47,7 +47,7 @@ jobs:

- name: Compile Xcode project without Sentry
if: ${{ inputs.init-type == 'runtime' && steps.cache-compiled-nosentry.outputs.cache-hit != 'true' }}
run: ./scripts/compile-xcode-project.ps1 -iOSMinVersion "17.0"
run: ./scripts/compile-xcode-project.ps1 -iOSMinVersion "18.5"
timeout-minutes: 20

- name: Save compiled app without Sentry
Expand All @@ -73,7 +73,7 @@ jobs:
run: tar -xvzf "test-app-$env:INIT_TYPE.tar.gz"

- name: iOS test
run: ./scripts/compile-xcode-project.ps1 -iOSMinVersion "17.0"
run: ./scripts/compile-xcode-project.ps1 -iOSMinVersion "18.5"
timeout-minutes: 20

- name: Assert symbols and sources were uploaded
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-run-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ defaults:
jobs:
run:
name: ${{ inputs.unity-version }} ${{ inputs.ios-version }} ${{ inputs.init-type }}
runs-on: macos-14 # Pinning to get the oldest, supported version of iOS simulator
runs-on: macos-15 # Pinning to get the oldest, supported version of iOS simulator
# Map the job outputs to step outputs
outputs:
status: ${{ steps.integration-test.outputs.status }}
Expand Down Expand Up @@ -63,7 +63,7 @@ jobs:
if: ${{ env.IOS_VERSION != 'latest'}}
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
xcode-version: '15.0' # to run iOS 17.0 we need Xcode 15.0
xcode-version: '16.4' # to run iOS 18.5 we need Xcode 16.4

- name: Run iOS Integration Tests
id: integration-test
Expand Down
4 changes: 2 additions & 2 deletions test/IntegrationTest/Integration.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# SENTRY_TEST_SCRIPTING_BACKEND: set to "mono" for a Mono player; empty means IL2CPP
#
# Platform-specific environment variables:
# iOS: SENTRY_IOS_VERSION - iOS simulator version (e.g. "17.0" or "latest")
# iOS: SENTRY_IOS_VERSION - iOS simulator version (e.g. "18.5" or "latest")
# Xbox: XBCONNECT_TARGET - Xbox devkit IP address

Set-StrictMode -Version latest
Expand Down Expand Up @@ -322,7 +322,7 @@ BeforeAll {
$script:ExecutablePath = "com.DefaultCompany.IntegrationTest"

$target = $env:SENTRY_IOS_VERSION
# Convert bare version numbers (e.g. "17.0") to "iOS 17.0" format expected by iOSSimulatorProvider
# Convert bare version numbers (e.g. "18.5") to "iOS 18.5" format expected by iOSSimulatorProvider
if ($target -match '^\d+\.\d+$') {
$target = "iOS $target"
}
Expand Down
Loading