Skip to content

Finishing the release

Andrés Miguel Rubio edited this page Aug 27, 2024 · 61 revisions

Check release branch is updated with:

  • In root project gradle/libs.versions.toml check:

    • Update SDK dependency dhis2sdk to the SDK release version.
    • Update mobile-UI dependency designSystem to the release version.
    • Version code needs to be updated to +1.
  • In root>app>src>main>res>raw>testing_credentials.json update login credentials to the three supported versions (not apply for patch versions).

For Patch versions

  • In Jira go to Releases
  • Search for version to release and click
  • Click on Release Notes
  • In formatting options select only bugs
  • Copy in Markdown format, save and paste it.
  • Paste it in root>RELEASE.md.

For Releases

Create Jira Filter

  • In Jira go to Filter -> Create filter.
  • Filter by fix version and Android App project.
    • Patch versions, filter by issue type: bug.
    • Release versions, filter by issue type bug and feature.
  • Create the filter by pressing Save as button and adding a name (ie: Release 2.5.2).
  • Once is created, go to details -> Edit permissions:
    • Viewers: Group - Jira software users.
    • Editors: Project - Android App for DHIS2.
  • Once is saved, you will see the filter id in the url.

Github notes

For a feature release you will need to do it manually. Contact @marta / @jose for this. Take the release notes from Android releases repository

In root>RELEASE.md modify using the following template:

[TITLE]
<table>
<tr> 
<td> 
<img src="https://s3-eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/android-chrome-384x384.png" width="800"> 
</td> 
<td>
[SUMMARY]
</td>
</tr> 
<tr> 
<td colspan="2" bgcolor="white">
[CONTENT]
</td>
</tr>
</table>

[TITLE]

First line must contain release title with the target version: Android Capture App for DHIS 2 (vX.XX) with a blank space after it.

[SUMMARY]

The new <strong>DHIS2 Android App</strong> allows offline data capture across all DHIS2 data models. Data and metadata are automatically synchronized whenever there is internet access, always keeping the most relevant data for the logged user in the device.
The app is compatible and we support <strong>2.35</strong>, <strong>2.34</strong>, <strong>2.33</strong>.  And has no breaking changes with <strong>2.32</strong>, <strong>2.31</strong>, <strong>2.30</strong> and <strong>2.29</strong>.

Update compatible versions with the three last ones: In this example as we release 2.4, the compatible versions would be 2.36, 2.35, 2.34.

Update no breaking changes with the one that is no longer supported: In this example 2.33 will move from compatible versions to no breaking changes.

For Patch versions

Paste the following content:

This is a patch version of the <strong>DHIS2 Android App</strong> It builds upon the last version including bug fixes that couldn't wait to the next version. 
It includes no functional improvements neither changes in the User Interface. It means that yours users can update without experiencing any change in the UI. 

[CONTENT]

In android release document (example for 2.4) copy features content in raw mode (exclude Header info and Release info).

Update Jira filters link

At the bottom of the content body, paste the following paragraphs:

You can find in Jira details on the [new features](https://dhis2.atlassian.net/issues/?filter=11918) and [bugs fixed](https://dhis2.atlassian.net/issues/?filter=11919) in this version.

Remember to check the [documentation](https://www.dhis2.org/android-documentation) for detailed information of the features included in the App and how to configure DHIS2 to use it.

Please create a [Jira](https://dhis2.atlassian.net/secure/Dashboard.jspa) Issue if you find a bug or you want to propose a new functionality. \[Project: Android App for DHIS2 | Component: AndroidApp].

Update new features link and bug fixes link with the ones that appears at the bottom of the release document


Google Play release notes

Important Google Play has a 500 character limitation so we have to summarize main features from release documents. Notes example for "feature releases":

This new version includes the following features:
- User experience and user interface improvements.
- Indicator form event programs and data sets.
- Local analytics at TEI level.
- Display attributes and data elements on maps.
- Navigate to selected location on maps.
- Working lists.
- Stability improvements.

You can find all details in Jira and Github (github.com/dhis2/dhis2-android-capture-app). 

Notes example for "bugfixing releases":

This is a patch version that fixes:
- ANDROAPP-3983 Cannot use QR to read and populate the search form
- ANDROAPP-3927 Impossible to add TEI when the program has zero search fields
- ANDROAPP-3917 With translated DEs, Horizontal/Vertical Options not keeping values selected
- ANDROAPP-4054 App crashes when searching by Age
....
You can find all the details on Jira and Github.

Paste this content in Project root>whatsnew>whatsnew-en-US


Committing changes

Commit all these changes in release branch with the message: build: xx.xx release

Merge release NO SQUASH

After committing changes:

  • Open a pull request to main, C.I will run, wait for it to pass. Fix conflicts or code smells.
  • Merge release branch into main via merge strategy (NO SQUASH).
  • Open a pull request to develop, C.I will run, wait for it to pass. Fix conflicts or code smells.
  • Merge release branch into develop via merge strategy (NO SQUASH)
  • Open new PR than changes vName version to the next release version of the app (XX.XX-Dev).
  • Then merge (NO SQUASH) this branch into develop.

Google Play images

Important It is mandatory to update the Google Play images for the store listing if provided by the design team. This process should be reviewed and publish at the same time as the apk.


Publishing

  • Run Deploy Release job on GitHub check In Google Play developer console that uploaded APK is in production and ready to send for review, check that there is a draft release for the version. Deploy Release parameters are:
    • Branch: The branch where the release should be deployed (main).
    • Enable GitHub release: If we want to release the version in GitHub.
    • Enable Google Play Release: If we want to release the version in GitHub.
    • Tag: Release version tag.
    • Is the new version a patch: If it's true release notes will be generated automatically. For now this flag should not be triggered until we improve the notes generation, there is an issue for that.

Once we have confirmation to perform the release:

  • In Google Play developer console, if it's approved, publish changes.
  • In GitHub, publish the draft.
  • In Jira, inside Android App project -> Releases: Select the current release and release it!.

Monitoring

Once the release is live, is time to check that everything is working as expected:

  • Check Sentry releases section to see the crash free rate, it shouldn't decrease.
  • Check Sentry issues section for new issues or existing happening again.
  • In check Google play reviews and in DHIS2 community if there is any specific issue reported by users.
  • Once adoption is over 15%, and everything works as expected, we can update the rollout to 100%.
Clone this wiki locally