Closed Bug 1797702 Opened 2 years ago Closed 2 years ago

[meta] firefox-android: Migrate android-components to the new android monorepo

Categories

(Release Engineering :: General, task)

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: jlorenzo, Assigned: jlorenzo)

References

Details

(Keywords: meta)

The first major step to accomplish bug 1782733 is to migrate android-components[1] to the new android monorepo[2]. I'm filing this meta-bug to track what we did for this specific step. I will create similar meta-bugs for focus-android and fenix.

[1] https://github.com/mozilla-mobile/android-components/
[2] https://github.com/mozilla-mobile/firefox-android

Depends on: 1786777
Depends on: 1786780
Depends on: 1786787
Depends on: 1786793
Depends on: 1796600
Depends on: 1783690
Depends on: 1790782
Depends on: 1782736
Depends on: 1784232
Depends on: 1786535
Depends on: 1786783
Depends on: 1786785
Depends on: 1789931
Blocks: 1797704
Depends on: 1798026
See Also: → 1798650
Depends on: 1798687
Assignee: nobody → jlorenzo

3 days ago, we migrated the android-components repo to firefox-android! Things went pretty well! First of all, let's close this bug.

Then, here's a summary of what we originally planned, what changed on the day of the migration, and what we forgot to do. I'm writing this down so that we forget fewer things when we migrate focus-android to the monorepo.

What we originally planned

As far as I can tell, all step below will have to be repeated 🔁 when we migrate focus.

  1. 🔁 Deactivate GV bumps so that we can immediately build and ship new nightlies/beta/releases. Done in bug 1798026.
  2. 🔁 Archive the old repo. This makes the repo read-only for everything (code, PRs, issues, etc).
  3. 🔁 Sync the ac-prep branch one last time. Check the git history looks good. I originally planned to check whether CI still behaves correctly but I skipped that because of the next step.
  4. 🔁 Merge ac-prep to main. Check CI still behaves correctly.
  5. 🔁 Bump geckoview. Make sure mergify handles that automatically.
  6. 🔁 Trigger an android-components nightly build.
  7. 🔁 Make sure the right teams have the same accesses as they used to.
  8. 🔁 Make glean monitor the new monorepo.
  9. 🔁 Communicate the main branch is ready to be used. Developers can open PRs against main.
  10. 🔁 Migrate release_v107 (current beta) then release_v106 (current release) branches
  11. 🔁 Trigger a-c releases. Sync up with the release management team.
  12. 🔁 Communicate the release branches are ready to be used.
  13. 🔁 Synchronize l10n strings from the monorepo to android-l10n. Synchronize the other way around. Luckily we have strings to be synchronized both way.

What we figured out on the migration day

These are the step we realized were missing during the migration. Steps with the repeat 🔁 emoji have to be done again when we migrate focus.

A. Add branch protection rules
B. Add issue/PR labels
C. Change the pattern of the release branch names. This was done in relbot#91 and in these 2 commits (1ae6644 and 1b9bb8d - I actually put the wrong bug number in there).
D. 🔁 Figure out a way to make the release branch share as many commits as possible with the main one. This is something the current script doesn't do because we realized we must migrate these branches just a business day before the actual migration. Details are in [bug 1798878]
E. Fix the errors caused by point D. being manual.
F. Fix shipit now being able to find the right hook. That's because ci-admin doesn't monitor release branches. Thus, we had to make .taskcluster.yml identical between main and release branches.
G. 🔁 Not push git tags. Originally the sync-ac.sh script converted tags from the old repo. After thinking more about it. I don't think it's a good idea after all. Here's the rationale:

  • we will keep the old android-compoenents repo around because all PRs and open issues will remain there
  • we actually shipped these old versions (tags) from that repo, so if we tag the new one, folks may be confused because they won't see any Taskcluster task nor Github Action jobs
  • we only migrated the main,release_v106andrelease_v107` branches and most tags were actually done on release branches, so most of these tags will turn out to be invalid.

What we forgot after we called the migration as done

Steps with the repeat 🔁 emoji have to be done again when we migrate focus.

i. We didn't test the component selector in PRs which led this follow-up fix, the next day.
ii. 🔁 A nightly was shipped off of the old repo. This led to this other fix, the next day. We should deactivate that at the same time as the GV bump deactivation.
iii. 🔁 Communicate about the new Taskcluster hook location. In this instance we migrated the nightly hook but Fenix has some other hooks to move too.
iv. 🔁 People weren't able to trigger the new hook anymore. Fixed in bug 1798687. Next time, we should do it before the migration is done.
v. A local script used by developers needed to be adjusted for the new directory layout. Fix

Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Summary: firefox-android: Migrate android-components to the new android monorepo → [meta] firefox-android: Migrate android-components to the new android monorepo
You need to log in before you can comment on or make changes to this bug.