Skip to content

Commit 63f2e65

Browse files
cameroncookeclaude
andcommitted
ref: Migrate from Emerge Tools to Sentry
Replace Emerge's suite of products with Sentry for size analysis, snapshot testing, and distribution across both platforms. This removes the Emerge Gradle plugin, fastlane plugin, SDK dependencies, snapshot maven repos, and emerge_config.yaml in favor of their Sentry equivalents. Rename the CI workflows from ios/android_emerge_* to *_sentry_* and drop the now-redundant ios_emerge_upload_snapshots workflow. Update the README, app metadata, and "built by" UI to reference Sentry instead of Emerge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 5baa699 commit 63f2e65

40 files changed

Lines changed: 201 additions & 652 deletions

.github/workflows/android_beta_build.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Android Beta Build
1+
name: Sentry Android Build Distribution
22

33
on:
44
push:
@@ -32,13 +32,12 @@ jobs:
3232
echo $ENCODED_KEYSTORE > keystore_base64.txt
3333
base64 -d keystore_base64.txt > ${{ runner.temp }}/keystore.jks
3434
35-
- name: Build Beta APK
35+
- name: Build beta APK and upload to Sentry Build Distribution
3636
env:
3737
DECODED_KEYSTORE_PATH: ${{ runner.temp }}/keystore.jks
3838
RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_RELEASE_KEY_ALIAS }}
3939
RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}
4040
RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_RELEASE_STORE_PASSWORD }}
41-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
4241
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
4342
SENTRY_DISTRIBUTION_AUTH_TOKEN: ${{ secrets.SENTRY_DISTRIBUTION_AUTH_TOKEN }}
4443
run: ./gradlew :app:assembleBeta

.github/workflows/android_release_build.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ jobs:
4242
RELEASE_KEY_ALIAS: ${{ secrets.ANDROID_RELEASE_KEY_ALIAS }}
4343
RELEASE_KEY_PASSWORD: ${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}
4444
RELEASE_STORE_PASSWORD: ${{ secrets.ANDROID_RELEASE_STORE_PASSWORD }}
45-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
4645
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
4746
run: ./gradlew :app:bundlePlayStoreRelease
4847

.github/workflows/android_emerge_upload.yml renamed to .github/workflows/android_sentry_size_analysis.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Emerge + Sentry Android Size & Distribution
1+
name: Sentry Android Size Analysis
22

33
on:
44
push:
@@ -24,8 +24,7 @@ jobs:
2424
distribution: "temurin"
2525
- name: Setup Gradle build action
2626
uses: gradle/actions/setup-gradle@v6
27-
- name: Emerge analysis
28-
run: ./gradlew :app:bundleRelease :app:emergeUploadReleaseAab
27+
- name: Sentry size analysis
28+
run: ./gradlew :app:bundleRelease
2929
env:
30-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
3130
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Generate Android Snapshots
1+
name: Sentry Android Snapshots Upload
22

33
on:
44
push:
@@ -29,29 +29,7 @@ jobs:
2929
- name: Setup Gradle build action
3030
uses: gradle/actions/setup-gradle@v6
3131

32-
- name: Ruby setup
33-
uses: ruby/setup-ruby@v1
34-
with:
35-
ruby-version: 3.3.10
36-
bundler-cache: true
37-
38-
- name: Setup gems
39-
run: gem install emerge
40-
41-
- name: Generate Paparazzi snapshots
32+
- name: Upload Sentry snapshots
4233
run: ./gradlew :app:sentryUploadSnapshotsDebug
4334
env:
4435
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
45-
46-
- name: Upload snapshots
47-
env:
48-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
49-
run: |
50-
emerge upload snapshots \
51-
--name "Hacker News" \
52-
--id "com.emergetools.hackernews.debug" \
53-
--repo-name "EmergeTools/hackernews" \
54-
--tag "snapshot" \
55-
--debug \
56-
--client-library paparazzi \
57-
--project-root .

.github/workflows/ios_emerge_upload_snapshots.yml

Lines changed: 0 additions & 90 deletions
This file was deleted.

.github/workflows/ios_emerge_upload_adhoc.yml renamed to .github/workflows/ios_sentry_upload_adhoc.yml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
name: Sentry PR iOS Upload (Build Distribution)
1+
name: Sentry iOS PR Build Distribution
22

33
on:
44
pull_request:
55
branches: [main]
66
paths: [ios/**]
77

88
jobs:
9-
build_adhoc:
9+
build_distribution:
1010
runs-on: macos-26
1111

1212
defaults:
@@ -24,6 +24,7 @@ jobs:
2424
with:
2525
ruby-version: 3.3.10
2626
bundler-cache: true
27+
working-directory: ios
2728

2829
- name: Setup gems
2930
run: exec ../.github/scripts/ios/setup.sh
@@ -33,24 +34,25 @@ jobs:
3334
CERTIFICATE_BASE64: ${{ secrets.IOS_DIST_SIGNING_KEY_BASE64 }}
3435
run: |
3536
echo $CERTIFICATE_BASE64 | base64 --decode > signing-cert.p12
36-
- name: Replace API key in Constants file
37+
38+
- name: Build Ad Hoc app and upload build to Sentry
3739
run: |
38-
sed -i '' "s/API_KEY/$ETDISTRIBUTION_API_KEY/g" HackerNews/Utils/Constants.swift
39-
env:
40-
ETDISTRIBUTION_API_KEY: ${{ secrets.ETDISTRIBUTION_API_KEY_IOS }}
41-
- name: Build & upload iOS AdHoc binary to Sentry
42-
run: bundle exec fastlane ios build_upload_emerge
40+
python3 - <<'PY'
41+
import os
42+
from pathlib import Path
43+
path = Path("HackerNews/Utils/Constants.swift")
44+
path.write_text(path.read_text().replace("SENTRY_DISTRIBUTION_AUTH_TOKEN", os.environ["SENTRY_DISTRIBUTION_AUTH_TOKEN"]))
45+
PY
46+
bundle exec fastlane ios build_upload_sentry_distribution
4347
env:
4448
ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
4549
ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
4650
ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }}
4751
SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }}
4852
SIGNING_KEY_FILE_PATH: signing-cert.p12
49-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
50-
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
53+
SENTRY_SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
54+
SENTRY_DISTRIBUTION_AUTH_TOKEN: ${{ secrets.SENTRY_DISTRIBUTION_AUTH_TOKEN }}
5155
CONFIGURATION: AdHoc
52-
EMERGE_BUILD_TYPE: pull-request-adhoc
5356
PROV_PROFILE_NAME: HackerNews AdHoc Distribution
5457
WIDGET_PROV_PROFILE_NAME: HackerNews AdHoc HomeWidget
5558
ADHOC: true
56-
APP_ID_SUFFIX: adhoc

.github/workflows/ios_emerge_upload_main.yml renamed to .github/workflows/ios_sentry_upload_main.yml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
name: Sentry iOS Upload (Size Analysis)
1+
name: Sentry iOS Main Builds
22

33
on:
44
push:
55
branches: [main]
66

77
jobs:
8-
build:
8+
testflight_release:
99
runs-on: macos-26
1010

1111
defaults:
@@ -23,6 +23,7 @@ jobs:
2323
with:
2424
ruby-version: 3.3.10
2525
bundler-cache: true
26+
working-directory: ios
2627

2728
- name: Setup gems
2829
run: exec ../.github/scripts/ios/setup.sh
@@ -33,22 +34,19 @@ jobs:
3334
run: |
3435
echo $CERTIFICATE_BASE64 | base64 --decode > signing-cert.p12
3536
36-
# This version uploads a build to Testflight
37-
- name: Build & upload iOS size analysis binary to Sentry
38-
run: bundle exec fastlane ios build_upload_testflight
37+
- name: Build, upload to TestFlight, and upload build metadata to Sentry
38+
run: bundle exec fastlane ios build_upload_testflight_candidate
3939
env:
4040
ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
4141
ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
4242
ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }}
4343
SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }}
4444
SIGNING_KEY_FILE_PATH: signing-cert.p12
45-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
4645
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
4746
SENTRY_SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
4847
CONFIGURATION: Release
49-
EMERGE_BUILD_TYPE: release
5048

51-
build_adhoc:
49+
build_distribution:
5250
runs-on: macos-26
5351

5452
defaults:
@@ -66,6 +64,7 @@ jobs:
6664
with:
6765
ruby-version: 3.3.10
6866
bundler-cache: true
67+
working-directory: ios
6968

7069
- name: Setup gems
7170
run: exec ../.github/scripts/ios/setup.sh
@@ -76,20 +75,24 @@ jobs:
7675
run: |
7776
echo $CERTIFICATE_BASE64 | base64 --decode > signing-cert.p12
7877
79-
- name: Build & upload iOS AdHoc binary to Sentry
80-
run: bundle exec fastlane ios build_upload_emerge
78+
- name: Build Ad Hoc app and upload build to Sentry
79+
run: |
80+
python3 - <<'PY'
81+
import os
82+
from pathlib import Path
83+
path = Path("HackerNews/Utils/Constants.swift")
84+
path.write_text(path.read_text().replace("SENTRY_DISTRIBUTION_AUTH_TOKEN", os.environ["SENTRY_DISTRIBUTION_AUTH_TOKEN"]))
85+
PY
86+
bundle exec fastlane ios build_upload_sentry_distribution
8187
env:
8288
ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
8389
ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
8490
ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }}
8591
SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }}
8692
SIGNING_KEY_FILE_PATH: signing-cert.p12
87-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
88-
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
8993
SENTRY_SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
94+
SENTRY_DISTRIBUTION_AUTH_TOKEN: ${{ secrets.SENTRY_DISTRIBUTION_AUTH_TOKEN }}
9095
CONFIGURATION: AdHoc
91-
EMERGE_BUILD_TYPE: main-adhoc
9296
PROV_PROFILE_NAME: HackerNews AdHoc Distribution
9397
WIDGET_PROV_PROFILE_NAME: HackerNews AdHoc HomeWidget
9498
ADHOC: true
95-
APP_ID_SUFFIX: adhoc

.github/workflows/ios_emerge_upload_pr.yml renamed to .github/workflows/ios_sentry_upload_pr.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
name: Emerge PR iOS Upload (Size Analysis)
1+
name: Sentry iOS PR Size Analysis
22

33
on:
44
pull_request:
55
branches: [main]
66
paths: [ios/**]
77

88
jobs:
9-
build:
9+
size_analysis:
1010
runs-on: macos-26
1111

1212
defaults:
@@ -24,6 +24,7 @@ jobs:
2424
with:
2525
ruby-version: 3.3.10
2626
bundler-cache: true
27+
working-directory: ios
2728

2829
- name: Setup gems
2930
run: exec ../.github/scripts/ios/setup.sh
@@ -34,16 +35,13 @@ jobs:
3435
run: |
3536
echo $CERTIFICATE_BASE64 | base64 --decode > signing-cert.p12
3637
37-
- name: Build & upload iOS size analysis binary to Emerge Tools
38-
run: bundle exec fastlane ios build_upload_emerge
38+
- name: Build Release app and upload thinned IPA to Sentry
39+
run: bundle exec fastlane ios build_upload_sentry_size_analysis
3940
env:
4041
ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
4142
ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
4243
ASC_KEY: ${{ secrets.ASC_PRIVATE_KEY }}
4344
SIGNING_KEY_PASSWORD: ${{ secrets.IOS_DIST_SIGNING_KEY_PASSWORD }}
4445
SIGNING_KEY_FILE_PATH: signing-cert.p12
45-
EMERGE_API_TOKEN: ${{ secrets.EMERGE_API_KEY }}
46-
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
4746
SENTRY_SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_SENTRY_AUTH_TOKEN }}
4847
CONFIGURATION: Release
49-
EMERGE_BUILD_TYPE: pull-request

0 commit comments

Comments
 (0)