From 6804ad8ca66c5411b00e876b2a276db318f81713 Mon Sep 17 00:00:00 2001 From: Kaartic Sivaraam Date: Sat, 25 May 2024 00:14:18 +0530 Subject: [PATCH] Project-maintenance: add more details that were missing (#52) * Project-maintenance: add more details that were missing * Add notes on promoting test release to production --- android/Project-maintenance.md | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/android/Project-maintenance.md b/android/Project-maintenance.md index 98fe1e7..95dbd57 100644 --- a/android/Project-maintenance.md +++ b/android/Project-maintenance.md @@ -6,16 +6,37 @@ See [Developer workflow](Developer-workflow.md) # Procedure to release a new version +## Before release + +Before proceeding to do the steps necessary for publishing a release, make sure you **build the `prodRelease` variant of the app** from the code you plan on using for the release. If that build works fine, you could proceed with the steps to release the version. + +This is particularly necessary if the change touches any model classes as ProGuard would kick in and trim them if [our rules]([url](https://github.com/commons-app/apps-android-commons/blob/main/app/proguard-rules.txt#L35-L41)) are not appropriate. + +## Generate release build after verification + 1. Add the new features to [CHANGELOG.md](https://github.com/commons-app/apps-android-commons/blob/master/CHANGELOG.md) 1. Increment `versionCode` and `versionName` in [app/build.gradle](https://github.com/commons-app/apps-android-commons/blob/master/app/build.gradle) 1. Commit, and push to Github -1. Tag the commit as `v` + the version number, for instance `v1.32` for version 1.32. This is needed [for F-Droid](https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/fr.free.nrw.commons.txt). Don't forget to push the tags (`git push commons-app --tags`). -1. Replace throw-away Mapbox token with actual production token that is kept privately. Reach out to Nicolas / Sivaraam to get the token. +1. Tag the commit as `v` + the version number, for instance `v1.32` for version 1.32. This is needed [for F-Droid](https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/fr.free.nrw.commons.txt) (`git tag v1.32`). Don't forget to push the tags (`git push --tags`). 1. Generate the signed app bundle using the keystore via the **Build > Generate Signed Bundle / APK** menu [[ref](https://developer.android.com/studio/publish/app-signing#sign-apk)] -1. Click 'Draft a new release' and fill in details -1. Publish to Google Play -1. Update Google Play's changelog + - Note: In this step, we need to generate an APK not an Android App bundle. + +## Publish 'Open testing' release + +1. Once the production APK is ready, go to the Google Play Console and switch to the **Testing > Open Testing** page. +1. Click 'Create new release' and upload the production APK. +1. Make sure to attach the ReTrace mapping file located at `app/build/outputs/mapping/prodRelease/mapping.txt` to the uploaded APK. This is possible through the overflow menu seen near the uploaded APK. +1. Fill in the changelog and verify rollout information. +1. After verification is done, rollout the release for testing. + +## Promoting the test release to production +1. Go to the Google Play Console and switch to the **Testing > Open Testing** page. +1. Click on the "Promote release" button on the last testing release and choose "Production" from the menu. +1. Verify the release APK attached, release notes and if all looks fine, hit "Next". +1. Initiate a staged roll out of 20% and hit "Save". +1. Go to publishing overview, cross check stuff and send the changes for review. + # Branching and hotfix system for releases - Every major release (e.g. 2.6) should be pulled from master and a new branch created (e.g. `2.6.x-release`)