Bug 1879146 - Move mozac.org docs back into the android-components folder. r=owlish...
[gecko.git] / mobile / android / android-components / docs / contribute / release_checklist.md
blob6d50615d32fa34c774f35ff7ae7f95066e4c4544
1 ---
2 layout: page
3 title: Release checklist
4 permalink: /contributing/release-checklist
5 ---
7 These are instructions for preparing a release branch for Firefox Android and starting the next Nightly development cycle.
9 ## [Release Management] Creating a new Beta release branch
11 **This part is 100% covered by the Release Management team. The dev team should not perform these steps.**
13 1. Create a branch name with the format `releases_v[beta_version]` off of the `main` branch (for example, `releases_v109`) through the GitHub UI.
14 `[beta_version]` should follow the Firefox Beta release number. See [Firefox Release Calendar](https://whattrainisitnow.com/calendar/). The following below should be performed in this new beta release branch:
15     - In [version.txt](https://github.com/mozilla-mobile/firefox-android/blob/main/version.txt), update the version from `[beta_version].0a1` to `[beta_version].0b1`. Create a commit named `Set version to [beta_version].0b1` for this change. This change can either be directly committed to the `releases_v[beta_version]` branch or a pull request can be created against it and then merged.
16         ```diff
17         diff --git a/version.txt b/version.txt
18         --- a/version.txt
19         +++ b/version.txt
20         @@ -1 +1 @@
21         -109.0a1
22         +109.0b1
23         ```
24     - In [ApplicationServices.kt](https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt):
25       - Set `CHANNEL` to `ApplicationServicesChannel.RELEASE`
26       - Set `VERSION` to `[major-version].0`
28       ```diff
29       diff --git a/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt b/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt
30       index f64b26d7a1..72574ab057 100644
31       --- a/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt
32       +++ b/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt
33       @@ -3,8 +3,8 @@
34         * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
36       -// These lines are generated by android-components/automation/application-services-nightly-bump.py
37       -val VERSION = "114.20230420185101"
38       -val CHANNEL = ApplicationServicesChannel.NIGHTLY
39       +val VERSION = "114.0"
40       +val CHANNEL = ApplicationServicesChannel.RELEASE
41       ```
42       - Create a commit named `Switch to Application Services Release`. (Note: application-services releases directly after the nightly cycle, there's no beta cycle).
43     - In [Gecko.kt](https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/plugins/dependencies/src/main/java/Gecko.kt), set the `channel` to `GeckoChannel.BETA`. Create a commit named `Switch to GeckoView Beta` for this change. This change can either be directly committed to the `releases_v[beta_version]` branch or a pull request can be created against it and then merged. Once landed, it is expected that this change will temporarily break builds on the branch. Step #4 will fix them.
44         ```diff
45         diff --git a/android-components/plugins/dependencies/src/main/java/Gecko.kt b/android-components/plugins/dependencies/src/main/java/Gecko.kt
46         --- a/android-components/plugins/dependencies/src/main/java/Gecko.kt
47         +++ b/android-components/plugins/dependencies/src/main/java/Gecko.kt
48         @@ -14,7 +14,7 @@ object Gecko {
49             /**
50               * GeckoView channel
51               */
52         -    val channel = GeckoChannel.NIGHTLY
53         +    val channel = GeckoChannel.BETA
54         }
56         /**
57         ```
58 2. In `main` [version.txt](https://github.com/mozilla-mobile/firefox-android/blob/main/version.txt), update the version from `[previous_nightly_version].0a1` to `[nightly_version].0a1`. Create a commit named `Set version to [nightly_version].0a1` for this change. This change can either be directly committed to the `main` branch or a pull request can be created against it and then merged.
59     ```diff
60     diff --git a/version.txt b/version.txt
61     --- a/version.txt
62     +++ b/version.txt
63     @@ -1 +1 @@
64     -110.0a1
65     +111.0a1
66     ```
67 3. Notify the dev team that they can start the new Nightly development cycle per the steps given in the next section ⬇️
68 4. The Github Action will automatically bump the GeckoView version once the new Beta build is created and uploaded to Maven, as shown in [#324](https://github.com/mozilla-mobile/firefox-android/pull/324) for example.
69 5. Once all of the above commits have landed, create a new `Firefox Android (Android-Components, Fenix, Focus)` release in [Ship-It](https://shipit.mozilla-releng.net/) and continue with the release checklist per normal practice.
71 ## [Dev team] Starting the next Nightly development cycle
73 **Please handle this part once Release Management gives you the go.**
75 Now that we made the Beta cut, we can remove all the unused strings marked moz:removedIn <= `[release_version subtract 1]`. `[release_version]` should follow the Firefox Release version. See [Firefox Release Calendar](https://wiki.mozilla.org/Release_Management/Calendar) for the current Release version. We will also want to bump the Android Component's [changelog.md](https://github.com/mozilla-mobile/firefox-android/blob/main/docs/changelog.md) with the new Nightly development section.
77 0. Wait for greenlight coming from Release Management.
78 1. File a Bugzilla issue named "Start the Nightly `[nightly_version]` development cycle".
79 2. Search and remove all strings marked `moz:removedIn="[release_version subtract 1]"` across Fenix, Focus and Android Components. Please avoid removing strings in the localized `strings.xml` and limit changes only to `values/strings.xml`.
80 3. Add the next Nightly in development section in the [changelog.md](https://github.com/mozilla-mobile/firefox-android/blob/main/docs/changelog.md).:
81   - Add a new `[nightly_version].0 (In Development)` section for the next Nightly version with the next commit and milestone numbers.
82   - Update the `[beta_version].0` section, update the links to `release_v[beta_version]` and specifying the correct commit ranges. This should equate to changing `/blob/main/` to `/blob/releases_v[beta_version]/`.
84       ```diff
85       diff --git a/docs/changelog.md b/docs/changelog.md
86       index 9e95d0e2adc..d901ed38cdd 100644
87       --- a/docs/changelog.md
88       +++ b/docs/changelog.md
89       @@ -4,12 +4,18 @@ title: Changelog
90       permalink: /changelog/
91       ---
93       -# 114.0 (In Development)
94       -* [Commits](https://github.com/mozilla-mobile/firefox-android/compare/releases_v113..main)
95       +# 115.0 (In Development)
96       +* [Commits](https://github.com/mozilla-mobile/firefox-android/compare/releases_v114..main)
97       * [Dependencies](https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/plugins/dependencies/src/main/java/DependenciesPlugin.kt)
98       * [Gecko](https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/plugins/dependencies/src/main/java/Gecko.kt)
99       * [Configuration](https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/.config.yml)
101       +# 114.0
102       +* [Commits](https://github.com/mozilla-mobile/firefox-android/compare/releases_v113..releases_v114)
103       +* [Dependencies](https://github.com/mozilla-mobile/firefox-android/blob/releases_v114/android-components/plugins/dependencies/src/main/java/DependenciesPlugin.kt)
104       +* [Gecko](https://github.com/mozilla-mobile/firefox-android/blob/releases_v114/android-components/plugins/dependencies/src/main/java/Gecko.kt)
105       +* [Configuration](https://github.com/mozilla-mobile/firefox-android/blob/releases_v114/android-components/.config.yml)
106       +
107       * * **browser-state**
108         * 🌟 Added `DownloadState`.`openInApp` to indicate whether or not the file associated with the download should be opened in a third party app after downloaded successfully, for more information see [bug 1829371](https://bugzilla.mozilla.org/show_bug.cgi?id=1829371) and [bug 1829372](https://bugzilla.mozilla.org/show_bug.cgi?id=1829372).
109       ```
111 3. Create a pull request with this commit and land.
113 ### [Dev Team] Renew telemetry
115 After the Beta cut, another task is to remove all soon to expire telemetry probes. What we're looking for is to create a list of telemetry that will expire in `[nightly_version add 1]`.  See [Firefox Release Calendar](https://whattrainisitnow.com/calendar/) for the current Release version.  There is a script that will help with finding these soon to expire telemetry.
117 1. Use the helper in tools folder `python3 data_renewal_generate.py [nightly_version add 1]` to detected and generate files that will help create the following files:
118     - `[nightly_version add 1]`_expiry_list.csv
119 2. File an issue for removing expired telemetry to address the expired metrics. See [Bug 1881336](https://bugzilla.mozilla.org/show_bug.cgi?id=1881336) for an example.
120 3. Remove the expired metrics.  See [example](https://github.com/mozilla-mobile/firefox-android/pull/5700).
122 ### [Dev Team] Add SERP Telemetry json dump
124 After the beta cut, another task is to add SERP telemetry json to the [search-telemetry-v2.json](https://github.com/mozilla-mobile/firefox-android/blob/main/android-components/components/feature/search/src/main/assets/search/search_telemetry_v2.json)
125 The dump is to be fetched from the desktop telemetry dump located at [desktop-search-telemetry-v2.json](https://searchfox.org/mozilla-central/source/services/settings/dumps/main/search-telemetry-v2.json)
127 ### Ask for Help
129 - Issues related to releases `#releaseduty` on Element
130 - Topics about CI (and the way we use Taskcluster) `#Firefox CI` on Element
131 - Breakage in PRs due to Gradle issues or GV upgrade problems `#mobile-android-team` on Slack