Release Process

For each piece of the F-Droid ecosystem, there is a specific release process. They generally follow the same patterns, but all have unique steps. The official signing keys are listed in Release Channels and Signing Keys.

fdroidclient

  1. pull in latest commits from Weblate into a local branch called weblate
  2. run ./tools/check-format-strings.py and ./tools/remove-unused-and-blank-translations.py and commit changes
  3. rebase the weblate branch on the latest commits in master of https://gitlab.com/fdroid/fdroidclient and fix any conflicts
  4. push local weblate branch to your fork create a merge request, and tag it with the localization label
  5. make sure all tests pass before merging, including all android-10 emulator tests
  6. once the weblate branch is merged, reset the git repo in https://hosted.weblate.org/projects/f-droid/f-droid/#repository
  7. set versionCode in app/build.gradle
  8. add new entry in metadata/en-US/changelogs/
  9. copy that new entry to CHANGELOG.md
  10. add git signed tag named after the exact version name (no preceeding v)
  11. add new Build: entry to metadata file

major release

If it is a major release, then a new stable branch (e.g. stable-v1.0 or stable-v1.1) should be created first. The incomplete translations should be removed using ./tools/trim-incomplete-translations-for-release.py. This has to happen in the stable branch only, since it will remove the incomplete translations. If the incomplete translations are remove from master, then Weblate will sync with that, and remove them there as well.

fdroidserver

  1. pull in latest commits from Weblate into a local branch called weblate
  2. rebase the weblate branch on the latest commits in master of https://gitlab.com/fdroid/fdroidclient and fix any conflicts
  3. push local weblate branch to your fork create a merge request, and tag it with the localization label
  4. make sure all tests pass before merging
  5. once the weblate branch is merged, reset the git repo in https://hosted.weblate.org/projects/f-droid/fdroidserver/#repository
  6. set version='' in setup.py
  7. add git signed tag named after the exact version name (no preceeding v), using the exact same string as version=''
  8. upload to pypi.python.org using python3 setup.py sdist upload --sign
  9. update Debian package
  10. upload to F-Droid PPA

privileged-extension

  1. pull in latest commits from Weblate into a local branch called weblate
  2. run ./tools/check-format-strings.py and ./tools/remove-unused-and-blank-translations.py and commit changes
  3. rebase the weblate branch on the latest commits in master of https://gitlab.com/fdroid/fdroidclient and fix any conflicts
  4. push local weblate branch to your fork create a merge request, and tag it with the localization label
  5. make sure all tests pass before merging
  6. once the weblate branch is merged, reset the git repo in https://hosted.weblate.org/projects/f-droid/privileged-extension/#repository
  7. set versionCode in app/src/main/AndroidManifest.xml
  8. add new entry in metadata/en-US/changelogs/
  9. copy that new entry to CHANGELOG.md
  10. add git signed tag named after the exact version name (no preceeding v)
  11. If the OTA update ZIP should be updated, add new Build: entry to metadata file
  12. The APK should auto-update based on the signing tag. Double-check that in that metadata file