Skip to content

Commit cff8205

Browse files
cameroncookeclaudecodex
authored
ref: Migrate Hacker News examples to Sentry (#825)
Removes the Emerge Tools branding and replace with Sentry branding, this repo acts as a best-in-class example for integration Snapshots, Size Analysis and Distribution. Changes: - Replaced app-facing Emerge Tools copy and branding with Sentry branding. - Removed the Android built-by card and related Emerge UI references. - Removed obsolete Emerge SDK, config, package, plugin, and workflow references. - Updated iOS telemetry to use the Sentry org `hackernews-ios` project instead of the Emerge Tools org. - Kept iOS telemetry adjacent to the Android `hackernews-android` project in the main Sentry org. - Renamed Emerge GitHub workflows to Sentry workflow names. - Removed obsolete Emerge upload workflows. - Cleaned up Sentry snapshot testing workflows for Android and iOS. - Cleaned up Sentry size distribution and size analysis workflows. - Updated the remaining GitHub workflows to act as reference examples for configuring Sentry mobile uploads, snapshots, and size analysis. Refs EME-1200 --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Codex <noreply@openai.com>
1 parent 5baa699 commit cff8205

43 files changed

Lines changed: 210 additions & 658 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.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)