Release Process¶
Step-by-step guide for releasing a new version.
Prerequisites¶
GitHub repository secrets must be configured:
| Secret | Purpose |
|---|---|
GOOGLE_SERVICES_JSON |
Base64-encoded google-services.json |
MAPS_API_KEY |
Google Maps API key |
RELEASE_KEYSTORE_BASE64 |
Base64-encoded release keystore (.jks) |
RELEASE_KEYSTORE_PASSWORD |
Keystore password |
RELEASE_KEY_ALIAS |
Signing key alias |
RELEASE_KEY_PASSWORD |
Signing key password |
GIST_TOKEN |
Personal access token for badge updates |
These secrets are consumed by the Setup Secrets reusable action.
Steps¶
-
Develop on
staging— all feature branches merge intostagingvia PRs. -
Bump version — update
version.propertieson the release branch: -
Regenerate baseline profiles (recommended when critical user journeys changed):
Requires a device or emulator (API 28+). Commit the generated files inapp/src/release/generated/baselineProfiles/. Stale profiles still work (ART ignores removed methods) but won't cover new hot paths. See Performance — Generating Profiles for details. -
Create PR
staging → main— this triggers:- Unit Tests — detekt + tests + coverage comment
- Version Check — validates version bump
- Baseline Profile Verification — AAB integrity + PR comment
-
Merge to
main— this triggers:- Build & Release — builds signed APK, creates GitHub release with tag
v<versionName> - Project Stats — updates badges
- Update Module Graph — commits graph if changed
- Deploy Docs — publishes docs site if docs changed
- Build & Release — builds signed APK, creates GitHub release with tag
-
Verify — check that the GitHub release was created with the correct tag and APK.
Commit message¶
Use the release prefix for the version bump commit:
See Commit Messages for all prefixes.