Skip to content
Closed
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
2 changes: 1 addition & 1 deletion .github/workflows/benchmarking.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ jobs:
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
- name: Upload dSYMs
run: |
sentry-cli --auth-token ${{ secrets.SENTRY_AUTH_TOKEN }} upload-dif --org sentry-sdks --project sentry-cocoa DerivedData/Build/Products/Debug-iphoneos/iOS-Swift.app.dSYM
sentry-cli --auth-token "${{ secrets.SENTRY_AUTH_TOKEN }}" upload-dif --org sentry-sdks --project sentry-cocoa DerivedData/Build/Products/Debug-iphoneos/iOS-Swift.app.dSYM
- name: Archiving DerivedData
uses: actions/upload-artifact@v4
with:
Expand Down
174 changes: 147 additions & 27 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,22 +99,58 @@ jobs:
- scheme: iOS-ObjectiveC
config: DebugV9

# Xcode 26 configurations for testing new OS versions
- scheme: macOS-Swift
config: Debug
xcode: "26.0"
destination-os: "26.0"
- scheme: iOS-Swift
config: Debug
xcode: "26.0"
platform: "iOS"
destination-os: "26.0"
device: "iPhone 16e"
- scheme: tvOS-Swift
config: Debug
xcode: "26.0"
platform: "tvOS"
destination-os: "26.0"
device: "Apple TV"
- scheme: visionOS-Swift
config: Debug
xcode: "26.0"
platform: "visionOS"
destination-os: "26.0"
device: "Apple Vision Pro"
- scheme: watchOS-Swift WatchKit App
config: Debug
xcode: "26.0"
platform: "watchOS"
destination-os: "26.0"
device: "Apple Watch Series 10 (46mm)"

steps:
- uses: actions/checkout@v5
- run: ./scripts/ci-select-xcode.sh 16.4
- run: ./scripts/ci-select-xcode.sh "${{ matrix.xcode || '16.4' }}"
- name: Install required platforms for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != ''
run: ./scripts/ci-install-platforms.sh --platforms "${{matrix.platform}}"
- name: Create simulator device for Xcode 26
if: matrix.xcode == '26.0' && matrix.device != ''
run: ./scripts/ci-create-simulator.sh --platform "${{matrix.platform}}" --os-version "${{matrix.destination-os}}" --device-name "${{matrix.device}}"
- run: make init-ci-build
- run: make xcode-ci

# Note: Due to complexity in implementing the CODE_SIGNING_ALLOWED flag in the sentry-xcodebuild.sh script,
# we did not yet migrate this step to use the script yet.
- run: >-
env NSUnbufferedIO=YES
xcodebuild
-workspace Sentry.xcworkspace
-scheme '${{matrix.scheme}}'
-configuration ${{matrix.config}}
CODE_SIGNING_ALLOWED="NO"
build
- run: |
set -o pipefail && NSUnbufferedIO=YES \
xcodebuild \
-workspace Sentry.xcworkspace \
-scheme "${{matrix.scheme}}" \
-configuration "${{matrix.config}}" \
CODE_SIGNING_ALLOWED="NO" \
build | tee raw-build-output.log | xcbeautify
- name: Archiving Raw Build Logs
uses: actions/upload-artifact@v4
Expand All @@ -134,15 +170,57 @@ jobs:
# Don't run this on release branches, cause the SPM Package.swift points to the unreleased versions.
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_build_for_prs == 'true')
needs: files-changed
strategy:
fail-fast: false
matrix:
include:
- name: Xcode 16
destination_os: "18.5"
xcode: "16.4"
- name: Xcode 26
ios_device: "iPhone 16e"
watch_device: "Apple Watch Series 10 (46mm)"
destination_os: "26.0"
xcode: "26.0"
platform: "iPhoneOS,watchOS"
steps:
- uses: actions/checkout@v5

- run: ./scripts/ci-select-xcode.sh 16.4
- name: Select Xcode version
run: ./scripts/ci-select-xcode.sh "${{ matrix.xcode }}"
shell: sh
- run: rm -r Sentry.xcodeproj && rm -r Sentry.xcworkspace
- run: set -o pipefail && NSUnbufferedIO=YES EXPERIMENTAL_SPM_BUILDS=1 xcodebuild build -scheme SentrySPM -sdk watchos -destination 'generic/platform=watchOS' | tee raw-build-output-spm-watchos.log | xcbeautify

- name: Remove Sentry.xcodeproj and Sentry.xcworkspace
run: rm -r Sentry.xcodeproj && rm -r Sentry.xcworkspace

- name: Install required platforms for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != ''
run: ./scripts/ci-install-platforms.sh --platforms "${{ matrix.platform }}"

- name: Create iOS simulator device for Xcode 26
if: matrix.xcode == '26.0' && matrix.ios_device != ''
run: ./scripts/ci-create-simulator.sh --platform "iOS" --os-version "${{matrix.destination_os}}" --device-name "${{matrix.ios_device}}"

- name: Create watchOS simulator device for Xcode 26
if: matrix.xcode == '26.0' && matrix.watch_device != ''
run: ./scripts/ci-create-simulator.sh --platform "watchOS" --os-version "${{matrix.destination_os}}" --device-name "${{matrix.watch_device}}"

- name: Build SPM for watchOS
run: |
set -o pipefail && NSUnbufferedIO=YES EXPERIMENTAL_SPM_BUILDS=1 xcodebuild \
-scheme SentrySPM \
-sdk watchos \
-destination 'generic/platform=watchOS' \
build | tee raw-build-output-spm-watchos.log | xcbeautify
shell: sh
- run: set -o pipefail && NSUnbufferedIO=YES EXPERIMENTAL_SPM_BUILDS=1 xcodebuild build -scheme SentrySPM -sdk iphoneos -destination 'generic/platform=iphoneos' | tee raw-build-output-spm-iphoneos.log | xcbeautify
- name: Build SPM for iPhoneOS
run: |
set -o pipefail && NSUnbufferedIO=YES EXPERIMENTAL_SPM_BUILDS=1 \
xcodebuild \
-scheme SentrySPM \
-sdk iphoneos \
-destination 'generic/platform=iphoneos' \
build | tee raw-build-output-spm-iphoneos.log | xcbeautify
shell: sh

- name: Upload SPM Build Logs
Expand All @@ -163,21 +241,40 @@ jobs:
if: github.event_name != 'pull_request' || needs.files-changed.outputs.run_build_for_prs == 'true'
needs: files-changed
runs-on: macos-15
strategy:
fail-fast: false
matrix:
include:
- platform: iOS
device: "iPhone 16"
destination-os: "18.5"
xcode: "16.4"
- platform: iOS
device: "iPhone 16e"
destination-os: "26.0"
xcode: "26.0"
steps:
- uses: actions/checkout@v5
- run: ./scripts/ci-select-xcode.sh 16.4
- name: Select Xcode version
run: ./scripts/ci-select-xcode.sh "${{ matrix.xcode }}"
- name: Install required platforms for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != ''
run: ./scripts/ci-install-platforms.sh --platforms "${{ matrix.platform }}"
- name: Create simulator device for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != '' && matrix.destination-os != '' && matrix.device != ''
run: ./scripts/ci-create-simulator.sh --platform "iOS" --os-version "${{matrix.destination-os}}" --device-name "${{matrix.device}}"
- run: |
./scripts/sentry-xcodebuild.sh \
--platform iOS \
--os 18.5 \
--platform "${{ matrix.platform }}" \
--os "${{ matrix.destination-os }}" \
--command build \
--device "iPhone 16" \
--device "${{ matrix.device }}" \
--configuration DebugV9
- name: Archiving Raw Build Logs
uses: actions/upload-artifact@v4
if: ${{ failure() || cancelled() }}
with:
name: raw-build-output-v9
name: raw-build-output-v9-os-${{ matrix.destination-os }}
path: |
raw-build-output.log
- name: Debug Xcode environment
Expand All @@ -197,7 +294,7 @@ jobs:
./scripts/sentry-xcodebuild.sh \
--platform iOS \
--os latest \
--ref ${{ github.ref }} \
--ref "${{ github.ref }}" \
--command build \
--device "iPhone 15" \
--configuration DebugWithoutUIKit \
Expand All @@ -222,7 +319,7 @@ jobs:
./scripts/sentry-xcodebuild.sh \
--platform iOS \
--os latest \
--ref ${{ github.ref }} \
--ref "${{ github.ref }}" \
--command build \
--device "iPhone 15" \
--configuration ReleaseWithoutUIKit \
Expand All @@ -247,7 +344,7 @@ jobs:
./scripts/sentry-xcodebuild.sh \
--platform iOS \
--os latest \
--ref ${{ github.ref }} \
--ref "${{ github.ref }}" \
--command build \
--device "iPhone 15" \
--configuration Debug \
Expand All @@ -272,7 +369,7 @@ jobs:
./scripts/sentry-xcodebuild.sh \
--platform iOS \
--os latest \
--ref ${{ github.ref }} \
--ref "${{ github.ref }}" \
--command build \
--device "iPhone 15" \
--configuration Release \
Expand All @@ -293,6 +390,18 @@ jobs:
if: github.event_name != 'pull_request' || needs.files-changed.outputs.run_build_for_prs == 'true'
needs: files-changed
runs-on: macos-15
strategy:
fail-fast: false
matrix:
include:
- platform: iOS
device: "iPhone 16"
destination-os: "18.5"
xcode: "16.4"
- platform: iOS
device: "iPhone 16e"
destination-os: "26.0"
xcode: "26.0"
steps:
- uses: actions/checkout@v5

Expand All @@ -305,16 +414,27 @@ jobs:
sed -i '' 's/#define SENTRY_ASYNC_SAFE_LOG_LEVEL SENTRY_ASYNC_SAFE_LOG_LEVEL_ERROR/#define SENTRY_ASYNC_SAFE_LOG_LEVEL SENTRY_ASYNC_SAFE_LOG_LEVEL_TRACE/' Sources/Sentry/SentryAsyncSafeLog.h
shell: bash

- run: ./scripts/ci-select-xcode.sh 16.4
- name: Select Xcode version
run: ./scripts/ci-select-xcode.sh "$XCODE_VERSION"
env:
XCODE_VERSION: ${{ matrix.xcode }}

- name: Install required platforms for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != ''
run: ./scripts/ci-install-platforms.sh --platforms "${{ matrix.platform }}"

- name: Create simulator device for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != '' && matrix.destination-os != '' && matrix.device != ''
run: ./scripts/ci-create-simulator.sh --platform "iOS" --os-version "${{matrix.destination-os}}" --device-name "${{matrix.device}}"

- name: Build for Debug
run: |
./scripts/sentry-xcodebuild.sh \
--platform iOS \
--os latest \
--ref ${{ github.ref }} \
--platform "${{ matrix.platform }}" \
--os "${{ matrix.destination-os }}" \
--ref "${{ github.ref }}" \
--command build \
--device "iPhone 16" \
--device "${{ matrix.device }}" \
--configuration Debug
- name: Debug Xcode environment
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint-cocoapods-specs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
# We need to update the spec-repo, because it can happen that it is not up to date and then the lint fails.
- run: pod repo update
- name: Validate Podspec
run: ./scripts/pod-lib-lint.sh ${{ matrix.platform }} ${{ matrix.podspec}} ${{ matrix.library_type}}
run: ./scripts/pod-lib-lint.sh "${{ matrix.platform }}" "${{ matrix.podspec}}" "${{ matrix.library_type}}"
- name: Run CI Diagnostics
if: failure()
run: ./scripts/ci-diagnostics.sh
Expand Down
48 changes: 39 additions & 9 deletions .github/workflows/test-cross-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,18 @@ jobs:
runs-on: macos-15
# This job can take a while to run, so we set a timeout.
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- platform: iOS
device: "iPhone 16"
destination-os: "18.5"
xcode: "16.4"
- platform: iOS
device: "iPhone 16e"
destination-os: "26.0"
xcode: "26.0"
steps:
- uses: actions/checkout@v5
with:
Expand All @@ -65,7 +77,16 @@ jobs:
node-version: 18
cache: "yarn"
cache-dependency-path: sentry-react-native/yarn.lock
- run: ./sentry-cocoa/scripts/ci-select-xcode.sh 16.4
- name: Select Xcode version
run: ./sentry-cocoa/scripts/ci-select-xcode.sh "${{matrix.xcode}}"

- name: Install required platforms for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != ''
run: ./sentry-cocoa/scripts/ci-install-platforms.sh --platforms "${{matrix.platform}}"

- name: Create simulator device for Xcode 26
if: matrix.xcode == '26.0' && matrix.platform != '' && matrix.destination-os != '' && matrix.device != ''
run: ./sentry-cocoa/scripts/ci-create-simulator.sh --platform "${{matrix.platform}}" --os-version "${{matrix.destination-os}}" --device-name "${{matrix.device}}"

- name: Install SDK JS Dependencies
working-directory: sentry-react-native
Expand All @@ -90,18 +111,27 @@ jobs:
env:
SCHEME: RNSentryCocoaTester
CONFIGURATION: Release
DESTINATION: "platform=iOS Simulator,OS=latest,name=iPhone 16"
run: |
set -o pipefail
env NSUnbufferedIO=YES \
xcodebuild -workspace *.xcworkspace \
-scheme $SCHEME -configuration $CONFIGURATION \
DESTINATION: "platform=iOS Simulator,OS=${{matrix.destination-os}},name=${{matrix.device}}"
run: >-
set -o pipefail && NSUnbufferedIO=YES xcodebuild \
-workspace *.xcworkspace \
-scheme $SCHEME \
-configuration $CONFIGURATION \
-destination "$DESTINATION" \
test SWIFT_ACTIVE_COMPILATION_CONDITIONS=CROSS_PLATFORM_TEST GCC_PREPROCESSOR_DEFINITIONS"=CROSS_PLATFORM_TEST=1" | xcbeautify
SWIFT_ACTIVE_COMPILATION_CONDITIONS=CROSS_PLATFORM_TEST \
GCC_PREPROCESSOR_DEFINITIONS"=CROSS_PLATFORM_TEST=1" \
test | tee raw-test-output.log | xcbeautify
- name: Archiving Raw Test Logs
uses: actions/upload-artifact@v4
if: ${{ failure() || cancelled() }}
with:
name: raw-test-output-RNSentryCocoaTester-${{matrix.xcode}}-${{matrix.platform}}-${{matrix.destination-os}}-${{matrix.device}}
path: raw-test-output.log

- name: Run CI Diagnostics
if: failure()
run: ./scripts/ci-diagnostics.sh
run: ./sentry-cocoa/scripts/ci-diagnostics.sh

test_cross_platform-required-check:
needs:
Expand Down
Loading
Loading