Release Checklist
These are instructions for preparing a release branch for Firefox Android and starting the next Nightly development cycle.
[Release Engineering / Release Management] Beta release branch creation & updates
This part is covered by the Release Engineering and Release Management teams. The dev team should not perform these steps.
Release Management emails the release-drivers list to begin merge day activities. For example,
Please merge mozilla-central to mozilla-beta, bump central to 123.
A message will also be sent to the #releaseduty Matrix channel.The Release Engineering engineer on duty (“relduty”) triggers the Taskcluster merge day hooks. The hooks automate the following tasks:
Migrating tip of mozilla-central to mozilla-beta
Updating version.txt on mozilla-central for the new Nightly version
Updating version.txt on mozilla-beta to change the version string from
[beta_version].0a1
to[beta_version].0b1
When the merge day tasks are completed, relduty will respond to the release-drivers thread and #releaseduty channel that merges are completed. This also serves as notification to the dev team that they can start the new Nightly development cycle per the steps given in the next section ⬇️
-
Set
VERSION
to[major-version].0
Set
CHANNEL
toApplicationServicesChannel.RELEASE
--- a/mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt +++ b/mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt -val VERSION = "121.20231118050255" -val CHANNEL = ApplicationServicesChannel.NIGHTLY +val VERSION = "121.0" +val CHANNEL = ApplicationServicesChannel.RELEASE
Create a commit named
Switch to Application Services Release
. (Note: application-services releases directly after the nightly cycle, there’s no beta cycle).
Once all of the above commits have landed, create a new
Firefox Android (Android-Components, Fenix, Focus)
release in Ship-It and continue with the release checklist per normal practice.
[Dev team] Starting the next Nightly development cycle
Please handle this part once Release Management gives you the go.
Now that we made the Beta cut, we can remove all the unused strings marked moz:removedIn <= [EXPIRED_STRING_VERSION]
.
If CURRENT_VERSION
is the nightly version number before the Beta cut, then EXPIRED_STRING_VERSION = CURRENT_VERSION - 2
.
It corresponds to the RELEASE_VERSION
number before the release of the new version.
We will also want to bump the Android Component’s changelog.md with the new Nightly development section.
Wait for greenlight coming from Release Engineering (see #3 above). You can subscribe to the release-drivers mailing list and look for an email with subjet: “Merge complete: mozilla-central to mozilla-beta (new release cycle)”. (direct link here)
File a Bugzilla issue named “Start the Nightly
[nightly_version]
development cycle”. (Example here)Run
./mobile/android/beta-cut.py BUG_ID
, withBUG_ID
being the id of the bug you created at step 1. This will:Update the changelog.md
Search and remove all strings marked
moz:removedIn="[EXPIRED_STRING_VERSION]"
across Fenix, Focus and Android Components, limit changes only tovalues/strings.xml
(the localizedstrings.xml
should not be changed).Create a commit using the BUG_ID you provided, and describing all the changes that were applied.
Add SERP telemetry json to the search-telemetry-v2.json, copying the content from the desktop telemetry dump located at desktop-search-telemetry-v2.json
Please read carefully the output of the script and follow the instructions it provides. More specifically, you will need to:
Remove the remaining uses of the removed strings and amend the commit, if the output shows remaining uses of removed strings. (⚠️ This output is purely indicative and might show false positives, see more details bellow)
Review the changes and make sure they are correct (Some header comments might become useless after the strings removal)
Submit the patch and push to
try
Please also check if the strings that were removed are used in Reference Browser, and open a PR to remove them if it is the case.
More details on removing remaining uses of the removed strings:
beta-cut.py
will try to show you potential remaining usages of the removed strings, but keep in mind that it is purely indicative and might show false positives. Please check if they are legitimate before removing the corresponding uses.
For example, if the string xyz
was removed from Fenix, but another xyz
string exists in Android Components, the output will suggest to remove the uses of xyz
in Android Components although they shouldn’t be removed.
Ask for Help
Issues related to releases
#releaseduty
on ElementTopics about CI (and the way we use Taskcluster)
#Firefox CI
on ElementBreakage in PRs due to Gradle issues, usage of
beta-cut.py
or GV upgrade problems#mobile-android-team
on Slack