Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4e9d873
set-up-sentry-release-upload
rinej Feb 19, 2026
5f497e2
upload adhocsbuilds to Sentry
rinej Feb 19, 2026
b63b014
install sentry-cli newest version
rinej Feb 20, 2026
99058c0
add notice log with bundle url
rinej Feb 20, 2026
103f6f4
add table with sentry bundle urls
rinej Feb 23, 2026
9ecdfff
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Feb 23, 2026
d59ded8
chore: remove todos comments
rinej Feb 23, 2026
f404b09
Merge branch 'main' into set-up-sentry-release-size-analysis
rinej Feb 23, 2026
0036053
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Feb 24, 2026
b2974cd
add upload sentry bundle logic to separate files
rinej Feb 24, 2026
d34193f
bump sentry-cli version
rinej Feb 24, 2026
043541a
generate aab for adhocs
rinej Feb 24, 2026
956908f
Merge branch 'main' into set-up-sentry-release-size-analysis
rinej Feb 24, 2026
272110a
adjust after mergin main
rinej Feb 24, 2026
0a0e3ff
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Feb 25, 2026
75f8d6b
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Feb 25, 2026
c3ad3df
add secondary rock build for aab format
rinej Feb 25, 2026
ce6d4ce
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Feb 27, 2026
19722f3
Merge branch 'set-up-sentry-release-size-analysis' into set-up-sentry…
rinej Feb 27, 2026
c28d17e
unify sentry bundle upload for adhocs and release
rinej Feb 27, 2026
c7cc468
unify the sentry bundle upload for IOS
rinej Feb 27, 2026
98c0038
build aab for both adhoc and release
rinej Feb 27, 2026
6cbaf57
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Mar 9, 2026
68cb3c7
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Mar 11, 2026
0902a6b
update sentry-cli version
rinej Mar 11, 2026
101f5a2
generate apk for adhocs
rinej Mar 11, 2026
4f7b5b0
add verification step for sentry debug metada in apk
rinej Mar 13, 2026
31bf369
send sentry size analysis to Release builds only
rinej Mar 17, 2026
84f3b12
Merge branch 'main' into set-up-sentry-adhoc-size-analysis
rinej Mar 17, 2026
75c283b
Add Sentry URLs to PR deploy comments
rinej Mar 17, 2026
4ba0bae
add mocks for unit tests
rinej Mar 17, 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
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ inputs:
NOTE:
description: "Additional note from the deployer"
required: false
ANDROID_SENTRY_URL:
description: "URL to Sentry size analysis for Android"
required: false
IOS_SENTRY_URL:
description: "URL to Sentry size analysis for iOS"
required: false
runs:
using: "node20"
main: "./index.js"
11 changes: 11 additions & 0 deletions .github/actions/javascript/markPullRequestsAsDeployed/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12844,6 +12844,8 @@ async function run() {
const webResult = getDeployTableMessage(core.getInput('WEB', { required: true }));
const date = core.getInput('DATE');
const note = core.getInput('NOTE');
const androidSentryUrl = core.getInput('ANDROID_SENTRY_URL');
const iosSentryUrl = core.getInput('IOS_SENTRY_URL');
function getDeployMessage(deployer, deployVerb) {
let message = `🚀 [${deployVerb}](${workflowURL}) to ${isProd ? 'production' : 'staging'}`;
message += ` by https://github.com/${deployer} in version: ${version} `;
Expand All @@ -12857,6 +12859,15 @@ async function run() {
if (note) {
message += `\n\n_Note:_ ${note}`;
}
if (androidSentryUrl || iosSentryUrl) {
message += `\n\n**Bundle Size Analysis (Sentry):**`;
if (androidSentryUrl) {
message += `\n- [Android](${androidSentryUrl})`;
}
if (iosSentryUrl) {
message += `\n- [iOS](${iosSentryUrl})`;
}
}
return message;
}
if (isProd) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ async function run() {

const date = core.getInput('DATE');
const note = core.getInput('NOTE');
const androidSentryUrl = core.getInput('ANDROID_SENTRY_URL');
const iosSentryUrl = core.getInput('IOS_SENTRY_URL');

function getDeployMessage(deployer: string, deployVerb: string): string {
let message = `🚀 [${deployVerb}](${workflowURL}) to ${isProd ? 'production' : 'staging'}`;
Expand All @@ -124,6 +126,16 @@ async function run() {
message += `\n\n_Note:_ ${note}`;
}

if (androidSentryUrl || iosSentryUrl) {
message += `\n\n**Bundle Size Analysis (Sentry):**`;
if (androidSentryUrl) {
message += `\n- [Android](${androidSentryUrl})`;
}
if (iosSentryUrl) {
message += `\n- [iOS](${iosSentryUrl})`;
}
}

return message;
}

Expand Down
31 changes: 26 additions & 5 deletions .github/workflows/buildAndroid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ on:
ROCK_ARTIFACT_URL:
description: URL to download the ad-hoc build artifact (adhoc only)
value: ${{ jobs.build.outputs.ROCK_ARTIFACT_URL }}
SENTRY_URL:
description: URL to Sentry size analysis
value: ${{ jobs.build.outputs.SENTRY_URL }}
AAB_FILENAME:
description: Filename of the AAB artifact (empty if no AAB was produced)
value: ${{ jobs.build.outputs.AAB_FILENAME }}
Expand All @@ -57,6 +60,7 @@ jobs:
outputs:
VERSION_CODE: ${{ steps.getAndroidVersion.outputs.VERSION_CODE }}
ROCK_ARTIFACT_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }}
SENTRY_URL: ${{ steps.sentry-upload.outputs.SENTRY_URL }}
AAB_FILENAME: ${{ steps.collectArtifacts.outputs.AAB_FILENAME }}
APK_FILENAME: ${{ steps.collectArtifacts.outputs.APK_FILENAME }}
SOURCEMAP_FILENAME: index.android.bundle.map
Expand Down Expand Up @@ -185,6 +189,27 @@ jobs:
custom-identifier: ${{ steps.computeIdentifier.outputs.IDENTIFIER }}
validate-elf-alignment: ${{ inputs.variant != 'Release' && 'true' || 'false' }}

- name: Set artifact URL output
id: set-artifact-url
if: ${{ inputs.variant == 'Adhoc' }}
run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"

- name: Upload Android build to Sentry for size analysis
id: sentry-upload
if: ${{ inputs.variant == 'Release' && env.ARTIFACT_PATH != '' }}
continue-on-error: true
timeout-minutes: 5
run: |
OUTPUT=$(npx sentry-cli build upload "$ARTIFACT_PATH" --org expensify --project app --build-configuration Release --log-level debug 2>&1)
echo "$OUTPUT"
SENTRY_URL=$(echo "$OUTPUT" | grep -oE 'https://expensify\.sentry\.io/[^ ]+' | head -1)
if [ -n "$SENTRY_URL" ]; then
echo "::notice::Android Sentry size analysis: $SENTRY_URL"
echo "SENTRY_URL=$SENTRY_URL" >> "$GITHUB_OUTPUT"
fi
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

- name: Upload Gradle profile report
if: always()
# v6
Expand All @@ -194,11 +219,6 @@ jobs:
path: Mobile-Expensify/Android/build/reports/profile/
if-no-files-found: ignore

- name: Set artifact URL output
id: set-artifact-url
if: ${{ inputs.variant == 'Adhoc' }}
run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"

- name: Collect build artifacts
id: collectArtifacts
run: |
Expand Down Expand Up @@ -294,3 +314,4 @@ jobs:
with:
name: ${{ inputs.artifact-prefix }}android-apk-artifact
path: Expensify.apk

21 changes: 21 additions & 0 deletions .github/workflows/buildIOS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ on:
ROCK_ARTIFACT_URL:
description: URL to download the ad-hoc build artifact (adhoc only)
value: ${{ jobs.build.outputs.ROCK_ARTIFACT_URL }}
SENTRY_URL:
description: URL to Sentry size analysis
value: ${{ jobs.build.outputs.SENTRY_URL }}
IPA_FILENAME:
description: Filename of the IPA artifact produced by the build
value: ${{ jobs.build.outputs.IPA_FILENAME }}
Expand All @@ -55,6 +58,7 @@ jobs:
outputs:
IOS_VERSION: ${{ steps.getIOSVersion.outputs.IOS_VERSION }}
ROCK_ARTIFACT_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }}
SENTRY_URL: ${{ steps.sentry-upload.outputs.SENTRY_URL }}
IPA_FILENAME: ${{ steps.set-ipa-filename.outputs.IPA_FILENAME }}
DSYM_FILENAME: ${{ steps.set-ipa-filename.outputs.DSYM_FILENAME }}
SOURCEMAP_FILENAME: main.jsbundle.map
Expand Down Expand Up @@ -241,6 +245,22 @@ jobs:
comment-bot: false
custom-identifier: ${{ steps.computeIdentifier.outputs.IDENTIFIER }}

- name: Upload iOS build to Sentry for size analysis
id: sentry-upload
if: ${{ inputs.variant == 'Release' && env.ARTIFACT_PATH != '' }}
continue-on-error: true
timeout-minutes: 5
run: |
OUTPUT=$(npx sentry-cli build upload "$ARTIFACT_PATH" --org expensify --project app --build-configuration Release --log-level debug 2>&1)
echo "$OUTPUT"
SENTRY_URL=$(echo "$OUTPUT" | grep -oE 'https://expensify\.sentry\.io/[^ ]+' | head -1)
if [ -n "$SENTRY_URL" ]; then
echo "::notice::iOS Sentry size analysis: $SENTRY_URL"
echo "SENTRY_URL=$SENTRY_URL" >> "$GITHUB_OUTPUT"
fi
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

- name: Set artifact URL output
id: set-artifact-url
if: ${{ inputs.variant == 'Adhoc' }}
Expand Down Expand Up @@ -304,3 +324,4 @@ jobs:
with:
name: ${{ inputs.artifact-prefix }}ios-sourcemap-artifact
path: Mobile-Expensify/main.jsbundle.map

4 changes: 3 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -912,11 +912,13 @@ jobs:
postGithubComments:
uses: ./.github/workflows/postDeployComments.yml
if: ${{ always() && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }}
needs: [prep, checkDeploymentSuccess, createRelease]
needs: [prep, checkDeploymentSuccess, createRelease, androidBuild, iosBuild]
secrets: inherit
with:
version: ${{ needs.prep.outputs.APP_VERSION }}
env: ${{ github.ref == 'refs/heads/production' && 'production' || 'staging' }}
android: ${{ needs.checkDeploymentSuccess.outputs.ANDROID_RESULT }}
ios: ${{ needs.checkDeploymentSuccess.outputs.IOS_RESULT }}
web: ${{ needs.checkDeploymentSuccess.outputs.WEB_RESULT }}
android_sentry_url: ${{ needs.androidBuild.outputs.SENTRY_URL }}
ios_sentry_url: ${{ needs.iosBuild.outputs.SENTRY_URL }}
10 changes: 10 additions & 0 deletions .github/workflows/postDeployComments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ on:
description: Web deploy status
required: true
type: string
android_sentry_url:
description: URL to Sentry size analysis for Android
required: false
type: string
ios_sentry_url:
description: URL to Sentry size analysis for iOS
required: false
type: string
secrets:
OS_BOTIFY_TOKEN:
description: Token for accessing Mobile-Expensify repository
Expand Down Expand Up @@ -109,3 +117,5 @@ jobs:
WEB: ${{ inputs.web }}
DATE: ${{ inputs.date }}
NOTE: ${{ inputs.note }}
ANDROID_SENTRY_URL: ${{ inputs.android_sentry_url }}
IOS_SENTRY_URL: ${{ inputs.ios_sentry_url }}
Loading
Loading