name: Release checklist description: Checklist for each release. This template is only for the core team. title: "[Release] Element Android v" labels: [🚀 Release] assignees: - bmarty body: - type: textarea id: checklist attributes: label: Release checklist description: For the template example, we are releasing the version 1.2.3. Replace 1.2.3 with the version in the issue body. placeholder: | If you are reading this, you have deleted the content of the release template: undo the deletion or start again. value: | ### Before the release - [ ] Weblate sync, fix lint issue if any (in a dedicated PR) - [ ] Check the update of the store descriptions (using Google Translate if necessary) to ensure that the changes are acceptable to be published to the stores. - [ ] While Weblate is locked, and after the PR from Weblate has been merged, handle all the TODOs in the main `strings.xml` file - [ ] Run the script `./tools/release/pushPlayStoreMetaData.sh`. You can check in the GooglePlay console the Activity log to check the effect. ### Do the release - [ ] Create release with gitflow, branch name `release/1.2.3` - [ ] Check the crashes from the PlayStore - [ ] Check the rageshake with the current dev version: https://github.com/matrix-org/element-android-rageshakes/labels/1.2.3-dev - [ ] Run the integration test, and especially `UiAllScreensSanityTest.allScreensTest()` - [ ] Create an account on matrix.org and do some smoke tests that the sanity test does not cover like: 1-1 call, 1-1 video call, Jitsi call for instance - [ ] Run towncrier: `towncrier --version v1.2.3 --draft` (remove `--draft` do write the file CHANGES.md) - [ ] Check that the folder `changelog.d` is empty. It can happen that some remaining files stay here - [ ] Check the file CHANGES.md consistency. It's possible to reorder items (most important changes first) or change their section if relevant. Also an opportunity to fix some typo, or rewrite things - [ ] Add file for fastlane under ./fastlane/metadata/android/en-US/changelogs - [ ] (optional) Push the branch and start a draft PR (will not be merged), to check that the CI is happy with all the changes. - [ ] Finish release with gitflow, delete the draft PR (if created) - [ ] Push `main` and the new tag `v1.2.3` to origin - [ ] Checkout `develop` - [ ] Increase version (versionPatch + 2) in `./vector/build.gradle` - [ ] Change the value of SDK_VERSION in the file `./matrix-sdk-android/build.gradle` - [ ] Commit and push `develop` - [ ] Wait for [Buildkite](https://buildkite.com/matrix-dot-org/element-android/builds?branch=main) to build the `main` branch. - [ ] Run the script `~/scripts/releaseElement.sh`. It will download the APKs from Buildkite check them and sign them. - [ ] Install the APK on your phone to check that the upgrade went well (no init sync, etc.) - [ ] Create the release on gitHub [from the tag](https://github.com/vector-im/element-android/tags), copy paste the block from the file CHANGES.md - [ ] Add the 4 signed APKs to the GitHub release - [ ] Ping the Android Internal room ### Once tested and validated internally - [ ] Create a new beta release on the GooglePlay console and upload the 4 signed Apks. - [ ] Check that the version codes are correct - [ ] Copy the fastlane change to the GooglePlay console in the section en-GB. - [ ] Push to beta release to 100% of the users - [ ] Notify the F-Droid team so that they can schedule the publication on F-Droid ### Once Live on PlayStore - [ ] Ping the Android public room and update its topic - [ ] Add an entry in the internal diary ### After at least 2 days - [ ] Check the [rageshakes](https://github.com/matrix-org/element-android-rageshakes/issues) - [ ] Check the crash reports on the GooglePlay console - [ ] Check the Android Element room for any reported issues on the new version - [ ] If all is OK, push to production and notify Markus (Bubu) to release the F-Droid version - [ ] Ping the Android public room and update its topic with the new available version ### Android SDK2 The SDK2 and the sample app are released only when Element has been pushed to production. - [ ] Checkout the `main` branch on Element Android project #### On the SDK2 project https://github.com/matrix-org/matrix-android-sdk2 - [ ] Create a release with GitFlow - [ ] Update the value of VERSION_NAME in the file gradle.properties - [ ] Update the files `./build.gradle` and `./gradle/gradle-wrapper.properties` manually, to use the latest version for the dependency. You can get inspired by the same files on Element Android project. - [ ] Run the script `./tools/import_from_element.sh` - [ ] Check the diff in the file `./matrix-sdk-android/build.gradle` and restore what may have been erased (in particular the line `apply plugin: "com.vanniktech.maven.publish"` and the line about the version) - [ ] Let the script finish to build the library - [ ] Update the file `CHANGES.md` - [ ] Finish the release using GitFlow - [ ] Push the branch `main`, the new tag and the branch `develop` to origin ##### Release on MavenCentral - [ ] Run the command `./gradlew publish --no-daemon --no-parallel`. You'll need some non-public element to do so - [ ] Connect to https://s01.oss.sonatype.org - [ ] Click on Staging Repositories and check the the files have been uploaded - [ ] Click on close - [ ] Wait (check Activity tab until step "Repository closed" is displayed) - [ ] Click on release. The staging repository will disappear - [ ] Check that the release is available in https://repo1.maven.org/maven2/org/matrix/android/matrix-android-sdk2/ (it can take a few minutes) ##### Release on GitHub - [ ] Create the release on GitHub from [the tag](https://github.com/matrix-org/matrix-android-sdk2/tags) - [ ] Upload the AAR on the GitHub release ### Android SDK2 sample https://github.com/matrix-org/matrix-android-sdk2-sample - [ ] Update the dependency to the new version of the SDK2. It can take some time for MavenCentral to make the librarie available. You can check status on https://repo1.maven.org/maven2/org/matrix/android/matrix-android-sdk2/ - [ ] Build and run the sample, you may have to fix some API break - [ ] Commit and push directly on `main` validations: required: true