0
0
Fork 0
mirror of https://codeberg.org/comaps/comaps.git synced 2026-04-19 06:22:17 +00:00
20 Release process
riadok edited this page 2026-03-17 09:23:05 +01:00

Prepare release

2 days before the release

  • merge all bigger PRs which should be released
  • raise release notes PR and ask for translations
  • update Wiki data (when possible also download fresh dumps)
  • if current subways data is not very good, then switch to recent known good data
  • start maps generation
  • update Google Play metadata (descriptions, screenshots..)

Once maps generation is finished

  • smoke test map data for World and some regions (search, routing, cross-mwm routing, isolines, POIs selection...)
  • upload new maps to CDN (re-run the upload job at least 2 times to also delete old excessive maps)
  • merge a "[planet] Update map data to xxxxxx" PR with new countries.txt
  • merge a meta-php PR with new maps data version

Shortly before release

  • merge latest translations from Weblate
  • merge (translated) release notes PR
  • merge Flathub release notes PR
    • This PR should change the packaging/app.comaps.comaps.metainfo.xml with new release notes relevant for desktop build. The new link for more details should be <url type="details">https://comaps.app/latest/</url>. Also edit the old link to point to the specific release notes.

Android release

Prepare and build

  • create a release branch e.g. release/2026.03.05

    • add a [fdroid] Release version 2026.03.05-8 commit
    • with a change to android/app/src/fdroid/play/version.yaml
    • take the version number from tools/unix/version.sh +1
    • e.g. with an added version bump commit it should match script's output
  • tag the new release and push the tag to Codeberg

    • the tag format is v2026.03.05-8 (not the old 2026.03.05-8-android!)
  • push the release branch and tag to the Codeberg repo

    • F-Droid will pickup the new tag automatically (happens once a day)
  • make sure symbols, drules, categories.txt are regenerated

  • make sure World*.mwm is of the right (updated) version

  • build Google release bundle (tools/unix/link_gplay_relnotes.sh and then ./gradlew bundleGoogleRelease) - check the keys are Google upload / test (yes, they're the same at test keys)!

  • upload to GP and submit for a review either manually or via ./gradlew publishGoogleReleaseBundle

  • build Codeberg release (./gradlew -Parm32 -Parm64 assembleWebRelease i.e. no x86) - check the keys are prod Codeberg / main!

  • create a Codeberg release from the tag, upload the apk, add release notes

  • announce the release in TG channel (attach the release apk)

iOS release

Shortly before the release day

  • Add short iOS release notes to releases document
    • They should consist of the most important things in general, that will be new in this version
    • Those will be used for the App Store
    • They will be translated in a pull request together with the short Android release notes
  • Add long iOS release notes to releases document
    • They should consist only of iOS-specific things, that will be new in this version
    • Include credits to the persons, who added those new things
  • Add release with version number in App Store Connect
    • The version number should be the planned release date in yyyy.MM.dd format (like 2025.08.30)
  • Update metadata in App Store Connect
    • Only include languages for which the App Store metadata has been completely translated

On release day

  • Wait for the Android release to be prepared
  • Pull the latest version form the repository
    • The same last commit like for the Android release should be used
  • Edit versions and build number of the CoMaps and CoMapsWidgetExtension targets in Xcode
    • Use the same versions and build number of the Android release
  • Select the build target Any iOS Device in Xcode
  • Clean the build folder in Xcode
    • This can be done via Product / Clean Build Folder... in the menubar
  • Manually run the configure script
    • ./configure.sh
  • Manually regenerate the styles
    • ./tools/unix/generate_styles.sh
  • Create the application archive in Xcode
    • This can be done via Product / Archive in the menubar
  • Close Xcode completely
  • Open Xcode again and got to the Xcode organizer
    • This can be done via Window / Organizer in the menubar
  • Upload application to the App Store via the Xcode organizer
    • Choose the freshly created application archive, press Distribute App, select App Store Connect and follow the steps until the app is successfully uploaded
  • Adjust the version in App Store Connect, if necessary
    • It should be the same version used in Xcode and for the Android release
  • Add the short release notes in App Store Connect
    • The translations can be found in a translation pull request specific for that version
    • For the languages, which are fully translated for the App Store, but are missing translated release notes, use the English release notes
  • Add the build to the release in App Store Connect
    • It might take a few minutes for the uploaded build to actually show up
  • Submit the release to review
    • Don't forget the actual submission step after clicking on Add for Review
  • Submit the same build to TestFlight review
  • Wait for Apple approving the release and TestFlight build

After Apple's release approval

  • Also release the build on TestFlight
  • Notify everybody in the Zulip topic for that release about the App Store availability

Trigger Flathub build

In the Flathub repository create a pull request changing the 8 parts in [[[]]] to their new correct values.

- type: git
  url: https://codeberg.org/comaps/comaps
  commit: [[[4707a028f993036292233e9dc731c88a3a22fe9e]]]
  tag: [[[v2026.03.09-18]]]
- type: file
  url: https://cdn-fi-1.comaps.app/maps/[[[260307]]]/World.mwm
  sha256: [[[3a8cea0d2138b543f537acb7c57312dd9a8606e466e4e527efb6bdaa4b23c26b]]]
  dest: data/world_mwm/[[[260307]]]/
- type: file
  url: https://cdn-fi-1.comaps.app/maps/[[[260307]]]/WorldCoasts.mwm
  sha256: [[[681735db6f0efb3f532a66e9a4a2ee9242373c6a1a4509476f0457e058d6aff4]]]
  dest: data/world_mwm/[[[260307]]]/

Creating a pull request automaticaly triggers test build. After it is done (roughly 20 minutes), check the result package and if everything look correct merge the PR. If needed it is possible to apply patches to the flatpak build, for an example see history of the git repo or Flatpak documentation.

Shortly after the release

Distribute to the French National library (not every release - once in a while)

  • Build a google apk (with google flavor / web keys and only arm32/64 arches) for French National library
  • Upload it to their sftp

Update json for TagInfo

  • Run script to generate file
    • python tools/python/generate_taginfo.py
  • Raise PR to add updated file
    • data/taginfo.json

Announcements

  • Create a graphic banner
  • Raise and merge a website PR with release announcement post
  • Create a post in social media
    • Reddit
    • Mastodon
    • etc.