docs/release/HISTORICAL_RELEASE.md
.signing folder in the root of the Git repository, if it doesn't exist yet.k9-release-signing.jks and k9.release.signing.properties files from 1Password and place them in the .signing folder.Example <app>.<releaseType>.signing.properties file:
<app>.<releaseType>.storeFile=<path to keystore "../.signing/k9mail.jks">
<app>.<releaseType>.storePassword=<storePassword>
<app>.<releaseType>.keyAlias=<keyAlias>
<app>.<releaseType>.keyPassword=<keyPassword>
<app> is the short name of the app, e.g. k9<releaseType> is the type of release, e.g. releaseInstall the android command line tools if not available already.
brew install --cask android-commandlinetools
Install latest fdroidserver from source:
python -m venv fdroidserver-env
source fdroidserver-env/bin/activate
pip install git+https://gitlab.com/fdroid/fdroidserver.git
To use fdroidserver from the command line, you need to activate the virtual environment before each use:
source fdroidserver-env/bin/activate
To deactivate the virtual environment:
deactivate
Update versionCode and versionName in app-k9mail/build.gradle.kts
Create change log entries in
app-k9mail/src/main/res/raw/changelog_master.xmlapp-metadata/com.fsck.k9/en-US/changelogs/${versionCode}.txt
Use past tense. Try to keep them high level. Focus on the user (experience).Update the metadata link to point to K-9 Mail's data:
ln --symbolic --no-dereference --force app-metadata/com.fsck.k9 metadata
Commit the changes. Message: "Version $versionName"
Run ./gradlew clean :app-k9mail:assembleRelease --no-build-cache --no-configuration-cache
Update an existing installation to make sure the app is signed with the proper key and runs on a real device.
adb install -r app-k9mail/build/outputs/apk/release/app-k9mail-release.apk
Tag as $versionName, e.g. 6.508
Copy app-k9mail/build/outputs/apk/release/app-k9mail-release.apk as k9-${versionName}.apk to Google Drive (MZLA
Team > K9 > APKs)
Change versionName in app-k9mail/build.gradle.kts to next version name followed by -SNAPSHOT
Commit the changes. Message: "Prepare for version $newVersionName"
Update gh-pages branch with the new change log
Push main branch
Push tags
Push gh-pages branch
Fetch the latest changes from the fdroiddata repository.
Switch to a new branch in your copy of the fdroiddata repository.
Edit metadata/com.fsck.k9.yml to create a new entry for the version you want to release. Usually it's copy & paste
of the previous entry and adjusting versionName, versionCode, and commit (use the tag name).
Leave CurrentVersion and CurrentVersionCode unchanged. Those specify which version is the stable/recommended
build.
Example:
- versionName: "${versionName}"
versionCode: ${versionCode}
commit: "${tagName}"
subdir: app-k9mail
gradle:
- yes
scandelete:
- build-plugin/build
Commit the changes. Message: "Update K-9 Mail to $newVersionName (beta)"
Run fdroid build --latest com.fsck.k9 to build the project using F-Droid's toolchain.
Push the changes to your fork of the fdroiddata repository.
Open a merge request on Gitlab. (The message from the server after the push in the previous step should contain a URL)
Select the App update template and fill it out.
Create merge request and the F-Droid team will do the rest.
app-metadata/com.fsck.k9/en-US/changelogs/${versionCode}.txt)When the team decides the main branch is stable enough and it's time to release a new stable version, create a new
maintenance branch (off main) using the desired version number with the last two digits dropped followed by -MAINT.
Example: 6.8-MAINT when the first stable release is K-9 Mail 6.800.
Ideally the first stable release contains no code changes when compared to the last beta version built from main.
That way the new release won't contain any changes that weren't exposed to user testing in a beta version before.
Switch to the appropriate maintenance branch, e.g. 6.8-MAINT
Update versionCode and versionName in app-k9mail/build.gradle.kts (stable releases use an even digit after the
dot, e.g. 5.400, 6.603)
Create change log entries in
app-k9mail/src/main/res/raw/changelog_master.xmlapp-k9mail/fastlane/metadata/android/en-US/changelogs/${versionCode}.txt
Use past tense. Try to keep them high level. Focus on the user (experience).Update the metadata link to point to K-9 Mail's data:
ln --symbolic --no-dereference --force app-metadata/com.fsck.k9 metadata
Commit the changes. Message: "Version $versionName"
Run ./gradlew clean :app-k9mail:assembleRelease --no-build-cache --no-configuration-cache
Update an existing installation to make sure the app is signed with the proper key and runs on a real device.
adb install -r app-k9mail/build/outputs/apk/release/app-k9mail-release.apk
Tag as $versionName, e.g. 6.800
Copy app-k9mail/build/outputs/apk/release/app-k9mail-release.apk as k9-${versionName}.apk to Google Drive (MZLA
Team > K9 > APKs)
Update gh-pages branch with the new change log. Create a new file if it's the first stable release in a series.
Push maintenance branch
Push tags
Push gh-pages branch
Fetch the latest changes from the fdroiddata repository.
Switch to a new branch in your copy of the fdroiddata repository.
Edit metadata/com.fsck.k9.yml to create a new entry for the version you want to release. Usually it's copy & paste
of the previous entry and adjusting versionName, versionCode, and commit (use the tag name).
Change CurrentVersion and CurrentVersionCode to the new values, making this the new stable/recommended build.
Example:
- versionName: "${versionName}"
versionCode: ${versionCode}
commit: "${tagName}"
subdir: app-k9mail
gradle:
- yes
scandelete:
- build-plugin/build
Commit the changes. Message: "Update K-9 Mail to $newVersionName"
Run fdroid build --latest com.fsck.k9 to build the project using F-Droid's toolchain.
Push the changes to your fork of the fdroiddata repository.
Open a merge request on Gitlab. (The message from the server after the push in the previous step should contain a URL)
Select the App update template and fill it out.
Create merge request and the F-Droid team will do the rest.
app-k9mail/fastlane/metadata/android/en-US/changelogs/${versionCode}.txt)If the app doesn't show up in the F-Droid client:
com.fsck.k9.