Merge Day Automation
Deprecated
With monthly releases coming, see Merge Duty for current tasks. This file is kept for historical purposes.
Overview
Merge day happens at 4-week intervals (most of the time), and follows the Firefox Rapid Release schedule. This document only covers merge activities, not the related releases that happen on the same day.
On Merge day:
- Communication about the merges
- Merge comm-central to comm-beta
- Tag and bump comm-central versions
- Update ShipIt nightly version
Communication
Send emails to both thunderbird-drivers and tb-sheriffs list with information about the merge and status updates. Templates are here.
Steps
Make sure you are logged into Treeherder. You will need to have "thunderbird-releng" permissions, which are set in Taskcluster.
Close the comm-central
and comm-beta
trees in
TreeStatus.
comm-central -> comm-beta
- In Treeherder, select the comm-central repository
- Select the Decision task of the latest push
- Click the down arrow in the top right corner and select "Custom push action..."
- Choose "merge-automation"
- Update the payload & trigger (note that with
force-dry-run
set totrue
, the value ofpush
is ignored)
behavior: comm-central-to-beta force-dry-run: true push: true
If the dry-run is successful, run it again, this time setting force-dry-run
to
false
.
Update .gecko_rev.yml
The automation will pin to mozilla-beta@default. This will build. A specific revision needs to be pinned manually before releasing beta 1.
Suite version
The automation will change 2.XXa1 to 2.XXb1.
Bump Daily version
- Select comm-central repository in Treeherder and select the "merge-automation" custom action as above
- Update the payload & trigger
behavior: comm-bump-central force-dry-run: true push: true
If the dry-run is successful, run again without force-dry-run
.
Note regarding suite version bump: This is now handled by automation so no manual step is necessary.
Update Ship-It
Mozilla's Ship-It tool must be updated with the new Daily version number.
Changes
- Modify
api/src/shipit_api/common/config.py
and update theLATEST_THUNDERBIRD_NIGHTLY_VERSION
variable to be the new version of comm-central. - Create a pull request with the changes. Example
- In the pull request, @mention one of the Ship-It code owners to make sure the request is seen. You can also say something in #releaseduty on Matrix.
If you are not familiar with Github's Fork & Pull workflow model, see here for an introduction.
Check for Firefox Beta tag
The build tag for the corresponding Firefox beta release may or may not have
been set yet. Check mozilla-beta
for a tag like FIREFOX_major_0b1_BUILD1
where "major" is the new beta version.
If there is a tag, on a local "comm-beta" checkout:
- run pin_for_release.py mozilla-beta
.
- hg amend -e
and add "CLOSED TREE" to the end of the first line of the
commit message.
- ex: No bug - Pin mozilla-beta (FIREFOX_106_0b1_BUILD1/4f39db81f6e). r=release a=rjl CLOSED TREE
- Push to comm-beta.
If the Firefox BUILD1
tag has not been set, proceed with opening the trees
and the conclusion email, but remember to run pin_for_release.py
prior to
promoting the Thunderbird Beta.
Open Trees & Conclusion Email
If the builds running on comm-central
and comm-beta
look good, re-open
the trees. If there's a build or decision task failure, handle that before
opening the trees in TreeStatus.
Use the Conclusion Email template to notify thunderbird-drivers that the work is complete.
Test runs with a real push
You can push to try-comm-central
with to-repo/from-repo to test that pushing
actually works, though it really shouldn't break now that it's working.
to-repo, from-repo, to-branch, from-branch?
It's kind of confusing...
- to-branch and from-branch are Firefoxtree "branch" names, and correspond to "branches" of code for release purposes
- to-repo in a merge context is the URL of the destination repository you want to merge into. So for comm-central-to-beta, that's the full URL (https) of comm-beta on hg.m.o.
- from-repo then is the repo URL you are merging into to-repo. So, comm-central's URL.
-
VERY IMPORTANT Merge day work will push to both
to-repo
andfrom-repo
. So if you are testing push stuff, make sure to set both totry-comm-central
's URL.