Repository navigation
[No QA] Combine PGO tooling and emulator CI verification - #34
Draft
chrispader wants to merge 86 commits into
Draft
chrispader wants to merge 86 commits into
chrispader wants to merge 86 commits into
Conversation
Co-authored-by: Codex <[email protected]>
The pinned android-emulator-runner commit came from its main branch, which does not ship node_modules, so the action failed to load @actions/core. Release commits bundle their dependencies. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The app project reaches Maven Central only through repo.grails.org. Hosted runners start with an empty Gradle cache, so the emulator build sent every lookup there and Gradle failed with HTTP 429 while resolving the Node.js download. The emulator init script now points that repository at Maven Central, which it only mirrors for this build. Co-Authored-By: Claude Opus 5.5 <[email protected]>
R8 ran out of its 4 GB heap on the hosted Android runner, which also runs the emulator. It only shrinks Java and Kotlin code, which native PGO does not change, so the disposable emulator builds now skip it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
FullStory transforms the release APK, so its excluded task is the one that writes the final APK listing. On a clean checkout, AGP's createReleaseApkListingFileRedirect task then fails because that listing does not exist. Local builds passed only because an earlier build had left the file behind. The redirect only serves Android Studio, so builds that exclude FullStory now skip it too. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Verifying the PGO flow across separate PRs requires manual device setup and account access. This PR combines the PGO tooling with hosted Android and iOS emulator jobs and a bundled synthetic workload, so an engineer can verify the native build and profile cycle without that setup.
cc @mountiny @roryabraham
Explanation of Change
This combines App #97808, Mobile-Expensify #14046, evaluation tooling #33 and CI #32 for verification. The individual task PRs remain the merge plan.
The workflow builds baseline and instrumented apps, collects three synthetic training runs, merges their native profiles, builds optimized apps, and runs both variants. Emulator results verify this cycle and do not select deployment artifacts or establish phone performance.
Fixed Issues
$ Expensify#98008
PROPOSAL: Expensify#98008
MOBILE-EXPENSIFY: https://github.com/Expensify/Mobile-Expensify/pull/14046
Tests
Confirm that Expensify/App has its existing
OS_BOTIFY_TOKENandMAPBOX_SDK_DOWNLOAD_TOKENrepository Actions secrets. The checkout token needs read access to Mobile-Expensify.Copy both branches with the script below. It pushes the pinned native commit first, then the App branch, which starts CI automatically.
Open Expensify/App → Actions → Verify native PGO on emulators. Confirm both jobs pass, and inspect
pgo-emulator-androidandpgo-emulator-iosfor the reports and profiles. Use Re-run jobs to repeat the run. The run guide explains the results.No device registration, signing credentials, test account, environment files or local dependency install are required.
Offline tests
The verification workload uses bundled data. Native dependency downloads require network access; a failed download must fail the job without reporting a successful verification.
QA Steps
This workflow has no behavior to test in a staging or production app. An engineer can verify it in Actions using the steps above.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Normal App screens are unchanged. The synthetic verification app runs through a separate CI entry point.