From 4e01dd6196acf73d3ead961ef04d571f0ec65f82 Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Wed, 12 Aug 2026 13:38:52 -0500 Subject: [PATCH 1/7] test(ios): Exercise IPA and dSYM upload --- .github/workflows/ios_sentry_upload_pr.yml | 16 +++++++ ios/fastlane/Fastfile | 49 ++++++++++++++++------ 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 255a119d..ac54ae8d 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -19,6 +19,19 @@ jobs: with: fetch-depth: 0 + - name: Checkout sentry-cli test branch + uses: actions/checkout@v6 + with: + repository: getsentry/sentry-cli + ref: codex/ipa-dsym-upload + path: sentry-cli + + - name: Build sentry-cli test branch + working-directory: ${{ github.workspace }}/sentry-cli + run: | + rustup target add aarch64-apple-darwin + cargo build --release --locked --target aarch64-apple-darwin + - name: Set up Ruby env uses: ruby/setup-ruby@v1 with: @@ -43,6 +56,9 @@ jobs: ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }} SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }} SIGNING_KEY_FILE_PATH: signing-cert.p12 + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} + SENTRY_CLI_PATH: ${{ github.workspace }}/sentry-cli/target/aarch64-apple-darwin/release/sentry-cli + SENTRY_LOG_LEVEL: debug SENTRY_SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} CONFIGURATION: Release diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index c1944c97..d44c8883 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -187,18 +187,43 @@ platform :ios do build_app_for_scheme ipa_path = export_thinned_size_analysis_ipa xcarchive_path = lane_context[SharedValues::XCODEBUILD_ARCHIVE] - replace_xcarchive_app_with_ipa( - ipa_path: ipa_path, - xcarchive_path: xcarchive_path - ) - sentry_upload_build( - auth_token: ENV['SENTRY_SENTRY_AUTH_TOKEN'], - org_slug: 'sentry', - project_slug: 'hackernews-ios', - xcarchive_path: xcarchive_path, - build_configuration: 'Release', - log_level: 'debug' - ) + + if ENV['SENTRY_CLI_PATH'] + dsym_path = File.join(xcarchive_path, 'dSYMs') + UI.important( + "Testing IPA+dSYM upload with #{ENV.fetch('SENTRY_CLI_PATH')}: " \ + "IPA=#{ipa_path}, dSYMs=#{dsym_path}" + ) + sh( + [ + ENV.fetch('SENTRY_CLI_PATH'), + 'build', + 'upload', + ipa_path, + '--org', + 'sentry', + '--project', + 'hackernews-ios', + '--dsym', + dsym_path, + '--build-configuration', + 'Release-dsym-e2e' + ].shelljoin + ) + else + replace_xcarchive_app_with_ipa( + ipa_path: ipa_path, + xcarchive_path: xcarchive_path + ) + sentry_upload_build( + auth_token: ENV['SENTRY_SENTRY_AUTH_TOKEN'], + org_slug: 'sentry', + project_slug: 'hackernews-ios', + xcarchive_path: xcarchive_path, + build_configuration: 'Release', + log_level: 'debug' + ) + end end desc 'Export a thinned Release IPA for Sentry Size Analysis' From aba870dfcfd04efca6d2cd3c1cbf67d4e297b802 Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Wed, 12 Aug 2026 13:53:46 -0500 Subject: [PATCH 2/7] ci: Skip unrelated iOS jobs for dSYM test --- .github/workflows/ios_sentry_upload_adhoc.yml | 1 + .github/workflows/ios_sentry_upload_snapshots.yml | 3 ++- .github/workflows/ios_sentry_upload_swift_snapshots.yml | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_adhoc.yml b/.github/workflows/ios_sentry_upload_adhoc.yml index dd1d750d..defda50a 100644 --- a/.github/workflows/ios_sentry_upload_adhoc.yml +++ b/.github/workflows/ios_sentry_upload_adhoc.yml @@ -7,6 +7,7 @@ on: jobs: build_distribution: + if: github.event_name != 'pull_request' || github.head_ref != 'codex/test-sentry-cli-dsym-e2e' runs-on: macos-26 defaults: diff --git a/.github/workflows/ios_sentry_upload_snapshots.yml b/.github/workflows/ios_sentry_upload_snapshots.yml index b5b8ad59..4d42e135 100644 --- a/.github/workflows/ios_sentry_upload_snapshots.yml +++ b/.github/workflows/ios_sentry_upload_snapshots.yml @@ -21,6 +21,7 @@ jobs: # Build the snapshot test bundle once on a single runner, then share the # products with downstream simulator jobs via an artifact. build_for_testing: + if: github.event_name != 'pull_request' || github.head_ref != 'codex/test-sentry-cli-dsym-e2e' runs-on: macos-26 env: @@ -209,4 +210,4 @@ jobs: - name: Upload snapshots to Sentry env: SENTRY_SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} - run: bundle exec fastlane ios upload_sentry_snapshots path:"${SNAPSHOT_UPLOAD_BASE_DIR}" \ No newline at end of file + run: bundle exec fastlane ios upload_sentry_snapshots path:"${SNAPSHOT_UPLOAD_BASE_DIR}" diff --git a/.github/workflows/ios_sentry_upload_swift_snapshots.yml b/.github/workflows/ios_sentry_upload_swift_snapshots.yml index e93ddccf..bf32ab7d 100644 --- a/.github/workflows/ios_sentry_upload_swift_snapshots.yml +++ b/.github/workflows/ios_sentry_upload_swift_snapshots.yml @@ -9,6 +9,7 @@ on: jobs: upload_sentry_swift_snapshots: + if: github.event_name != 'pull_request' || github.head_ref != 'codex/test-sentry-cli-dsym-e2e' runs-on: macos-26 defaults: From d5b946ec66d85a21e87569b0e2c5f5fbd22177be Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Wed, 12 Aug 2026 13:58:05 -0500 Subject: [PATCH 3/7] fix(ios): Resolve dSYM archive path --- ios/fastlane/Fastfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index d44c8883..7c90e55d 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -186,7 +186,10 @@ platform :ios do prepare_signing build_app_for_scheme ipa_path = export_thinned_size_analysis_ipa - xcarchive_path = lane_context[SharedValues::XCODEBUILD_ARCHIVE] + xcarchive_path = File.expand_path( + lane_context[SharedValues::XCODEBUILD_ARCHIVE], + File.expand_path('..', __dir__) + ) if ENV['SENTRY_CLI_PATH'] dsym_path = File.join(xcarchive_path, 'dSYMs') From 9645962eac54acf47f9ece6ff55d95064274b11a Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Wed, 12 Aug 2026 15:24:55 -0500 Subject: [PATCH 4/7] test(ios): Exercise Fastlane dSYM upload --- ios/Gemfile.lock | 12 +++++++++--- ios/fastlane/Fastfile | 26 ++++++++++---------------- ios/fastlane/Pluginfile | 4 +++- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index 87d4f76e..90b0e56c 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -1,3 +1,11 @@ +GIT + remote: https://github.com/getsentry/sentry-fastlane-plugin.git + revision: 05c542c880e5fc587771cd075e716b6273826989 + branch: codex/ipa-dsym-build-upload + specs: + fastlane-plugin-sentry (2.6.2) + os (~> 1.1, >= 1.1.4) + GEM remote: https://rubygems.org/ specs: @@ -123,8 +131,6 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.4.1) xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) - fastlane-plugin-sentry (2.5.2) - os (~> 1.1, >= 1.1.4) fastlane-sirp (1.1.0) gh_inspector (1.1.3) google-apis-androidpublisher_v3 (0.102.0) @@ -242,7 +248,7 @@ PLATFORMS DEPENDENCIES fastlane - fastlane-plugin-sentry (>= 2.5.1, < 3.0.0) + fastlane-plugin-sentry (>= 2.5.1, < 3.0.0)! xcpretty BUNDLED WITH diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 7c90e55d..9a5b555f 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -194,24 +194,18 @@ platform :ios do if ENV['SENTRY_CLI_PATH'] dsym_path = File.join(xcarchive_path, 'dSYMs') UI.important( - "Testing IPA+dSYM upload with #{ENV.fetch('SENTRY_CLI_PATH')}: " \ + "Testing IPA+dSYM upload through fastlane-plugin-sentry with #{ENV.fetch('SENTRY_CLI_PATH')}: " \ "IPA=#{ipa_path}, dSYMs=#{dsym_path}" ) - sh( - [ - ENV.fetch('SENTRY_CLI_PATH'), - 'build', - 'upload', - ipa_path, - '--org', - 'sentry', - '--project', - 'hackernews-ios', - '--dsym', - dsym_path, - '--build-configuration', - 'Release-dsym-e2e' - ].shelljoin + sentry_upload_build( + auth_token: ENV['SENTRY_SENTRY_AUTH_TOKEN'], + org_slug: 'sentry', + project_slug: 'hackernews-ios', + ipa_path: ipa_path, + dsym_path: dsym_path, + sentry_cli_path: ENV.fetch('SENTRY_CLI_PATH'), + build_configuration: 'Release-dsym-e2e', + log_level: 'debug' ) else replace_xcarchive_app_with_ipa( diff --git a/ios/fastlane/Pluginfile b/ios/fastlane/Pluginfile index 521e6116..001bc6ae 100644 --- a/ios/fastlane/Pluginfile +++ b/ios/fastlane/Pluginfile @@ -2,4 +2,6 @@ # # Ensure this file is checked in to source control! -gem 'fastlane-plugin-sentry', '>= 2.5.1', '< 3.0.0' +gem 'fastlane-plugin-sentry', '>= 2.5.1', '< 3.0.0', + git: 'https://github.com/getsentry/sentry-fastlane-plugin.git', + branch: 'codex/ipa-dsym-build-upload' From c0c0f0b48c9c7c4b5ea58f1384fb1be3680f53a3 Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Thu, 13 Aug 2026 12:17:36 -0500 Subject: [PATCH 5/7] test(ios): Exercise zipped dSYM upload --- ios/Gemfile.lock | 2 +- ios/fastlane/Fastfile | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index 90b0e56c..4644a64e 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/getsentry/sentry-fastlane-plugin.git - revision: 05c542c880e5fc587771cd075e716b6273826989 + revision: 0fe84e64455d7f6643976368c04a5496b1a3f263 branch: codex/ipa-dsym-build-upload specs: fastlane-plugin-sentry (2.6.2) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 9a5b555f..5f46703a 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -193,16 +193,28 @@ platform :ios do if ENV['SENTRY_CLI_PATH'] dsym_path = File.join(xcarchive_path, 'dSYMs') + dsym_zip_path = File.join(File.dirname(xcarchive_path), 'dSYMs.zip') + File.delete(dsym_zip_path) if File.exist?(dsym_zip_path) + sh( + 'ditto', + '-c', + '-k', + '--norsrc', + '--noextattr', + '--keepParent', + dsym_path, + dsym_zip_path + ) UI.important( "Testing IPA+dSYM upload through fastlane-plugin-sentry with #{ENV.fetch('SENTRY_CLI_PATH')}: " \ - "IPA=#{ipa_path}, dSYMs=#{dsym_path}" + "IPA=#{ipa_path}, dSYMs=#{dsym_zip_path}" ) sentry_upload_build( auth_token: ENV['SENTRY_SENTRY_AUTH_TOKEN'], org_slug: 'sentry', project_slug: 'hackernews-ios', ipa_path: ipa_path, - dsym_path: dsym_path, + dsym_path: dsym_zip_path, sentry_cli_path: ENV.fetch('SENTRY_CLI_PATH'), build_configuration: 'Release-dsym-e2e', log_level: 'debug' From 3180d8d49536eb1095de62be4578ca8523df596d Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Thu, 13 Aug 2026 12:40:14 -0500 Subject: [PATCH 6/7] test(ios): Use XCArchive dSYM directory --- ios/fastlane/Fastfile | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 5f46703a..9a5b555f 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -193,28 +193,16 @@ platform :ios do if ENV['SENTRY_CLI_PATH'] dsym_path = File.join(xcarchive_path, 'dSYMs') - dsym_zip_path = File.join(File.dirname(xcarchive_path), 'dSYMs.zip') - File.delete(dsym_zip_path) if File.exist?(dsym_zip_path) - sh( - 'ditto', - '-c', - '-k', - '--norsrc', - '--noextattr', - '--keepParent', - dsym_path, - dsym_zip_path - ) UI.important( "Testing IPA+dSYM upload through fastlane-plugin-sentry with #{ENV.fetch('SENTRY_CLI_PATH')}: " \ - "IPA=#{ipa_path}, dSYMs=#{dsym_zip_path}" + "IPA=#{ipa_path}, dSYMs=#{dsym_path}" ) sentry_upload_build( auth_token: ENV['SENTRY_SENTRY_AUTH_TOKEN'], org_slug: 'sentry', project_slug: 'hackernews-ios', ipa_path: ipa_path, - dsym_path: dsym_zip_path, + dsym_path: dsym_path, sentry_cli_path: ENV.fetch('SENTRY_CLI_PATH'), build_configuration: 'Release-dsym-e2e', log_level: 'debug' From 986d2dbaf48b9fddb8e7e16006e64512934ed837 Mon Sep 17 00:00:00 2001 From: Jamie <2119834+jamieQ@users.noreply.github.com> Date: Thu, 27 Aug 2026 15:52:45 -0500 Subject: [PATCH 7/7] test(ios): Use merged sentry-cli dSYM support --- .github/workflows/ios_sentry_upload_pr.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index ac54ae8d..c5fa19f2 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -19,14 +19,14 @@ jobs: with: fetch-depth: 0 - - name: Checkout sentry-cli test branch + - name: Checkout sentry-cli uses: actions/checkout@v6 with: repository: getsentry/sentry-cli - ref: codex/ipa-dsym-upload + ref: c596fcddd616867b6c6cdfa11f9853dc889a585a path: sentry-cli - - name: Build sentry-cli test branch + - name: Build sentry-cli working-directory: ${{ github.workspace }}/sentry-cli run: | rustup target add aarch64-apple-darwin