From 00c38a514020ec7a465842383a69f910fba7bfb7 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Thu, 11 Sep 2025 13:56:19 -0400 Subject: [PATCH 01/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 277999f5..d9363d38 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -73,4 +73,7 @@ jobs: --head-ref ${{ github.head_ref }} \ --base-ref ${{ github.base_ref }} \ --pr-number ${{ github.event.number }} \ - --build-configuration Release \ No newline at end of file + --build-configuration Release + + - name: test + run: echo "test" \ No newline at end of file From 09c5e1d1328cdeb7f31e75682668d1639545add6 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Thu, 11 Sep 2025 14:19:20 -0400 Subject: [PATCH 02/16] strip --- .github/workflows/ios_sentry_upload_pr.yml | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index d9363d38..4d5d9fb0 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -55,6 +55,33 @@ jobs: CONFIGURATION: Release EMERGE_BUILD_TYPE: pull-request + - name: Strip asset catalogs from XCArchive + run: | + echo "Finding and thinning asset catalogs in XCArchive..." + XCARCHIVE_PATH='./build/HackerNews.xcarchive' + + # Check if XCArchive exists + if [ ! -d "$XCARCHIVE_PATH" ]; then + echo "Error: XCArchive not found at $XCARCHIVE_PATH" + exit 1 + fi + + # Look for asset catalogs in the Products directory + find "$XCARCHIVE_PATH" -name "*.car" -type f | while read -r car_file; do + echo "Found asset catalog: $car_file" + # Create backup of original + cp "$car_file" "${car_file}.backup" + # Thin the asset catalog using assetutil + assetutil -i "phone" -s "3" -p "P3" -M "4" -g "MTL6,1" -r "13.0" "$car_file" -o "$car_file" + if [ $? -eq 0 ]; then + echo "Successfully thinned: $car_file" + rm "${car_file}.backup" + else + echo "Failed to thin: $car_file, restoring backup" + mv "${car_file}.backup" "$car_file" + fi + done + - name: Upload iOS size analysis binary to Sentry run: | sentry-cli \ From 4693d780c7d224d0fb399977e8a6b503c0ae6261 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Thu, 11 Sep 2025 17:10:31 -0400 Subject: [PATCH 03/16] bump --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 4d5d9fb0..e91ad7e6 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -103,4 +103,4 @@ jobs: --build-configuration Release - name: test - run: echo "test" \ No newline at end of file + run: echo "testt" \ No newline at end of file From 9a5a5c48100f1107ffbf97200beee794e041095b Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 17:54:18 -0400 Subject: [PATCH 04/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index e91ad7e6..e08c8ca4 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -19,6 +19,9 @@ jobs: with: fetch-depth: 0 + - name: test + run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})" + - name: Select Xcode version run: sudo xcode-select -s '/Applications/Xcode_16.4.app/Contents/Developer' @@ -100,7 +103,4 @@ jobs: --head-ref ${{ github.head_ref }} \ --base-ref ${{ github.base_ref }} \ --pr-number ${{ github.event.number }} \ - --build-configuration Release - - - name: test - run: echo "testt" \ No newline at end of file + --build-configuration Release \ No newline at end of file From d8d0a68b970907a6076d4fa5309688c8a3643a9f Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 17:56:27 -0400 Subject: [PATCH 05/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 85 +--------------------- 1 file changed, 1 insertion(+), 84 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index e08c8ca4..246b99c2 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: macos-15 + runs-on: ubuntu-latest defaults: run: @@ -21,86 +21,3 @@ jobs: - name: test run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})" - - - name: Select Xcode version - run: sudo xcode-select -s '/Applications/Xcode_16.4.app/Contents/Developer' - - - name: Set up Ruby env - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.1.4 - bundler-cache: true - - - name: Install Sentry CLI - run: | - curl -L -o sentry-cli https://github.com/getsentry/sentry-cli/releases/download/2.53.0-alpha/sentry-cli-Darwin-universal - chmod +x sentry-cli - sudo mv sentry-cli /usr/local/bin/ - - - name: Setup gems - run: exec ../.github/scripts/ios/setup.sh - - - name: Decode signing certificate into a file - env: - CERTIFICATE_BASE64: ${{ secrets.IOS_DIST_SIGNING_KEY_BASE64 }} - run: | - echo $CERTIFICATE_BASE64 | base64 --decode > signing-cert.p12 - - - name: Build XCArchive - run: bundle exec fastlane ios build_only - env: - ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }} - ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} - ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }} - SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }} - SIGNING_KEY_FILE_PATH: signing-cert.p12 - EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }} - CONFIGURATION: Release - EMERGE_BUILD_TYPE: pull-request - - - name: Strip asset catalogs from XCArchive - run: | - echo "Finding and thinning asset catalogs in XCArchive..." - XCARCHIVE_PATH='./build/HackerNews.xcarchive' - - # Check if XCArchive exists - if [ ! -d "$XCARCHIVE_PATH" ]; then - echo "Error: XCArchive not found at $XCARCHIVE_PATH" - exit 1 - fi - - # Look for asset catalogs in the Products directory - find "$XCARCHIVE_PATH" -name "*.car" -type f | while read -r car_file; do - echo "Found asset catalog: $car_file" - # Create backup of original - cp "$car_file" "${car_file}.backup" - # Thin the asset catalog using assetutil - assetutil -i "phone" -s "3" -p "P3" -M "4" -g "MTL6,1" -r "13.0" "$car_file" -o "$car_file" - if [ $? -eq 0 ]; then - echo "Successfully thinned: $car_file" - rm "${car_file}.backup" - else - echo "Failed to thin: $car_file, restoring backup" - mv "${car_file}.backup" "$car_file" - fi - done - - - name: Upload iOS size analysis binary to Sentry - run: | - sentry-cli \ - --log-level=debug \ - --auth-token ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }} \ - build \ - upload \ - ./build/HackerNews.xcarchive \ - --org sentry \ - --project launchpad-test-ios \ - --head-sha ${{ github.event.pull_request.head.sha }} \ - --base-sha ${{ github.event.pull_request.base.sha }} \ - --vcs-provider github \ - --head-repo-name ${{ github.repository }} \ - --base-repo-name ${{ github.repository }} \ - --head-ref ${{ github.head_ref }} \ - --base-ref ${{ github.base_ref }} \ - --pr-number ${{ github.event.number }} \ - --build-configuration Release \ No newline at end of file From 2234777911616223e72d80f651fc1aa5076dd64c Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 17:57:29 -0400 Subject: [PATCH 06/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 246b99c2..a024fd85 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -20,4 +20,4 @@ jobs: fetch-depth: 0 - name: test - run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})" + run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}) From 1123a9c69665f4f7e17089b63deb0ff847a2df88 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 17:58:34 -0400 Subject: [PATCH 07/16] oops --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index a024fd85..55102b10 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -20,4 +20,4 @@ jobs: fetch-depth: 0 - name: test - run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}) + run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.ref }} ${{ github.event.pull_request.head.ref }}) From 295b8cdb9496ca7a4d01a94b3382721a323b85b3 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 17:59:45 -0400 Subject: [PATCH 08/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 55102b10..f7e7cebe 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -20,4 +20,4 @@ jobs: fetch-depth: 0 - name: test - run: echo $(git merge-base --fork-point ${{ github.event.pull_request.base.ref }} ${{ github.event.pull_request.head.ref }}) + run: echo $(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}) From 69df977c796f81cc682d313f1ee34661f48e0a3a Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:01:10 -0400 Subject: [PATCH 09/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index f7e7cebe..ba7f2fcb 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -20,4 +20,4 @@ jobs: fetch-depth: 0 - name: test - run: echo $(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}) + run: echo $(git merge-base ${{ github.event.pull_request.base.ref }} ${{ github.event.pull_request.head.ref }}) From 508fa443342adfcacdb61561d98d64f564dc7ae0 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:08:27 -0400 Subject: [PATCH 10/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index ba7f2fcb..a5516ff1 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -8,16 +8,26 @@ on: jobs: build: runs-on: ubuntu-latest - defaults: run: working-directory: ./ios steps: - - name: Checkout + - name: Checkout PR HEAD (full history, but graph-only for speed) uses: actions/checkout@v5 with: fetch-depth: 0 + filter: blob:none + + - name: Fetch base branch tip + run: | + git -c protocol.version=2 fetch --no-tags --prune --filter=blob:none origin \ + "+refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}" - - name: test - run: echo $(git merge-base ${{ github.event.pull_request.base.ref }} ${{ github.event.pull_request.head.ref }}) + - name: Compute merge-base (BASE_SHA) + run: | + set -euo pipefail + BASE_REF="origin/${{ github.base_ref }}" + BASE_SHA="$(git merge-base --fork-point "$BASE_REF" HEAD 2>/dev/null || git merge-base HEAD "$BASE_REF")" + echo "BASE_SHA=$BASE_SHA" + echo "BASE_SHA=$BASE_SHA" >> "$GITHUB_ENV" From 815971bb39235ac74ea9afcb6db6e99335ecb7c6 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:08:47 -0400 Subject: [PATCH 11/16] depth --- .github/workflows/ios_sentry_upload_pr.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index a5516ff1..5f7e58fb 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -16,8 +16,7 @@ jobs: - name: Checkout PR HEAD (full history, but graph-only for speed) uses: actions/checkout@v5 with: - fetch-depth: 0 - filter: blob:none + fetch-depth: 2 - name: Fetch base branch tip run: | From 20f570309a7ba00a1ebea7eb693b1be55ccadf5c Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:12:47 -0400 Subject: [PATCH 12/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 5f7e58fb..873b57be 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -13,10 +13,11 @@ jobs: working-directory: ./ios steps: - - name: Checkout PR HEAD (full history, but graph-only for speed) + - name: Checkout PR HEAD uses: actions/checkout@v5 with: fetch-depth: 2 + ref: ${{ github.event.pull_request.head.sha }} - name: Fetch base branch tip run: | From bb4530998b1c47c2683f7825a10415bf01276d9d Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:14:44 -0400 Subject: [PATCH 13/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 873b57be..1449f974 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -23,11 +23,29 @@ jobs: run: | git -c protocol.version=2 fetch --no-tags --prune --filter=blob:none origin \ "+refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}" + git show -s --oneline "origin/${{ github.base_ref }}" - name: Compute merge-base (BASE_SHA) + shell: bash run: | - set -euo pipefail + # Be strict about failures, but avoid -u (unbound var) because we build BASE_SHA progressively + set -e -o pipefail + BASE_REF="origin/${{ github.base_ref }}" - BASE_SHA="$(git merge-base --fork-point "$BASE_REF" HEAD 2>/dev/null || git merge-base HEAD "$BASE_REF")" + + echo "HEAD commit:" + git show -s --oneline HEAD + echo "Base ref:" + git show -s --oneline "$BASE_REF" || { echo "Missing $BASE_REF"; exit 1; } + + # Try fork-point first; if it fails or is empty, fall back to plain merge-base + BASE_SHA="" + if BASE_SHA=$(git merge-base --fork-point "$BASE_REF" HEAD 2>/dev/null); then + : + fi + if [[ -z "$BASE_SHA" ]]; then + BASE_SHA=$(git merge-base HEAD "$BASE_REF") + fi + echo "BASE_SHA=$BASE_SHA" echo "BASE_SHA=$BASE_SHA" >> "$GITHUB_ENV" From 8498c4c8c2c432efa69ffba190cd6a9b3f4550d0 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:16:30 -0400 Subject: [PATCH 14/16] depth --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 1449f974..5ec4e2e5 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -16,7 +16,7 @@ jobs: - name: Checkout PR HEAD uses: actions/checkout@v5 with: - fetch-depth: 2 + fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - name: Fetch base branch tip From cccf0915e798cbdbe088e36d7ef6b9f767066d25 Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:18:17 -0400 Subject: [PATCH 15/16] test --- .github/workflows/ios_sentry_upload_pr.yml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index 5ec4e2e5..f05f8253 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -28,24 +28,7 @@ jobs: - name: Compute merge-base (BASE_SHA) shell: bash run: | - # Be strict about failures, but avoid -u (unbound var) because we build BASE_SHA progressively set -e -o pipefail - BASE_REF="origin/${{ github.base_ref }}" - - echo "HEAD commit:" - git show -s --oneline HEAD - echo "Base ref:" - git show -s --oneline "$BASE_REF" || { echo "Missing $BASE_REF"; exit 1; } - - # Try fork-point first; if it fails or is empty, fall back to plain merge-base - BASE_SHA="" - if BASE_SHA=$(git merge-base --fork-point "$BASE_REF" HEAD 2>/dev/null); then - : - fi - if [[ -z "$BASE_SHA" ]]; then - BASE_SHA=$(git merge-base HEAD "$BASE_REF") - fi - + BASE_SHA=$(git merge-base --fork-point "$BASE_REF" HEAD 2>/dev/null) echo "BASE_SHA=$BASE_SHA" - echo "BASE_SHA=$BASE_SHA" >> "$GITHUB_ENV" From c56c5b52b857fdf97c55e567b7a436321dd8120e Mon Sep 17 00:00:00 2001 From: Trevor Elkins Date: Fri, 12 Sep 2025 18:18:57 -0400 Subject: [PATCH 16/16] no fork --- .github/workflows/ios_sentry_upload_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ios_sentry_upload_pr.yml b/.github/workflows/ios_sentry_upload_pr.yml index f05f8253..46c50e5c 100644 --- a/.github/workflows/ios_sentry_upload_pr.yml +++ b/.github/workflows/ios_sentry_upload_pr.yml @@ -30,5 +30,5 @@ jobs: run: | set -e -o pipefail BASE_REF="origin/${{ github.base_ref }}" - BASE_SHA=$(git merge-base --fork-point "$BASE_REF" HEAD 2>/dev/null) + BASE_SHA=$(git merge-base "$BASE_REF" HEAD 2>/dev/null) echo "BASE_SHA=$BASE_SHA"