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, there are a few more steps.

  1. temporarily remove the iw/in links: find app/src/main/res/ -type l -delete
  2. In Android Studio, go to Analyze -> Inspect Code
  3. After running on the whole project, go to Android Lint: Performance, and click on Unused Resources, then click the Remove All Unused Resources button. Only commit changes to strings.xml, not styles.xml or other files.
  4. Then it is time to create 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 removed from master, then Weblate will sync with that, and remove them there as well.

fdroidserver

  1. Make sure its passing the tests on Ubuntu/trusty and OSX
  2. pull in latest commits from Weblate into a local branch called weblate
  3. rebase the weblate branch on the latest commits in master of https://gitlab.com/fdroid/fdroidserver 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/fdroidserver/#repository
  7. set version='' in setup.py
  8. add git signed tag named after the exact version name (no preceeding v), using the exact same string as version=''
  9. upload to pypi.python.org using python3 setup.py release
  10. update Debian package
  11. 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/privileged-extension 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

fdroid-website

  1. pull in latest commits from Weblate into a local branch called weblate
  2. run ./tools/check-format-strings.py, ./tools/check-page-links.py, and ./tools/remove-unused-strings.py and commit changes
  3. rebase the weblate branch on the latest commits in master of https://gitlab.com/fdroid/fdroid-website 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/website/#repository
  7. add git signed tag named after the exact version name (no preceeding v), using the exact same string as version=''

jekyll-fdroid

  1. Make sure all the tests are passing
  2. set s.version and s.date in jekyll-fdroid.gemspec
  3. Make signed tag matching version number (no preceeding v)
  4. Update fdroid-website to use this release by setting both revision: and the version number in specs: jekyll-fdroid (1.0.1) in Gemfile.lock