Skip to content

Commit 3e46fdc

Browse files
authored
Merge pull request #257 from fork-maintainers/beta-sync
Sync with Mozilla Firefox v84.1.2
2 parents 9ceaab1 + b707adb commit 3e46fdc

File tree

331 files changed

+10753
-4508
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

331 files changed

+10753
-4508
lines changed

.github/CODEOWNERS

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,17 @@
4242
# Therefore, we make the Perfomance team code owners of this file.
4343
/.github/CODEOWNERS @mozilla-mobile/Performance
4444

45-
/app/src/*/java/org/mozilla/fenix/perf/** @mozilla-mobile/Performance
45+
# Own /perf/ src directories which typically includes perf code architecture
46+
# or code that monitors for perf regressions. This is our main way to own code
47+
# because it's simpler and less fragile than listing many specific files to own.
48+
/**/src/**/perf/** @mozilla-mobile/Performance
49+
50+
# Possible regressions throughout the app
4651
*.pro @mozilla-mobile/Performance
4752
*proguard* @mozilla-mobile/Performance
4853

4954
# Possible startup regressions
5055
*Application.kt @mozilla-mobile/Performance
51-
*StrictMode*kt @mozilla-mobile/Performance
52-
*ConstraintLayoutPerfDetector.kt @mozilla-mobile/Performance
5356

5457
# We want to be aware of new features behind flags as well as features
5558
# about to be enabled.
Lines changed: 58 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,76 @@
11
## Overview ##
22

3-
| Monday | Tuesday | Wednesday | Thursday | Friday |
4-
|-----------------|---------------------------|------------------------------|----------------|-------------|
5-
| (Sprint 1 Start)| | | | |
6-
| | Hard code freeze for Beta | | | Code Freeze/Planning
7-
| Sprint 2 Start / Release to Beta / Release Production in Play Store 1% | QA Beta / Promote Release 25% | Promote Release 100% | | |
3+
Firefox for Android roughly follows the [Firefox Gecko release schedule](https://wiki.mozilla.org/Release_Management/Calendar#Calendars).
4+
This means we cut a beta at the end of every two sprints, with a full cycle (~4 weeks) of baking on Beta before going to release. Uplifts must be approved by Release Owner (st3fan).
5+
6+
The [Firefox for Android release schedule](https://docs.google.com/spreadsheets/d/1HotjliSCGOp2nTkfXrxv8qYcurNpkqLWBKbbId6ovTY/edit#gid=0) contains more details related to specific Mobile handoffs.
7+
8+
| Monday | Tuesday | Wednesday | Thursday | Friday |
9+
|-----------------|---------------------------|--------------------------------|-------------------|-----------------|
10+
| (week 1) | | (Y.2 sprint ended) |Sprint **X.1** starts | |
11+
| (week 2) | | | | |
12+
| (week 3) | | Cut **X.1-beta** 12PST | **X.1-beta** QA / Sprint X.2 starts ||
13+
| (week 4) | | | | |
14+
| (week 5) | | Uplift L10N to **X.1-beta** | Sprint Z.1 starts | |
15+
| (week 6) | Build X.1-RC with GV Prod for QA | | | |
16+
| (week 7) | Release X.1 - 5% | Release X.1 20% / Cut Z.1-beta | Release X.1 100% | |
817

918
### Requirements
10-
- Jira account
19+
- JIRA access
1120
- Bugzilla account
12-
- Google Play access (for reviewing crashes)
21+
- Sentry access
1322

1423
## Release Checklist
15-
There are two releases this covers: the current sprint that is going out to Beta, and the previous beta that is going to Production.
16-
We will refer to the beta release going out as the *current* sprint release.
24+
There are two releases this covers: the current sprint that is going out to Beta, and the previous Beta that is going to Production.
1725

18-
## Start of sprint [Monday, 1st week of sprint]
19-
- [ ] Create milestone for *upcoming* sprint release. (e.g. if you are doing releng for v2.2, create v2.3 milestone)
20-
- [ ] If the upcoming release is a *major* (x.0) release, create an issue in the *upcoming* milestone: "What's New Entry for [*upcoming* release]" to track work for the SUMO page and Google Play release notes, e.g., if the current release is 2.3 but the upcoming one will be 3.0, make a "What's New" issue for 3.0. Product will use this to remember to check in with SUMO.
21-
- [ ] [Create an issue](https://github.com/mozilla-mobile/fenix/issues/new?template=release_checklist.md&title=Releng+for+) in the *upcoming* milestone: "Releng for v[release]". Find an engineer who will handle the next releng task and assign them.
26+
## Start of Sprint X.1 [Thursday, 1st week of sprint]
27+
- [ ] [Create an issue](https://github.com/mozilla-mobile/fenix/issues/new?template=release_checklist.md&title=Releng+for+) "Releng for v[release]" to track the current sprint.
2228

23-
## Release Day [Monday, 3rd week] Beta & Production
24-
- [ ] Promote previous Beta to Release
25-
- [ ] Cherry-pick all merged [automated L10N string PRs](https://github.com/mozilla-mobile/fenix/pull/6156) to add newly translated strings and open a PR against branch that is going to release. (TODO is this safe?) This will require review.
26-
- [ ] Tag the latest released RC version additionally with the tag of the release (v1.0-RC2 -> v1.0) (This can be done as soon as there are no more release blockers, does not need to be on Release Day.)
27-
- [ ] **Verify that the commit hash of the new release matches the most recent RC.** This ensures that the correct version will be released
28-
- [ ] Create a GitHub release build `vX.X.X` (v2.3.0) with the previous Beta branch as the target.
29-
- [ ] Smoketest the signed build
30-
- [ ] Load a url
31-
- [ ] Set up sync
32-
- [ ] Delete browsing data
33-
- [ ] Upload the signed APK from the Taskcluster `signing-production` task to the [release page](https://github.com/mozilla-mobile/fenix/releases)
34-
- [ ] Create a release request in Bugzilla to release to 1%. You can clone [this issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1571967) and `need-info` someone from release management.
29+
## Sprint X.1 End [Wednesday, 2nd week] Cutting a Beta
3530
- [ ] Make a new Beta
36-
- [ ] Create a branch off of master (DO NOT PUSH YET) for the *current* milestone of format `releases/v2.3` (where 2.3 is the *current* milestone). After that, anything landing in master will be part of the next milestone.
37-
- [ ] On the new Beta branch, pin the AC version to the stable version ([example](https://github.com/mozilla-mobile/fenix/commit/e413da29f6a7a7d4a765817a9cd5687abbf27619)) with commit message "Issue #`<this releng issue>`: Pin to stable AC `<version>` for release v2.3" (replacing 2.3 with the version)
38-
- For each issue closed since the last release (run `kotlinc -script automation/releasetools/PrintMentionedIssuesAndPrs.kts` to get a list [see script for details] and paste it into the Releng issue):
39-
- [ ] Ensure it has the correct milestone.
40-
- [ ] Add `eng:qa:needed` flags on each issue that still needs it.
41-
- [ ] Go through the list of issues closed during this sprint in the Done column of the [Sprint Kanban](https://github.com/mozilla-mobile/fenix/projects/9) and make sure they all have the correct milestone.
31+
- [ ] Create a branch off of master (DO NOT PUSH YET) for the *current* milestone of format `releases/v85.0.0`. After that, anything landing in master will be part of the next release.
32+
- [ ] On the new Beta branch, pin the AC version to the stable version ([example](https://github.com/mozilla-mobile/fenix/commit/e413da29f6a7a7d4a765817a9cd5687abbf27619)) with commit message "Issue #`<this releng issue>`: Pin to stable AC `<version>` for release v85"
33+
- [ ] Update the title to include this AC version "Releng for v[release] with AC [version]"
4234
- Note: You will need code review to make changes to the release branch after this point, because it is a protected branch.
4335
- [ ] Push the branch.
4436

45-
- [ ] Create a GitHub pre-release build `vX.X.X-beta.1` (v2.3.0-beta.1) with the release branch as the target. This will kick off a build of the branch. You can see it in the mouseover of the CI badge of the branch in the commits view. Builds are found under `signing-*` task.
46-
- If you need to trigger a new RC build, you will need to draft and publish a new (pre-release) release. Editing an existing release and creating a new tag will not trigger a new RC build.
47-
48-
- [ ] Create a new PI (product integrity) request in Jira. You can clone [this issue](https://jira.mozilla.com/browse/PI-219).
49-
50-
### SUMO Verification [After Beta release]
51-
- [ ] If the *current* release is a major (x.0) release, review the SUMO article contents of the whats new / other sumo pages and make sure they are accurate with what is in this release. If not, escalate to Product Owner.
37+
- [ ] Create a GitHub pre-release [Release](https://github.com/mozilla-mobile/fenix/releases) with:
38+
- [ ] Tag of the format `vX.X.X-beta.1` (v85.0.0-beta.1)
39+
- [ ] The Target branch is the release branch (releases/v85.0.0)
40+
- [ ] For the description of the release, look at the [Jira boards](https://jira.mozilla.com/secure/RapidBoard.jspa?rapidView=299&projectKey=FNX&view=reporting&chart=sprintRetrospective&sprint=883) for the X.1 and previous Y.2 sprints and list the major features that were added. This will help with the release notes later on.
41+
- [ ] Click "Publish release". This will kick off a build of the branch. You can see it in the mouseover of the CI badge of the branch in the commits view. Builds are found under `signing-*` task.
42+
- If you need to trigger a new RC build, you **MUST** draft and publish a new (pre-release) release (optionally deleting both the release and the tag). Editing an existing release and creating a new tag will **not** trigger a new build.
43+
- [ ] Send an email to QA at mozilla-mobile-qa@softvision.com with a link to the Taskcluster build (subdirectory of the [Fenix CI](https://firefox-ci-tc.services.mozilla.com/tasks/index/mobile.v2.fenix.beta))
5244

53-
### During Beta Product Integrity (Beta Release until PI green signoff)
45+
### Bugfix uplifts / Beta Product Integrity (Beta Release until PI green signoff)
5446
- [ ] If bugs are considered release blocker then find someone to fix them on master and the milestone branch (cherry-pick / uplift)
55-
- [ ] If needed tag a new RC version (e.g. v1.0-RC2) and follow the submission checklist again.
47+
- [ ] Add the uplift request to the appropriate row in the [Uplifts document](https://docs.google.com/spreadsheets/d/1qIvHpcQ3BqJtlzV5T4M1MhbWVxkNiG-ToeYnWEBW4-I/edit#gid=0).
48+
- [ ] If needed tag a new beta version (e.g. v1.0-beta.2) and follow the submission checklist again.
49+
- [ ] Once there is GREEN QA signoff, file a [release management bugzilla for rollout](https://bugzilla.mozilla.org/show_bug.cgi?id=1664366)
50+
- [ ] Check Sentry each day for issues on [Firefox Beta](https://sentry.prod.mozaws.net/operations/firefox-beta/) and if nothing concerning, bump release in the bugzilla (5%, 20%, 100%)
5651

57-
### During Production Release Rollout [Tuesday, Wednesday following Monday Release Day]
58-
- [ ] Check Sentry for new crashes. File issues and triage.
59-
- [ ] Ask Relman in the bug if they see potential blockers on Google Play, and if not, request that they bump the release each day (25% Tu, 100% Wed)
52+
### Uplifting L10N strings to Beta [Wednesday, 2 weeks after sprint end]
53+
- [ ] Find the issue ([example](https://github.com/mozilla-mobile/fenix/issues/16381)) filed by L10N / delphine saying string are ready for uplift (it takes 2 weeks for localizers to prepare localization).
54+
- [ ] If there are new locales that are ready to be added to Release, add them to [l10n-release.toml](https://github.com/mozilla-mobile/fenix/blob/master/l10n-release.toml)
55+
- [ ] Run the [L10N uplift script](https://github.com/mozilla-mobile/fenix/blob/master/l10n-uplift.py) against the releases/vX.1 branch (releases/v85.0.0). There will likely be conflicts, but if you are confused, they should match the strings in [main/Nightly](https://github.com/mozilla-mobile/fenix/tree/master/app/src/main/res)
56+
- [ ] Once all conflicts are resolved, tag a new Beta to be released.
57+
- [ ] Notify delphine in the L10N issue that the strings have been uplifted, and string quarantine can be lifted
58+
59+
### Production Release Candidate [Tuesday, 3 weeks after X.1 Beta was cut]
60+
- [ ] In android-components: Create a dot release with the GeckoView Production release candidate.
61+
- [ ] Open a PR against the release branch (releases/v85.0.0) with the AC version bump "Pin to stable AC `<version>` for release v85`. You will need code review.
62+
- [ ] Create a GitHub pre-release [Release](https://github.com/mozilla-mobile/fenix/releases) with:
63+
- [ ] Tag of the format `vX.X.X-rc.1` (v85.0.0-rc.1)
64+
- [ ] The Target branch is the release branch (releases/v85.0.0)
65+
- [ ] For the description, copy the beta description
66+
- [ ] Send an email to QA at mozilla-mobile-qa@softvision.com with a link to the Taskcluster build (subdirectory of the [Fenix CI](https://firefox-ci-tc.services.mozilla.com/tasks/index/mobile.v2.fenix.release))
6067

61-
Major releases often need to be synchronized with other marketing activities (e.g. blog postings).
68+
### Production Release [Release day, from [release calendar](https://docs.google.com/spreadsheets/d/1HotjliSCGOp2nTkfXrxv8qYcurNpkqLWBKbbId6ovTY/edit#gid=0)]
69+
- [ ] Create a GitHub [Release](https://github.com/mozilla-mobile/fenix/releases) with:
70+
- [ ] Tag of the format `vX.1.X` (v85.1.0) (increment the minor version for new cuts)
71+
- [ ] The Target branch is the release branch (releases/v85.0.0)
72+
- [ ] For the description, copy the beta description
73+
- [ ] file Bugzilla ticket for [release manament](https://bugzilla.mozilla.org/show_bug.cgi?id=1672212)
6274

63-
## Room for improvement
64-
- [ ] Automate assigning milestones to closed issues (based on date, etc) #6199
65-
- [ ] Automate assignig `eng:qa:needed` to issues #6199
66-
- [ ] Automate verification that the commit hash matches the most recent RC
67-
- [ ] Builds generated as part of `signing-production` task look like `public/build/arm64-v8a/geckoBeta/target.apk`. This means that the dev must download, then rename them by hand. Could RM update these to generate `public/build/arm64-v8a/geckoBeta/firefox-preview-v3.0.0-rc.1-arm64-v8a.apk`, or similar?
75+
- [ ] Check Sentry for new crashes. File issues and triage.
76+
- [ ] Each day, bump the release rollout if nothing concerning (5%, 20%, 100%)

.github/workflows/update-ac.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# This Source Code Form is subject to the terms of the Mozilla Public
2+
# License, v. 2.0. If a copy of the MPL was not distributed with this
3+
# file, You can obtain one at http://mozilla.org/MPL/2.0/
4+
5+
name: "Update Android-Components"
6+
7+
on:
8+
schedule:
9+
- cron: '*/15 * * * *'
10+
11+
jobs:
12+
main:
13+
name: "Update Android-Components"
14+
runs-on: ubuntu-20.04
15+
steps:
16+
- name: "Update Android-Components"
17+
uses: mozilla-mobile/relbot@master
18+
if: github.repository == 'mozilla-mobile/fenix'
19+
with:
20+
project: fenix
21+
command: update-android-components
22+
env:
23+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.taskcluster.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ tasks:
88
- $let:
99
taskgraph:
1010
branch: taskgraph
11-
revision: 12992b0f984884ec2b0a7bdedc3b3ba467363eb4
11+
revision: 2b2622598df02bde211d8cedb334b7b22fb883a4
1212
trustDomain: mobile
1313
in:
1414
$let:
@@ -104,7 +104,7 @@ tasks:
104104
tasks_for in ["action", "cron"]
105105
|| (tasks_for == "github-pull-request" && pullRequestAction in ["opened", "reopened", "synchronize"])
106106
|| (tasks_for == "github-push" && head_branch[:10] != "refs/tags/") && (head_branch != "staging.tmp") && (head_branch != "trying.tmp")
107-
|| (tasks_for == "github-release" && releaseAction == "published")
107+
|| (tasks_for == "github-release" && releaseAction == "published" && (ownerEmail != "mozilla-release-automation-bot@users.noreply.github.com") && (ownerEmail != "mozilla-release-automation-bot-staging@users.noreply.github.com"))
108108
then:
109109
$let:
110110
level:
@@ -243,7 +243,7 @@ tasks:
243243
# Note: This task is built server side without the context or tooling that
244244
# exist in tree so we must hard code the hash
245245
image:
246-
mozillareleases/taskgraph:decision-mobile-6607973bc60e32323a541861cc5856cd6a0f51ea9fd664ef7d43bca8df53db47@sha256:8c471aacc469ea8e7bb4846c16efe086f7350a5cc1df570cc6c86b22895a2456
246+
mozillareleases/taskgraph:decision-mobile-682fbaa1ef17e70ddfe3457da3eaf8e776c4a20fe5bfbdbeba0641fd5bceae2a@sha256:bbb2613aaab79d17e590fbd78c072d0643be40fd1237195703f84280ecc3b302
247247

248248
maxRunTime: 1800
249249

@@ -261,12 +261,13 @@ tasks:
261261
$if: 'tasks_for == "action"'
262262
then: >
263263
PIP_IGNORE_INSTALLED=0 pip install --user /builds/worker/checkouts/taskgraph &&
264+
PIP_IGNORE_INSTALLED=0 pip install --user mozilla-version &&
264265
taskcluster/scripts/decision-install-sdk.sh &&
265266
ln -s /builds/worker/artifacts artifacts &&
266267
~/.local/bin/taskgraph action-callback
267268
else: >
268269
PIP_IGNORE_INSTALLED=0 pip install --user /builds/worker/checkouts/taskgraph &&
269-
PIP_IGNORE_INSTALLED=0 pip install --user arrow taskcluster pyyaml &&
270+
PIP_IGNORE_INSTALLED=0 pip install --user mozilla-version &&
270271
taskcluster/scripts/decision-install-sdk.sh &&
271272
ln -s /builds/worker/artifacts artifacts &&
272273
~/.local/bin/taskgraph decision

app/build.gradle

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ android {
3737
manifestPlaceholders = [
3838
"deepLinkScheme": deepLinkSchemeValue
3939
]
40+
41+
// Build flag for "Mozilla Online" variants. See `Config.isMozillaOnline`.
42+
if (project.hasProperty("mozillaOnline") || gradle.hasProperty("localProperties.mozillaOnline")) {
43+
buildConfigField "boolean", "MOZILLA_ONLINE", "true"
44+
} else {
45+
buildConfigField "boolean", "MOZILLA_ONLINE", "false"
46+
}
4047
}
4148

4249
def releaseTemplate = {
@@ -206,6 +213,17 @@ android {
206213

207214
testOptions {
208215
unitTests.returnDefaultValues = true
216+
217+
unitTests.all {
218+
// We keep running into memory issues when running our tests. With this config we
219+
// reserve more memory and also create a new process after every 80 test classes. This
220+
// is a band-aid solution and eventually we should try to find and fix the leaks
221+
// instead. :)
222+
maxParallelForks = 2
223+
forkEvery = 80
224+
maxHeapSize = "2048m"
225+
minHeapSize = "1024m"
226+
}
209227
}
210228
}
211229

0 commit comments

Comments
 (0)