Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
8f396d4
Add `SenrtySwiftLog` integration
denrase Dec 1, 2025
2e79d06
Add default `swift package init` .gitignore
denrase Dec 1, 2025
f4c75d2
chore: Add test workflow for swift log
itaybre Dec 1, 2025
5c5779f
Add macOS version
itaybre Dec 1, 2025
01001dc
Remove file-filter
itaybre Dec 1, 2025
2e9908c
Update integration's package to use local path
itaybre Dec 1, 2025
c3a610e
Merge branch 'main' into feat/add-swift-log-integration
denrase Dec 3, 2025
9fdbc39
Add ci job to run test
denrase Dec 3, 2025
b096852
Add files-changed gate
denrase Dec 3, 2025
b00d89e
Fix example commands
itaybre Dec 3, 2025
c0d95c7
Add SPM test to required checks
itaybre Dec 3, 2025
d1851a8
Merge branch 'main' into feat/add-swift-log-integration
denrase Dec 4, 2025
5a72187
update folder structure
denrase Dec 4, 2025
2077ce0
update name
denrase Dec 4, 2025
6516a2e
Update `sentry-xcodebuild.sh` to be compatible with SPM packages
itaybre Dec 4, 2025
7ab3886
Add `--update-path-to-sentry-cocoa` to prepare-package.sh
itaybre Dec 4, 2025
77e3f6e
Improve script
itaybre Dec 4, 2025
6636b7b
Reuse existing `unit-test-common.yml`
itaybre Dec 4, 2025
a12905b
Fix path
itaybre Dec 4, 2025
6ed3e63
Update GitHub Actions workflow to use 'runs-on' for macOS version
itaybre Dec 4, 2025
bb5691d
Remove unnecesary files
itaybre Dec 4, 2025
8171057
Add missing parameters
itaybre Dec 4, 2025
870d82f
Update GitHub Actions workflow to correct script path for package pre…
itaybre Dec 4, 2025
14d9475
Add debugging steps to unit-test-common.yml for improved visibility d…
itaybre Dec 4, 2025
91ec7b7
Merge branch 'feat/add-swift-log-integration' of github.com:getsentry…
itaybre Dec 4, 2025
b063217
Update paths
itaybre Dec 4, 2025
e7db089
Update path
itaybre Dec 4, 2025
4162a71
Update path in prepare-package.sh for Sentry Cocoa package reference
itaybre Dec 4, 2025
2fd7b3f
Add support for testing SPM packages in CI workflows
itaybre Dec 4, 2025
250507b
Add comment
itaybre Dec 4, 2025
237c86f
Merge branch 'main' into itay/add_ci_tests
denrase Jan 20, 2026
ca504ad
delete old/unused fils from previous merge
denrase Jan 20, 2026
0760a51
Changed the working directory for SwiftLog integration to SentrySwift…
denrase Jan 20, 2026
86955fd
- Introduced a new workflow for testing 3rd-party integrations, conso…
denrase Jan 20, 2026
32fcad3
Updated the variable name from `path_to_scripts_folder` to `scripts_d…
denrase Jan 20, 2026
ac0c4f5
Update actions/checkout version in 3rd-party integrations workflow to…
denrase Jan 20, 2026
f479878
Add tests for SentrySwiftyBeaver, SentryCocoaLumberjack, and SentryPu…
denrase Jan 20, 2026
0206965
Rename and update the Xcode integration test job to `test-integration…
denrase Jan 20, 2026
3fe0e0e
Merge branch 'main' into itay/add_ci_tests
denrase Jan 20, 2026
4f65361
Update SPM project option handling in sentry-xcodebuild.sh to accept …
denrase Jan 20, 2026
837d9cd
Add default working directory to unit test workflow configuration for…
denrase Jan 20, 2026
d4e24cf
Fix call for --spm-project to use missing param
denrase Jan 20, 2026
53f541d
Inherit secrets in the 3rd-party integrations workflow
denrase Jan 20, 2026
4c633d8
Enhance unit test workflow by specifying working directory for code c…
denrase Jan 20, 2026
108e5ba
diable slather for spm xcodebuild, as we don't have xcodeproj files
denrase Jan 20, 2026
6726660
dont upload codecov
denrase Jan 20, 2026
d20cf5d
bump to 18.5
denrase Jan 20, 2026
a5ba1cd
bump rest to 18.5
denrase Jan 20, 2026
583438c
Update artifact naming in unit test workflow to include scheme for be…
denrase Jan 20, 2026
34cda66
use working dir in Run CI Diagnostics
denrase Jan 20, 2026
4e3ba2e
Merge branch 'main' into itay/add_ci_tests
denrase Jan 20, 2026
0b4b169
Update name groupings
denrase Jan 20, 2026
8c6c320
Merge branch 'main' into itay/add_ci_tests
denrase Jan 20, 2026
cbe2906
Merge branch 'itay/add_ci_tests' of github.com:getsentry/sentry-cocoa…
denrase Jan 20, 2026
6f6e7f1
UPdate name job grouping
denrase Jan 20, 2026
d260bcf
update naming
denrase Jan 20, 2026
ff73067
Merge branch 'main' into itay/add_ci_tests
denrase Jan 20, 2026
f6abcc3
Merge branch 'main' into itay/add_ci_tests
denrase Jan 26, 2026
3d4f9bb
trigger 3rd-party integration tests on source changes
denrase Jan 26, 2026
88f0770
reduce number of runs
denrase Jan 26, 2026
379958a
test third-party integrations against pre-build artefacts instead of …
denrase Jan 26, 2026
26bc1c5
Only build one static target
denrase Jan 26, 2026
4015713
handle local artifacts in shared workflow
denrase Jan 26, 2026
47e59a1
fix path
denrase Jan 26, 2026
79529f1
build sim slice
denrase Jan 26, 2026
a0d342b
Merge branch 'main' into itay/add_ci_tests
denrase Jan 26, 2026
edd2172
use inputs.working_directory for raw logs and archiving test results
denrase Jan 26, 2026
c115fa7
Merge branch 'itay/add_ci_tests' of github.com:getsentry/sentry-cocoa…
denrase Jan 26, 2026
ce7cc6e
add build-xcframeworks to required check
denrase Jan 26, 2026
126f92c
Merge branch 'main' into itay/add_ci_tests
denrase Feb 9, 2026
2495634
remove install + create (like on main)
denrase Feb 9, 2026
40979a0
revert SKIP_SWIFTLINT
denrase Feb 9, 2026
7f8d16a
add simulatorAndmacOSOnly to build-xcframework-local.sh
denrase Feb 9, 2026
06387f2
use sed intead of swift package edit
denrase Feb 9, 2026
e785700
include all related scripts to file filter
denrase Feb 9, 2026
1d8c11f
minor improvements
denrase Feb 9, 2026
72cd026
remove unneeded scripts dir argument
denrase Feb 9, 2026
f096304
don’t install slather for som build
denrase Feb 9, 2026
b6f9f4b
only run spm tests, revert changes to shared tests workflow and build…
denrase Feb 9, 2026
63cb6ee
use macOSOnly
denrase Feb 9, 2026
9df643b
Merge branch 'main' into itay/add_ci_tests
itaybre Feb 10, 2026
152c638
Merge branch 'main' into itay/add_ci_tests
denrase Feb 11, 2026
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
17 changes: 17 additions & 0 deletions .github/file-filters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -528,3 +528,20 @@ run_size_analysis_for_prs: &run_size_analysis_for_prs
# Build configuration
- "Makefile"
- "Brewfile*"

Copy link

Choose a reason for hiding this comment

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

Stale filter triggers unnecessary unit test CI runs

Low Severity

The 3rd-party-integrations/** entry remains in the run_unit_tests_for_prs filter even though all integration test jobs were removed from test.yml. This means PRs that only modify files in 3rd-party-integrations/ will unnecessarily trigger the full unit test suite (build-test-server, unit-tests, unit-tests-with-test-server) in test.yml, wasting CI resources. The entry was previously needed when integration tests lived in test.yml but is now dead weight after the move to the dedicated workflow.

Additional Locations (1)

Fix in Cursor Fix in Web

run_3rd_party_integrations_tests_for_prs: &run_3rd_party_integrations_tests_for_prs
- "Sources/**"
- "3rd-party-integrations/**"

# GH Actions
- ".github/workflows/test-3rd-party-integrations.yml"
- ".github/file-filters.yml"

# Scripts
- "scripts/ci-select-xcode.sh"
- "scripts/ci-diagnostics.sh"
- "scripts/prepare-package.sh"
- "scripts/build-xcframework-local.sh"

# Project files
- "Package*.swift"
132 changes: 132 additions & 0 deletions .github/workflows/test-3rd-party-integrations.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: Test 3rd Party Integrations
on:
push:
branches:
- main
- release/**

pull_request:
types: [opened, synchronize, reopened, labeled]

# Concurrency configuration:
# - We use workflow-specific concurrency groups to allow independent test runs across different workflows
# while preventing multiple runs of the same test suite on the same branch/commit.
# - For pull requests, we cancel in-progress runs when new commits are pushed to save CI resources
# and provide faster feedback on the latest changes.
# - For main branch pushes and scheduled runs, we never cancel in-progress runs to ensure the complete
# test suite always finishes, maintaining the integrity of our main branch quality gates.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
ready-to-merge-gate:
name: Ready-to-merge gate
uses: ./.github/workflows/ready-to-merge-workflow.yml

# This job detects if the PR contains changes that require running tests for 3rd-party integrations.
# If yes, the job will output a flag that will be used by the next job to run the tests for 3rd-party integrations.
# If no, the job will output a flag that will be used by the next job to skip running the tests for 3rd-party integrations.
# At the end of this workflow, we run a check that validates that either all tests for 3rd-party integrations passed or were
# called unit-tests-required-check.
files-changed:
name: Detect File Changes
runs-on: ubuntu-latest
needs: ready-to-merge-gate
# Map a step output to a job output
outputs:
run_3rd_party_integrations_tests_for_prs: ${{ steps.changes.outputs.run_3rd_party_integrations_tests_for_prs }}
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Get changed files
id: changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
with:
token: ${{ github.token }}
filters: .github/file-filters.yml

# Build xcframeworks from source code once for all integration tests.
# This ensures tests use the current source code instead of the latest GitHub release.
# We only build the Static variant since 3rd-party integrations only use the "Sentry" product.
# Intentionally skipped on release branches.
build-xcframeworks:
name: Build XCFrameworks
needs: files-changed
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_3rd_party_integrations_tests_for_prs == 'true')
runs-on: ["ghcr.io/cirruslabs/macos-runner:sequoia", "runner_group_id:10"]
timeout-minutes: 30
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Select Xcode
run: ./scripts/ci-select-xcode.sh 16.4
- name: Build XCFramework (Static)
run: ./scripts/build-xcframework-local.sh macOSOnly StaticOnly --not-signed
- name: Upload XCFrameworks
uses: actions/upload-artifact@v6
with:
name: xcframeworks-for-3rd-party-integration-tests
path: "XCFrameworkBuildPath/*.xcframework.zip"
retention-days: 1

# SPM tests for all 3rd-party integrations
test-integrations-spm:
name: SPM Tests | ${{matrix.integration_dir}}
needs: [files-changed, build-xcframeworks]
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_3rd_party_integrations_tests_for_prs == 'true')
runs-on: ["ghcr.io/cirruslabs/macos-runner:sequoia", "runner_group_id:10"]
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- integration_dir: SentrySwiftLog
- integration_dir: SentrySwiftyBeaver
- integration_dir: SentryCocoaLumberjack
- integration_dir: SentryPulse
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Select Xcode
run: ./scripts/ci-select-xcode.sh 16.4
- name: Download XCFrameworks
uses: actions/download-artifact@v7
with:
name: xcframeworks-for-3rd-party-integration-tests
- name: Modify Package.swift to use local xcframeworks
run: ./scripts/prepare-package.sh --package-file Package.swift --is-pr true --remove-duplicate true --change-path true
- name: Use local sentry-cocoa
working-directory: 3rd-party-integrations/${{matrix.integration_dir}}
run: |
sed -i '' 's|\.package(url: "https://github\.com/getsentry/sentry-cocoa", from: "[^"]*")|.package(name: "sentry-cocoa", path: "../..")|g' Package.swift
- name: Run SPM Tests
working-directory: 3rd-party-integrations/${{matrix.integration_dir}}
run: swift test
- name: Archiving Raw Logs
uses: actions/upload-artifact@v6
if: ${{ failure() || cancelled() }}
with:
name: raw-output-${{matrix.integration_dir}}-integration
path: |
3rd-party-integrations/${{matrix.integration_dir}}/.build/**/*.log
- name: Run CI Diagnostics
if: failure()
run: ./scripts/ci-diagnostics.sh

unit-tests-required-check:
needs:
[
ready-to-merge-gate,
files-changed,
build-xcframeworks,
test-integrations-spm,
]
name: 3rd Party Integration Tests - Required Check
# This is necessary since a failed/skipped dependent job would cause this job to be skipped
if: always()
runs-on: ubuntu-latest
steps:
# If any jobs we depend on fails gets cancelled or times out, this job will fail.
# Skipped jobs are not considered failures.
- name: Check for failures
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: |
echo "One of the 3rd party integration test jobs has failed." && exit 1
132 changes: 0 additions & 132 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -360,134 +360,6 @@ jobs:
device: "Apple Vision Pro"
timeout: 30

# This will be replaced once #6945 is merged.
swiftlog-integration-unit-tests:
name: SentrySwiftLog Unit Tests
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_unit_tests_for_prs == 'true')
needs: files-changed
runs-on: ["ghcr.io/cirruslabs/macos-runner:sequoia", "runner_group_id:10"]
steps:
- uses: actions/checkout@v6

- name: Select Xcode
run: ./scripts/ci-select-xcode.sh 16.4

- name: Setup local sentry-cocoa dependency
working-directory: 3rd-party-integrations/SentrySwiftLog
run: swift package edit sentry-cocoa --path ../..

- name: Run SwiftLog tests
working-directory: 3rd-party-integrations/SentrySwiftLog
run: swift test

- name: Archiving Raw Logs
uses: actions/upload-artifact@v6
if: ${{ failure() || cancelled() }}
with:
name: raw-output-swiftlog-integration
path: |
3rd-party-integrations/SentrySwiftLog/.build/**/*.log

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

# This will be replaced once #6945 is merged.
swiftybeaver-integration-unit-tests:
name: SentrySwiftyBeaver Unit Tests
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_unit_tests_for_prs == 'true')
needs: files-changed
runs-on: ["ghcr.io/cirruslabs/macos-runner:sequoia", "runner_group_id:10"]
steps:
- uses: actions/checkout@v6

- name: Select Xcode
run: ./scripts/ci-select-xcode.sh 16.4

- name: Setup local sentry-cocoa dependency
working-directory: 3rd-party-integrations/SentrySwiftyBeaver
run: swift package edit sentry-cocoa --path ../..

- name: Run SwiftyBeaver tests
working-directory: 3rd-party-integrations/SentrySwiftyBeaver
run: swift test

- name: Archiving Raw Logs
uses: actions/upload-artifact@v6
if: ${{ failure() || cancelled() }}
with:
name: raw-output-swiftybeaver-integration
path: |
3rd-party-integrations/SentrySwiftyBeaver/.build/**/*.log

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

# This will be replaced once #6945 is merged.
cocoalumberjack-integration-unit-tests:
name: SentryCocoaLumberjack Unit Tests
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_unit_tests_for_prs == 'true')
needs: files-changed
runs-on: ["ghcr.io/cirruslabs/macos-runner:sequoia", "runner_group_id:10"]
steps:
- uses: actions/checkout@v6

- name: Select Xcode
run: ./scripts/ci-select-xcode.sh 16.4

- name: Setup local sentry-cocoa dependency
working-directory: 3rd-party-integrations/SentryCocoaLumberjack
run: swift package edit sentry-cocoa --path ../..

- name: Run CocoaLumberjack tests
working-directory: 3rd-party-integrations/SentryCocoaLumberjack
run: swift test

- name: Archiving Raw Logs
uses: actions/upload-artifact@v6
if: ${{ failure() || cancelled() }}
with:
name: raw-output-cocoalumberjack-integration
path: |
3rd-party-integrations/SentryCocoaLumberjack/.build/**/*.log

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

# This will be replaced once #6945 is merged.
pulse-integration-unit-tests:
name: SentryPulse Unit Tests
if: startsWith(github.ref, 'refs/heads/release/') == false && (github.event_name != 'pull_request' || needs.files-changed.outputs.run_unit_tests_for_prs == 'true')
needs: files-changed
runs-on: ["ghcr.io/cirruslabs/macos-runner:sequoia", "runner_group_id:10"]
steps:
- uses: actions/checkout@v6

- name: Select Xcode
run: ./scripts/ci-select-xcode.sh 16.4

- name: Setup local sentry-cocoa dependency
working-directory: 3rd-party-integrations/SentryPulse
run: swift package edit sentry-cocoa --path ../..

- name: Run Pulse tests
working-directory: 3rd-party-integrations/SentryPulse
run: swift test

- name: Archiving Raw Logs
uses: actions/upload-artifact@v6
if: ${{ failure() || cancelled() }}
with:
name: raw-output-pulse-integration
path: |
3rd-party-integrations/SentryPulse/.build/**/*.log

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

# This check validates that either all unit tests passed or were skipped, which allows us
# to make unit tests a required check with only running the unit tests when required.
# So, we don't have to run unit tests, for example, for Changelog or ReadMe changes.
Expand All @@ -499,10 +371,6 @@ jobs:
build-test-server,
distribution-tests,
unit-tests,
swiftlog-integration-unit-tests,
swiftybeaver-integration-unit-tests,
cocoalumberjack-integration-unit-tests,
pulse-integration-unit-tests,
ready-to-merge-gate,
unit-tests-with-test-server,
]
Expand Down
Loading