From e576c5dc7d5fa5cda494ebd98e69564e91e8faaf Mon Sep 17 00:00:00 2001 From: bl00dymarie Date: Fri, 17 Nov 2023 16:02:33 +0100 Subject: [PATCH 1/5] Rename master to main in documentation --- CONTRIBUTING.md | 8 ++++---- README.md | 6 +++--- tools/release-wizard.js | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c0a7ae3..1db5dd6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to drip aka CONDRIPUTING -So good to see you here, hello :wave\_tone1: :wave\_tone2: :wave\_tone3: :wave\_tone4: :wave\_tone5: +So good to see you here, hello :wave_tone1: :wave_tone2: :wave_tone3: :wave_tone4: :wave_tone5: ## Table Of Contents @@ -18,8 +18,8 @@ You just want to say hello? Send us a [nice email](mailto:drip@mailbox.org?Subje ## What should I know before I get started? -We have prepared something for **you**: check out our [README](https://gitlab.com/bloodyhealth/drip/blob/master/README.md) for more information on how to set up and install everything you'll need. -[Ping us](mailto:drip@mailbox.org) if you could need some help :helmet\_with\_cross: ! +We have prepared something for **you**: check out our [README](https://gitlab.com/bloodyhealth/drip/blob/main/README.md) for more information on how to set up and install everything you'll need. +[Ping us](mailto:drip@mailbox.org) if you could need some help :helmet_with_cross: ! Let us know if you want to suggest improvements for the README and open a merge request (which is just like Github's pull request) @@ -55,4 +55,4 @@ To send us a new issue you can also use our [gitlab email](mailto:incoming+blood ![](https://media.giphy.com/media/kPA88elN9kYco/giphy.gif) Thank you for condriputing to open source, thank you for condriputing to drip! -Much love from Bloody Health :heart\_exclamation: +Much love from Bloody Health :heart_exclamation: diff --git a/README.md b/README.md index fb6c8ce..c95f468 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ Find more information on [our website](https://dripapp.org/). The app is built in React Native and currently developed for Android. -▶ [How to contribute to the project](https://gitlab.com/bloodyhealth/drip/blob/master/CONTRIBUTING.md) +▶ [How to contribute to the project](https://gitlab.com/bloodyhealth/drip/blob/main/CONTRIBUTING.md) -▶ [How to release a new version](https://gitlab.com/bloodyhealth/drip/blob/master/RELEASE.md) +▶ [How to release a new version](https://gitlab.com/bloodyhealth/drip/blob/main/RELEASE.md) ## Development setup @@ -166,7 +166,7 @@ You can run the tests with: ### End to end tests -1. Check what testing device is specified in [package.json](https://gitlab.com/bloodyhealth/drip/blob/master/package.json) under: +1. Check what testing device is specified in [package.json](https://gitlab.com/bloodyhealth/drip/blob/main/package.json) under: ``` {"detox": {"configurations": diff --git a/tools/release-wizard.js b/tools/release-wizard.js index fd63c50..d864426 100644 --- a/tools/release-wizard.js +++ b/tools/release-wizard.js @@ -32,8 +32,8 @@ async function leadThroughRelease() { await makeCommitRelease() console.log(`Groovy. We've created a commit for this release that includes the version and changelog updates, as well as a git tag for the release. -Please review it, make any necessary changes, and if it's all good, push the commit and the tag up to master by running: -git push origin master +Please review it, make any necessary changes, and if it's all good, push the commit and the tag up to 'your-branch' by running: +git push origin 'your-branch' git push origin ${require('../package.json').version} Don't forget to also run 'npm run build-android-release' to package the apk and upload it to the app stores! From 486dd185e2068804d9c321ed239d45b71f574bff Mon Sep 17 00:00:00 2001 From: bl00dymarie Date: Fri, 17 Nov 2023 16:05:26 +0100 Subject: [PATCH 2/5] Remove automatic changelog update --- RELEASE.md | 1 - package.json | 1 - tools/bin/update-changelog.js | 12 ------------ tools/release-wizard.js | 15 +-------------- tools/update-changelog.js | 19 ------------------- 5 files changed, 1 insertion(+), 47 deletions(-) delete mode 100644 tools/bin/update-changelog.js delete mode 100755 tools/update-changelog.js diff --git a/RELEASE.md b/RELEASE.md index 9a7f35d..992b179 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -10,7 +10,6 @@ npm run release This will trigger the following: * update version number * create a new tag for the release -* update the changelog * make a release commit To then bundle a release run the following command on your branch: diff --git a/package.json b/package.json index ab3810e..c888675 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "update-version": "node ./tools/bin/update-version.js", "commit-release": "node ./tools/bin/commit-release.js", "tag-release": "node ./tools/bin/tag-release.js", - "update-changelog": "node ./tools/bin/update-changelog.js", "release": "node ./tools/release-wizard.js", "clear": ". scripts/clear.sh", "postinstall": "npx jetify", diff --git a/tools/bin/update-changelog.js b/tools/bin/update-changelog.js deleted file mode 100644 index d1ee07c..0000000 --- a/tools/bin/update-changelog.js +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env node - -const updateChangelog = require('../update-changelog'); - -(async () => { - try { - await updateChangelog() - } catch(err) { - console.error(err) - process.exit(1) - } -})() \ No newline at end of file diff --git a/tools/release-wizard.js b/tools/release-wizard.js index d864426..768581a 100644 --- a/tools/release-wizard.js +++ b/tools/release-wizard.js @@ -1,7 +1,6 @@ const readline = require('readline') const updateVersion = require('./update-version') const createTagForRelease = require('./tag-release') -const updateChangelog = require('./update-changelog') const makeCommitRelease = require('./commit-release') process.on('unhandledRejection', err => { throw(err) }) @@ -16,22 +15,10 @@ async function leadThroughRelease() { input: process.stdin, output: process.stdout, }) - const shouldUpdateChangelog = await new Promise(resolve => { - rl.question('Would you like to update the changelog (y/n)?', yn => { - yn === 'y' || yn === 'Y' ? resolve(true) : resolve(false) - }) - }) - - if (shouldUpdateChangelog) { - await updateChangelog() - await new Promise(resolve => { - rl.question("Awesome. We've added all commits for this release to the changelog file. Please review, edit and summarize where necessary so it's useful for the app's users. Then come back here and press enter.", () => resolve()) - }) - } await makeCommitRelease() - console.log(`Groovy. We've created a commit for this release that includes the version and changelog updates, as well as a git tag for the release. + console.log(`Groovy. We've created a commit for this release that includes the version, as well as a git tag for the release. Please review it, make any necessary changes, and if it's all good, push the commit and the tag up to 'your-branch' by running: git push origin 'your-branch' git push origin ${require('../package.json').version} diff --git a/tools/update-changelog.js b/tools/update-changelog.js deleted file mode 100755 index 322def6..0000000 --- a/tools/update-changelog.js +++ /dev/null @@ -1,19 +0,0 @@ -const updateChangelog = require('basic-changelog') - -const opts = { - filterCommitsStartingWith: ['release:'] -} - -module.exports = () => { - return new Promise((resolve, reject) => { - updateChangelog('./CHANGELOG.md', opts, err => { - if (err) { - console.error('Something went wrong trying to update the changelog:') - reject(err) - return - } - console.log('Changelog successfully updated') - resolve() - }) - }) -} \ No newline at end of file From 92546362a08f4982aa05837359f983bdfd4a2dd5 Mon Sep 17 00:00:00 2001 From: bl00dymarie Date: Sat, 18 Nov 2023 00:21:17 +0100 Subject: [PATCH 3/5] Chore: document release process for android --- RELEASE.md | 89 ++++++++++++++++++++++++++++++++--------- package.json | 5 ++- tools/update-version.js | 22 +++++----- 3 files changed, 86 insertions(+), 30 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index 992b179..6c6954d 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,32 +1,81 @@ -# How to release a new version +# How to release a new app version for Android -Note: You need the release-key to bundle a release that can be uploaded to Google Play Store. +Note: You need the release-key for Android to bundle a signed release that can be uploaded and published via the Google Play Store. +A similar process for Apple requires a certificate to upload and publish the app to the App Store. More documentation on 'How to release a new app version for iOS' coming soon. -Run the release wizard that takes you through all the steps necessary to prepare a new release: +1. version updating +2. android building +3. release sharing + +## Version updating + +By running the following command, it will: + +- create a new versionName and a new higher versionCode (+1) +- create a commit including a tag named after the new release version name. ``` -npm run release -``` -This will trigger the following: -* update version number -* create a new tag for the release -* make a release commit - -To then bundle a release run the following command on your branch: - -``` -cd android && ./gradlew bundleRelease +yarn release ``` -This command creates an `app.aab` file in the folder `/android/app/build/outputs/bundle/release`. +## Android building -[More on Android App Bundle](https://blog.swmansion.com/make-your-react-native-app-3x-smaller-44c993eda2c9) +APK versus AAB -You need to manually push the created tag to Gitlab: +> Android App Bundles (AAB) include all your app’s compiled code and resources, but defer APK generation and signing to Google Play. Unlike an APK, you can't deploy an app bundle directly to a device. So, if you want to quickly test or share an APK with someone else, you should instead build an APK. + +(https://developer.android.com/build/building-cmdline) + +### APK + +To build a release apk file, run the following command: +(`cd android && ./gradlew clean && ./gradlew assembleRelease && cd ..`) ``` -git push origin +yarn build-android-apk-release ``` -Also don't forget to push your branch to Gitlab and review and merge it if ready! -Yay, done (have a scoop of ice cream, I suggest coconut 🍦)! \ No newline at end of file +It creates a new apk file named app-release.apk under ./android/app/release/ + +For signing an apk you can run this command: +(`zipalign -v -p 4 ./android/app/build/outputs/apk/release/app-release.apk ./android/app/build/outputs/apk/release/app-release_signed.apk`) + +``` +yarn sign-android-apk-release +``` + +It adds a file named "app-release_signed.apk" + +### AAB + +To build a release aab file, run: +(`cd android && ./gradlew clean && ./gradlew :app:bundleRelease && cd ..`) + +``` +yarn build-android-aab-release +``` + +It creates a new aab file named app-release.aab under ./android/app/build/outputs/bundle/release + +For signing an aab you first need to configure the base module’s build.gradle file with your app’s signing information. You can then run this command: +(`jarsigner -keystore ./android/app/drip-release-key.keystore ./android/app/build/outputs/bundle/release/app-release.aab drip-release-key`) + +``` +yarn sign-android-aab-release +``` + +## Share the release + +### Gitlab repository + +For a quick and easy way to share an apk to testers who are willing to sideload drip onto their Android phones, do this: Upload a signed apk to the Gitlab repository of the drip website under `/release` https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/tree/main/release and maybe adapt the name of the apk with a more specific name than "app-release.apk". + +### Google Play Console + +Upload a signed aab to the [Google Play Console for developers](https://play.google.com/console/) and add it to the App bundle explorer. This requires a higher versionCode and a different version name compared to previously uploaded aab or apk files. +You can decide if you want the new app version to get released for testing (internal, closed or open) or for production. Keep in mind that any track other than "internal testing" trigger an external review by Google and might take a few hours. + +### drip website + +After a new version has been published on Google Play (or F-Droid) the apk version that is downloadable directly from the [drip website](https://dripapp.org) needs to get updated as well. Therefore you upload a signed apk to the [repository](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/merge_requests/new) and adapt the name on /index.html. +Last time I checked it was [here](f3da9776b1943ffa32458e74ef86eeca98c1891c/index.html#L114). diff --git a/package.json b/package.json index c888675..2748eea 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,10 @@ "test-watch": "jest --watch test", "lint": "eslint components lib test styles db", "devtool": "adb shell input keyevent 82", - "build-android-release": "cd android && ./gradlew clean && ./gradlew assembleRelease && cd ..", + "build-android-apk-release": "cd android && ./gradlew clean && ./gradlew assembleRelease && cd ..", + "sign-android-apk-release": "zipalign -v -p 4 ./android/app/build/outputs/apk/release/app-release.apk ./android/app/build/outputs/apk/release/app-release_signed.apk", + "build-android-aab-release": "cd android && ./gradlew clean && ./gradlew :app:bundleRelease && cd ..", + "sign-android-aab-release": "jarsigner -keystore ./android/app/drip-release-key.keystore ./android/app/build/outputs/bundle/release/app-release.aab drip-release-key", "update-version": "node ./tools/bin/update-version.js", "commit-release": "node ./tools/bin/commit-release.js", "tag-release": "node ./tools/bin/tag-release.js", diff --git a/tools/update-version.js b/tools/update-version.js index d10d284..6f3b280 100755 --- a/tools/update-version.js +++ b/tools/update-version.js @@ -10,14 +10,16 @@ const fs = require('fs') module.exports = () => { return new Promise((resolve, reject) => { - const currentVersion = JSON.parse(fs.readFileSync('./package.json')).version + const currentVersionName = JSON.parse( + fs.readFileSync('./package.json') + ).version const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }) - function createTodaysVersion(attempt) { + function createTodaysVersionName(attempt) { const today = new Date() const yy = today.getFullYear() - 2000 // So it's two digits const monthString = (today.getMonth() + 1).toString() @@ -31,18 +33,20 @@ module.exports = () => { } } - let nextVersion + let nextVersionName for (let i = 0 /* letter a */; i <= 25 /* letter z */; i++) { - nextVersion = createTodaysVersion(i) - if (nextVersion !== currentVersion) break + nextVersionName = createTodaysVersionName(i) + if (nextVersionName !== currentVersionName) break } - if (nextVersion === currentVersion) { - console.error('I dont know what else to generate beyond ' + nextVersion) + if (nextVersionName === currentVersionName) { + console.error( + 'I dont know what else to generate beyond ' + nextVersionName + ) process.exit(1) } rl.question( - 'Next version will be `' + nextVersion + '`, okay? y/n ', + 'Next version name will be `' + nextVersionName + '`, okay? y/n ', async (yn) => { if (yn !== 'y' && yn !== 'Y') { reject('Release cancelled.\n') @@ -50,7 +54,7 @@ module.exports = () => { } const pkgJSON = JSON.parse(fs.readFileSync('./package.json')) - pkgJSON.version = nextVersion + pkgJSON.version = nextVersionName fs.writeFileSync('./package.json', JSON.stringify(pkgJSON, null, 2)) await ReactNativeVersion.version( From 4ed399c50c32e4ccc78cf1c0f6cca52428f6e8e5 Mon Sep 17 00:00:00 2001 From: bl00dymarie Date: Mon, 20 Nov 2023 18:04:41 +0100 Subject: [PATCH 4/5] Add toc, screenshot info and some more --- RELEASE.md | 63 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index 6c6954d..9a341ea 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,15 +1,20 @@ # How to release a new app version for Android -Note: You need the release-key for Android to bundle a signed release that can be uploaded and published via the Google Play Store. -A similar process for Apple requires a certificate to upload and publish the app to the App Store. More documentation on 'How to release a new app version for iOS' coming soon. +_Note: You need the release-key for Android to bundle a signed release that can be uploaded and published via the Google Play Store. A similar process for Apple requires a certificate to upload and publish the app to the App Store. More documentation on 'How to release a new app version for iOS' coming soon._ -1. version updating -2. android building -3. release sharing +# Table of Contents + +1. [version updating](#Version-updating) +2. [android building](#Building-in-Android) + a. [APK](#APK) + b. [AAB](#AAB) +3. [release sharing](#Share-the-release) ## Version updating -By running the following command, it will: +When you are done with a chore, a feature or a bugfix, you may want to share it with testers and eventually publish a release. In order to identify a specific app version we can update the version name, which is created based on the following format: `1.yymm.d` e.g. `1.2311.14`. If you want to upload a new app version to Google Play you also need to update the version code. + +The following command will: - create a new versionName and a new higher versionCode (+1) - create a commit including a tag named after the new release version name. @@ -18,7 +23,9 @@ By running the following command, it will: yarn release ``` -## Android building +The versionName and versionCode [are defined here](https://gitlab.com/bloodyhealth/drip/-/blob/5401789c46f4a02915ab900ef284581be420451c/android/app/build.gradle#L137-138) and in [package.json](https://gitlab.com/bloodyhealth/drip/-/blob/5401789c46f4a02915ab900ef284581be420451c/package.json#L3). + +## Building in Android APK versus AAB @@ -29,53 +36,73 @@ APK versus AAB ### APK To build a release apk file, run the following command: -(`cd android && ./gradlew clean && ./gradlew assembleRelease && cd ..`) ``` yarn build-android-apk-release ``` -It creates a new apk file named app-release.apk under ./android/app/release/ +_which is a shortcut for:_ `cd android && ./gradlew clean && ./gradlew assembleRelease && cd ..` + +This will create a new apk file named `app-release.apk` under `./android/app/build/outputs/apk/release/`. For signing an apk you can run this command: -(`zipalign -v -p 4 ./android/app/build/outputs/apk/release/app-release.apk ./android/app/build/outputs/apk/release/app-release_signed.apk`) ``` yarn sign-android-apk-release ``` -It adds a file named "app-release_signed.apk" +_which is a shortcut for:_ `zipalign -v -p 4 ./android/app/build/outputs/apk/release/app-release.apk ./android/app/build/outputs/apk/release/app-release_signed.apk` + +It adds a file name `app-release_signed.apk` in the same folder in `./android/app/build/outputs/apk/release/` ### AAB To build a release aab file, run: -(`cd android && ./gradlew clean && ./gradlew :app:bundleRelease && cd ..`) ``` yarn build-android-aab-release ``` -It creates a new aab file named app-release.aab under ./android/app/build/outputs/bundle/release +_which is a shortcut for:_ `cd android && ./gradlew clean && ./gradlew :app:bundleRelease && cd ..` + +It creates a new aab file named `app-release.aab` under `./android/app/build/outputs/bundle/release` For signing an aab you first need to configure the base module’s build.gradle file with your app’s signing information. You can then run this command: -(`jarsigner -keystore ./android/app/drip-release-key.keystore ./android/app/build/outputs/bundle/release/app-release.aab drip-release-key`) ``` yarn sign-android-aab-release ``` +_which is a shortcut for:_ `jarsigner -keystore ./android/app/drip-release-key.keystore ./android/app/build/outputs/bundle/release/app-release.aab drip-release-key` + ## Share the release ### Gitlab repository -For a quick and easy way to share an apk to testers who are willing to sideload drip onto their Android phones, do this: Upload a signed apk to the Gitlab repository of the drip website under `/release` https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/tree/main/release and maybe adapt the name of the apk with a more specific name than "app-release.apk". +For a quick and easy way to share an apk to testers who are willing to sideload drip onto their Android phones, do this: Upload a signed apk to the Gitlab repository of the drip website under `/release` https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/tree/main/release and maybe adapt the name of the apk with a more specific name than "app-release.apk". Now you can simply share a direct link to download your newly bundled apk, e.g. [a download link for v1.2311.14](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/blob/main/release/v1.2311.14.apk). ### Google Play Console -Upload a signed aab to the [Google Play Console for developers](https://play.google.com/console/) and add it to the App bundle explorer. This requires a higher versionCode and a different version name compared to previously uploaded aab or apk files. -You can decide if you want the new app version to get released for testing (internal, closed or open) or for production. Keep in mind that any track other than "internal testing" trigger an external review by Google and might take a few hours. +Upload a signed aab to the [Google Play Console for developers](https://play.google.com/console/) and add it to the "App bundle explorer". This requires a higher versionCode and a different version name compared to previously uploaded aab or apk files. +You can decide if you want the new app version to get released for testing (internal, closed or open) or for production. Keep in mind that any track other than "internal testing" triggers an external review by Google and might take a few hours. + +#### Phone screenshots + +If there are visual changes in the app you may want to update the screenshots for the Google Play Store listing. Keep in mind that Google Play has specific resolution requirements. You'll find them in Grow -> Store presence -> Main Store Listing -> Phone screenshots. ### drip website -After a new version has been published on Google Play (or F-Droid) the apk version that is downloadable directly from the [drip website](https://dripapp.org) needs to get updated as well. Therefore you upload a signed apk to the [repository](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/merge_requests/new) and adapt the name on /index.html. +After a new version has been published on Google Play (or F-Droid) the apk version that is downloadable directly from the [drip website](https://dripapp.org) needs to get updated as well. Therefore you upload a signed apk to the [repository](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/merge_requests/new) and adapt the name and link on /index.html. Last time I checked it was [here](f3da9776b1943ffa32458e74ef86eeca98c1891c/index.html#L114). + +#### Phone screenshots + +Please also update [phone screenshots here](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/tree/main/assets) and set links on [/index](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/blob/f3da9776b1943ffa32458e74ef86eeca98c1891c/index.html#L47) and [/media](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/blob/c7f999bb7ad736345321537cbffa3f4c24eeee6d/media.html#L33) that can then also be attached to a social media post. + +You probably want to share the app update by posting on one or more of these platforms: + +- [Twitter](twitter.com/dripberlin) +- [Mastodon](mastodon.social/@dripapp) +- [Ko-fi](https://ko-fi.com/dripapp) +- [Linkedin](https://www.linkedin.com/company/34899684/) +- Different tech, privacy, feminist oriented slacks From 84ff76096ba56eee2e2e29ef54b2c7dadb1f8f43 Mon Sep 17 00:00:00 2001 From: wunderfisch Date: Wed, 22 Nov 2023 14:53:57 +0000 Subject: [PATCH 5/5] Implement review feedback --- CONTRIBUTING.md | 2 +- RELEASE.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1db5dd6..be35929 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,7 @@ So good to see you here, hello :wave_tone1: :wave_tone2: :wave_tone3: :wave_tone ## TL;DR -You just want to say hello? Send us a [nice email](mailto:drip@mailbox.org?Subject=Nice%20incoming%20mail) :postbox:, ask to [join our Slack](mailto:drip@mailbox.org?Subject=Join%20Slack) or tweet :bird: at us [@dripberlin](https://twitter.com/dripberlin). +You just want to say hello? Send us a [nice email](mailto:drip@mailbox.org?Subject=Nice%20incoming%20mail) :postbox:, ask to [join our Slack](mailto:drip@mailbox.org?Subject=Join%20Slack), toot :mammoth: [@dripapp@mastodon.social](https://mastodon.social/@dripapp) or tweet :bird: at us [@dripberlin](https://twitter.com/dripberlin). ## What should I know before I get started? diff --git a/RELEASE.md b/RELEASE.md index 9a341ea..6afeed0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -12,7 +12,7 @@ _Note: You need the release-key for Android to bundle a signed release that can ## Version updating -When you are done with a chore, a feature or a bugfix, you may want to share it with testers and eventually publish a release. In order to identify a specific app version we can update the version name, which is created based on the following format: `1.yymm.d` e.g. `1.2311.14`. If you want to upload a new app version to Google Play you also need to update the version code. +When you are done with a chore, a feature or a bugfix, you may want to share it with testers and eventually publish a release. In order to identify a specific app version we can update the version name, which is created based on the following format: `1.yymm.d` e.g. `1.2311.7`. If you want to upload a new app version to Google Play you also need to update the version code. The following command will: @@ -92,7 +92,7 @@ If there are visual changes in the app you may want to update the screenshots fo ### drip website -After a new version has been published on Google Play (or F-Droid) the apk version that is downloadable directly from the [drip website](https://dripapp.org) needs to get updated as well. Therefore you upload a signed apk to the [repository](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/-/merge_requests/new) and adapt the name and link on /index.html. +After a new version has been published on Google Play (or F-Droid) the apk version that is downloadable directly from the [drip website](https://dripapp.org) needs to get updated as well. Therefore you upload a signed apk to the [repository](https://gitlab.com/bloodyhealth/bloodyhealth.gitlab.io/) and adapt the name and link on /index.html. Last time I checked it was [here](f3da9776b1943ffa32458e74ef86eeca98c1891c/index.html#L114). #### Phone screenshots