Release Management/Merge Documentation: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (update categories)
 
(72 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:Merge Day documentation}}
{{RELEASE_MANAGEMENT_UPDATE_NEEDED}}
'''NOTE: For the next merge, we need to check for interface changes that are unpaired to UUID changes'''
'''NOTE: For the next merge, we need to check for interface changes that are unpaired to UUID changes'''
'''NOTE: Release Engineering is now performing all code merges. The work on updating the wiki and complete automation is in progress. Hence let both RelMan & RelEng know if you find anything missing here'''


=Archive of Past Merge Days=
=Archive of Past Merge Days=
Line 13: Line 18:


= Mozilla-Beta -> Mozilla-Release Merge =
= Mozilla-Beta -> Mozilla-Release Merge =
<font color="red" size="+2">'''For Release Engineering, this page has been superseded by https://wiki.mozilla.org/ReleaseEngineering/Merge_Duty/Steps#Perform_mozilla-beta_-.3E_mozilla-release_migration .'''</font>
<br /><br />
* '''Make sure that there isn't an l10n locales bug that needs to filed like: {{Bug|826825}}'''
* '''Make sure that there isn't an l10n locales bug that needs to filed like: {{Bug|826825}}'''


== Close the Beta Tree ==
== Close the Beta Tree ==
* Use https://treestatus.mozilla.org/ to close mozilla-beta. No need to reopen till the next merge from Aurora->Beta (or a beta re-spin is necessary)
* Use https://treestatus.mozilla.org/ to close mozilla-beta.
** Please use the "Remember previous state" option, so you can easily restore the previous status messages when you are finished (there will be a restore button at the bottom of the page).
** Please use the "Remember previous state" option, so you can easily restore the previous status messages when you are finished (there will be a restore button at the bottom of the page).
** In order to change tree statuses, your browserID email needs to be added with sheriff permissions (ping edmorley/philor/catlee or ask in #developers).
** In order to change tree statuses, your browserID email needs to be added with sheriff permissions (ping edmorley/philor/catlee or ask in #developers).
** mozilla-beta will remain closed until after the Aurora->Beta uplift the following Monday (or a beta re-spin is necessary).


== Sync mozilla-beta to mozilla-release ==
== Sync mozilla-beta to mozilla-release ==
Line 31: Line 42:
To handle this process use the following scripts.
To handle this process use the following scripts.


== Sync mozilla-beta to mozilla-release ==
<strike>[http://hg.mozilla.org/build/braindump/file/default/releases-related Script available here (beta2release.sh)] '''do not use as it doesn't update confvars.sh'''</strike>
== Beta to Release Merge day helper Script ==
== Beta to Release Merge day helper Script ==
(Beta2Release) Merge day helper script : https://gist.github.com/bbajaj/7045666 ALWAYS GET A FRESH COPY IN CASE THERE HAVE BEEN UPDATES!!!
Merge day helper script: [https://hg.mozilla.org/build/tools/file/default/release/beta2release.py beta2release.py]


===Clobber mozilla-release builders===
===Clobber mozilla-release builders===
Go to https://secure.pub.build.mozilla.org/clobberer/?branch=mozilla-release and clobber the mozilla-release builders
Go to https://secure.pub.build.mozilla.org/clobberer/?branch=mozilla-release and clobber the mozilla-release builders
===Clone, Tag, update [Taken care by the helper script beta2release.py]===
 
==== Running beta2release.py ====
 
* If running for the first time save this the script in the directory where you typically do the beta to release merge.
 
For eg : I typically have the script saved as /Users/bbajaj/Mozilla/beta2release/beta2release.py
 
* Script will take-care of tagging, return here when ready to push mozilla-beta
# follow instructions in script combined with wiki commands
** Next step is to run the script : python beta2release.py
''' hg -R mozilla-beta push ssh://hg.mozilla.org/releases/mozilla-beta '''


===Edit desktop config ===
=== Running beta2release.py ===
  # edit mozilla-release/browser/locales/shipped-locales file if you need to remove some beta locales (eg mn, sw)
Example invocation:
# script takes care of config changes
  python beta2release.py --remove-locale sw --remove-locale ms
 
* Script will take-care of tagging of mozilla-beta and wil promt you to push the tag to mozilla-beta. Push by
=== Edit mobile mozconfigs ===
hg -R mozilla-beta push ssh://hg.mozilla.org/releases/mozilla-beta
'''Note: use 'official' for release mozconfigs, not 'release''''
* Script will continue by pulling mozilla-beta to mozilla-release, merging the heads in a fast-forward manner (using <tt>hg debugsetparents</tt>), adjusting shipped-locales and changing some congigs.
<pre>
* Once the diff is shown and reviewed on screen, the script will commit the changes.
# script takes care of config changes
* Push the final bits by
 
  hg -R mozilla-release push --new-branch ssh://hg.mozilla.org/releases/mozilla-release
</pre>
* The push should be available at https://tbpl.mozilla.org/?tree=Mozilla-Release
 
=== Uplift locales ===
===Commit Changes===
Helper script: [http://hg.mozilla.org/build/braindump/file/default/releases-related/beta2release_l10n.sh beta2release_l10n.sh]
# commit the changes
#script takes care of the commits
 
  # push back
# hg -R mozilla-release push -f ssh://hg.mozilla.org/releases/mozilla-release
 
===Now go watch results===
https://tbpl.mozilla.org/?tree=Mozilla-Release
 
== L10N sync ==
* Note you need permission to be able to run this script successfully.File a server ops bug similar to {{bug|869654}}
* Note you need permission to be able to run this script successfully.File a server ops bug similar to {{bug|869654}}
 
* ATM, the script uses <tt>~/.ssh/ffxbld_dsa</tt> key to push l10n repos on befalf on ffxbld user. It can be run from cruncher.
[http://hg.mozilla.org/build/braindump/file/default/releases-related Script available here (beta2release_l10n.sh)]
* The script is based on [http://hg.mozilla.org/users/axel_mozilla.com/branch-l10n/file/default/merge_l10n.py Axel's merge script]
 
'''Note''' for August 24th beta->release uplift, you'll want to incorporate [http://hg.mozilla.org/users/axel_mozilla.com/branch-l10n/file/d019b6817a31/merge_l10n.py#l12 Axel's merge script] to deal with when release locale repos don't have anything committed to them yet.
 
'''Also note''' the merge part of this script does not work properly period, and doesn't push to repo
 
<pre>
#!/bin/bash
set -x
set -e
 
HG_HOST=hg.mozilla.org
HG_USER=lsblakk@mozilla.com
repo=mozilla-release
release_repo_path=releases/l10n/mozilla-release
beta_repo_path=releases/l10n/mozilla-beta
wd=`pwd`/l10n
 
mkdir -p $wd
cd $wd
 
for l in `wget -q -O- http://$HG_HOST/releases/$repo/raw-file/default/browser/locales/shipped-locales | grep -v en-US | awk '{print $1}'`; do
    hg clone http://$HG_HOST/$release_repo_path/$l
    hg clone http://$HG_HOST/$beta_repo_path/$l $l.beta
    release_rev=`hg -R $l id -i -r default`
    beta_rev=`hg -R $l.beta id -i -r default`
    hg -R $l pull $l.beta
    hg -R $l up -C default
    heads=`hg -R $l heads --template '{rev}\n' default|wc -l|tr -d ' '`
    if [ "x$heads" != "x1" ]; then
        hg -R $l up -C -r $beta_rev
        HGMERGE=true hg -R $l merge -r $release_rev
        hg -R $l revert -a -y --no-backup -r $beta_rev
        hg -R $l commit -u $HG_USER -m "Merge from mozilla-beta. CLOSED TREE a=release"
    fi
    hg -R $l diff -r $beta_rev -r default
    hg -R $l push -f ssh://$HG_HOST/$release_repo_path/$l
done
</pre>
 
==Go Re-Open Beta Tree==
* Announce completion of merge in #release-drivers (ping Standard8 and Callek)


=Merge Day (Central, Aurora, Beta)=
=Merge Day (Central, Aurora, Beta)=


Merge day helper script : https://gist.github.com/lsblakk/5568843 '''ALWAYS GET A FRESH COPY IN CASE THERE HAVE BEEN UPDATES!!!'''
The bulk of the merge day work is performed by Release Engineering. However, Release Management is responsible for providing product behavior information.


== Check IIDs that need to be bumped ==
Prior to sending the "Please bump & merge m-c, m-a, m-b" email, the follow steps need to be performed:
* Make sure the trees are green and as much as possible land the aurora approved patches
* Find IIDs that need to be bumped from Aurora to Beta: https://github.com/jwir3/checkiid
* Find IIDs that need to be bumped from Aurora to Beta: https://github.com/jwir3/checkiid
** the command is -I (big 'i', not small 'L' which is what it looks like on the readme)
# run this in an updated mozilla-aurora dir
hg diff -r FIREFOX_AURORA_{{BETA_VERSION}}_END -r tip -I "**.idl" > /tmp/firefox.diff
python /path/to/checkiid.py repo /tmp/firefox.diff


== Get all of the Repos ==
** ie: idl files that changed on Aurora and '''didn't''' get an IID bump
mkdir ~/Mozilla/
** Track on http://dxr.mozilla.org/ (''Log'' link on the right) + http://hg.mozilla.org the new/remove methods, method profile updated, etc. Note that ''%{C++'' declaration changes does not need to see any IID bump (no change in the vtable).<br />Renaming of an argument in the function/method profile does NOT impact the IDL.
cd ~/Mozilla/
** a const change does not require a IID bump. {{Bug|1061656}}
hg clone http://hg.mozilla.org/mozilla-central/ mozilla-central
** report bug and n-i developers+managers to see them fixed. {{Bug|1023109}}
hg clone http://hg.mozilla.org/releases/mozilla-aurora/ mozilla-aurora
** '''OR''', fix them yourself if you feel confident enough. To get a new IID, on irc, ''/msg firebot uuid'' should be enough or use ''./mach update-uuids'' (safer)
hg clone http://hg.mozilla.org/releases/mozilla-beta/ mozilla-beta
** need to get landed before go-to-build for {{AURORA_VERSION}} Beta 1 (but does not block the merge-day)
* Make final determination if any locales need to be changed for any step. (Gather bug #'s for the needed actions.)
** The default is: central->aurora should reset to aurora, aurora->beta should take the content from aurora


== Set each Repo up for Pushing ==
== Requesting the Merge ==


See https://developer.mozilla.org/en/Mercurial_FAQ#Required_configuration
Send an email to r-d with the subject: "Please bump & merge m-c, m-a, m-b", with the following contents:
* all locales confirmed (or a list of changes needed with bug numbers)
* no config changes needed (or a list of features to enable/disable with bug numbers)
* confirm that all IDL checks have been done, and that RelMan will ensure that any remaining IDL issues are addressed prior to go-to-build for m-a.


== Set up HG Extensions ==
<pre>
Subject: Please bump & merge m-c, m-a, m-b


Edit ~/.hgrc to include
Please kick off the merge process for m-c, m-a, m-b.


[extensions]
Locales: The locales should be handled with the default process:  central->aurora should reset to aurora, aurora->beta should take the content from aurora
transplant=
Configuration changes: There are no configuration changes we are aware of at this time.
mq=
IDL: The IDL files have been checked and there are no known issues with bumped IIDs.
rebase=
</pre>
graphlog=
 
== Close the Trees ==
DO NOT CLOSE mozilla-central FOR MERGING
* Use https://treestatus.mozilla.org/ to close the trees.
* Please use the "Remember previous state" option, so you can easily restore the previous status messages when you are finished (there will be a restore button at the bottom of the page).
* In order to change tree statuses, your browserID email needs to be added with sheriff permissions (ping edmorley/philor/catlee or ask in #developers).
 
== Clone the Helper Script (do this every merge day) ==
# Make sure you get a fresh copy in case there have been updates since last merge
git clone https://gist.github.com/lsblakk/5568843
ln -s 5568843/gistfile1.py merge_help.py
 
* Open two terminal windows, be in the top dir of your cloned repos in both
* In one of them run the helper script (in the other you can run the manual steps: tagging, pushing, etc):
python merge_help.py
  # follow instructions in script combined with wiki commands
 
=== mozilla-central tag/bump from {{CENTRAL_VERSION}} to {{NEXT_VERSION}} ===
==== Preparation and Tagging ====
* '''Send note to dev-planning and #developers announcing that the merge is about to start'''
cd ~/Mozilla/mozilla-central
hg pull
hg up
hg tag FIREFOX_AURORA_{{CENTRAL_VERSION}}_BASE
 
* Script will do version bumps
 
==== Verify & Commit Your Changes ====
# check the diffs to ensure nothing additional has been changed
hg diff
hg commit -m "Merging in version bump NO BUG"
hg out
hg push
 
* '''Announce to dev-planning and #developers that the m-c bump is completed'''
 
=== mozilla-aurora {{AURORA_VERSION}} to mozilla-beta uplift ===
==== Tag mozilla-aurora ====
cd ~/Mozilla/mozilla-aurora
hg tag -m "Tagging for mozilla-aurora->mozilla-beta uplift CLOSED TREE DONTBUILD" FIREFOX_BETA_{{AURORA_VERSION}}_BASE
hg out
# review
hg push
 
==== Tagging and closing old beta ====
cd ~/mozilla/mozilla-beta
hg tag -m "Tagging end of BETA{{BETA_VERSION}} CLOSED TREE DONTBUILD" FIREFOX_BETA_{{BETA_VERSION}}_END
hg commit --close-branch -m 'closing old head CLOSED TREE DONTBUILD'
hg out
hg push
 
==== Pull from Aurora into Beta ====
hg pull -u -r FIREFOX_BETA_{{AURORA_VERSION}}_BASE http://hg.mozilla.org/releases/mozilla-aurora
 
* Script does version bumps
 
==== Verify & Commit version bumps changes ====
hg commit -m "Merging in version bumps NO BUG CLOSED TREE ba=release"
hg out
 
* Script does branding changes
==== Verify & Commit branding changes ====
hg commit -m "Merging in branding changes NO BUG CLOSED TREE ba=release"
hg out
 
==== L10n data changes ====
* l10n-drivers can file bugs post-merge to enable new locales, we'll revert mobile & desktop for now in order to not pull up locales which are not ready for beta
#  Note: for FF23 aurora-> beta, do not revert the android multilocale - see bug 877837
hg revert -r FIREFOX_BETA_{{BETA_VERSION}}_END browser/locales/all-locales
hg revert -r FIREFOX_BETA_{{BETA_VERSION}}_END mobile/android/locales/*-locales
 
==== Commit l10n changes ====
hg commit -m "Merging in l10n changes NO BUG CLOSED TREE ba=release"
hg out
 
==== Clobber & push ====
* Use the '''Regular Clobbers''' @ [https://build.mozilla.org/clobberer/ clobberer] to clobber all beta builders and then...
# ping Standard8 in #r-d to warn about push
hg push -f
 
===mozilla-central {{CENTRAL_VERSION}} to mozilla-aurora uplift===
==== Don't forget to throttle the Aurora channel ====
* Use [https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&attach_text=&blocked=&bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&cc=anthony.s.hughes%40gmail.com&cc=jbecerra%40mozilla.com&cc=hskupin%40gmail.com&cc=akeybl%40mozilla.com&cc=release-mgmt%40mozilla.com&cc=bbajaj%40mozilla.com&cf_blocking_b2g=---&cf_crash_signature=&comment=&component=Release%20Engineering%3A%20Automation%20%28General%29&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-4=X&flag_type-481=X&flag_type-607=X&flag_type-674=X&flag_type-720=X&flag_type-721=X&flag_type-737=X&flag_type-791=X&flag_type-800=X&flag_type-802=X&flag_type-803=X&flag_type-809=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=mozilla.org&qa_contact=catlee%40mozilla.com&rep_platform=All&requestee_type-4=&requestee_type-607=&requestee_type-753=&requestee_type-791=&requestee_type-800=&short_desc=Disable%20Aurora%20X%20daily%20updates%20until%20merge%20to%20mozilla-aurora%20has%20stabilized&status_whiteboard=&target_milestone=---&version=other this Bugzilla template] to file a bug requesting the disabling of Aurora updates (eg: bug 700794) - until we have sign off from QA
** '''Make sure QA is aware (an email to r-d is best)'''
 
==== Tagging and closing old aurora ====
cd ~/mozilla/mozilla-aurora
hg tag -m "Tagging for mozilla-central->mozilla-aurora uplift CLOSED TREE" FIREFOX_AURORA_{{AURORA_VERSION}}_END
hg commit --close-branch -m 'closing old head CLOSED TREE DONTBUILD'
hg out
hg push
 
==== Pull from m-c into Aurora ====
hg pull -u -r FIREFOX_AURORA_{{CENTRAL_VERSION}}_BASE http://hg.mozilla.org/mozilla-central
 
* Script will do version bumps
==== Verify & Commit Version Bumps ====
# check the diffs to ensure nothing additional has been changed
hg diff
hg commit -m "Merging in version bump NO BUG CLOSED TREE"
hg out
 
* Script will do branding changes
==== Verify & Commit branding changes ====
hg commit -m "Merging in branding changes NO BUG CLOSED TREE ba=release"
hg out
 
* Script will disable profiling changes
==== Verify & Commit profiling changes ====
hg diff
hg commit -m "Disable profiling on Aurora NO BUG CLOSED TREE ba=release"
hg out
 
==== Verify & Commit mozconfig dtrace & instruments changes ====
hg diff
hg commit -m "Remove dtrace & instruments in mozconfigs on Aurora as per bug 748669 CLOSED TREE ba=release"
hg out
 
==== L10n data changes ====
# revert to previous Aurora locales - l10n drivers can file post-merge bugs to add new locales
hg revert -r FIREFOX_AURORA_{{AURORA_VERSION}}_END browser/locales/*-locales
hg revert -r FIREFOX_AURORA_{{AURORA_VERSION}}_END mobile/android/locales/*-locales


==== Verify & Commit l10n changes====
Please be available for any question on irc or email.
$ hg commit -m "Merging in l10n changes NO BUG CLOSED TREE ba=release"
$ hg out


==Disable metro==
RelEng will take the process from there, and will (eventually) reply with an email to r-d with a subject of "Bump & Merge m-c,m-a,m-b complete". When that email is received, verify that the contents confirm:
* Check bug to disable metro
* wikimo version templates have been updated


==== Clobber & push ====
After that email is received, continue.
* Use the '''Regular Clobbers''' @ [https://build.mozilla.org/clobberer/ clobberer] to clobber all aurora builders and then...
# ping Standard8 (or TB driver) in #r-d to warn about push
hg push -f


=Completing the Merge=
==Completing the Merge==
* Email dev.planning and let them know the merge is complete
* Email dev.planning and let them know the merge is complete
* Notify #developers
* Notify #developers
* re-open Aurora, Beta trees
* Notify Release Engineering
* re-open Beta tree (leaving Aurora closed for stabilization) - https://treestatus.mozilla.org/
* Update the merge docs as needed to keep them up to date for next merge day
* Update the merge docs as needed to keep them up to date for next merge day
* Make sure you did file the bug on Aurora update throttling
* Make sure you did file the bug on Aurora update throttling
* New: remind Jorge that he needs to prevent an add-on compatibility bump for the hotfix add-ons
* Remind Jorge that he needs to prevent an add-on compatibility bump for the hotfix add-ons
* Initiate the process of uplifting sec bugs (up to what sec level needed?) for this release to b2g branch(es) [docs coming]


= Change Template Version Numbers =
== Verify the Template Version Numbers ==
Now that everything has been bumped edit the following so our Channel Notes and other wiki pages have the correct info and queries now (increment by 1)
Now that everything has been completed, verify that the template version numbers are correct. They are very important for daily cronjobs that read the values and nag many many engineers based on triage queries that use them.
All versions are now automatically bumped. Information on the calculation follows the list of templates.
* [https://wiki.mozilla.org/index.php?title=Template:NEXT_VERSION&action=edit NEXT_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:CENTRAL_VERSION&action=edit CENTRAL_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:AURORA_VERSION&action=edit AURORA_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:BETA_VERSION&action=edit BETA_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:CURRENT_VERSION&action=edit CURRENT_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:CURRENT_CYCLE&action=edit CURRENT_CYCLE] based upon [https://wiki.mozilla.org/RapidRelease/Calendar the calendar]
* [https://wiki.mozilla.org/index.php?title=Template:FIREFOX_SHIP_DATE&action=edit FIREFOX_SHIP_DATE] (the next ship date)
* [https://wiki.mozilla.org/index.php?title=Template:FIREFOX_MERGE_DATE&action=edit FIREFOX_MERGE_DATE] (the next ship date)


* [https://wiki.mozilla.org/index.php?title=Template:NEXT_VERSION NEXT_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:CENTRAL_VERSION CENTRAL_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:AURORA_VERSION AURORA_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:BETA_VERSION BETA_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:RELEASE_VERSION RELEASE_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:B2G_DEV_VERSION B2G_DEV_VERSION]
* [https://wiki.mozilla.org/index.php?title=Template:ESR_VERSION ESR_VERSION] (every 7 releases)
* [https://wiki.mozilla.org/index.php?title=Template:NextReleaseDate NextReleaseDate]
** Which causes these to auto-update (with the magic of math!)
** [https://wiki.mozilla.org/index.php?title=Template:FIREFOX_SHIP_DATE FIREFOX_SHIP_DATE] (the next ship date)
** [https://wiki.mozilla.org/index.php?title=Template:FIREFOX_MERGE_DATE FIREFOX_MERGE_DATE] (the next ship date)
** [https://wiki.mozilla.org/index.php?title=Template:CURRENT_CYCLE CURRENT_CYCLE] based upon [https://wiki.mozilla.org/RapidRelease/Calendar the calendar]
== Calculating the current Firefox release # and next release date ==
== Calculating the current Firefox release # and next release date ==
The expression reads <pre>floor(Firefox 23 + ((current time - Firefox 23 release date) / 6 weeks))</pre>. This expression counts the number of full 6 week increments since Firefox 23 and adds the total to 23 to give the current release number. Similarly, we can calculate the next release date with <pre>{{#time: Y-m-d | @{{#expr: (3628800 - (({{#time: U | now}} - {{#time: U | 6 Aug 2013}}) mod 3628800)) + {{#time: U | now}}}}}}</pre>. In this case we calculate the time since the Firefox 23 release, take the remainder from dividing by 6 weeks, and subtract that from the current time. This results in the number of days until the next release. Add that to the current time to produce the next release date.
The expression reads <pre>floor(Firefox 23 + ((current time - Firefox 23 release date) / 6 weeks))</pre>. This expression counts the number of full 6 week increments since Firefox 23 and adds the total to 23 to give the current release number. Similarly, we can calculate the next release date with <pre>{{#time: Y-m-d | @{{#expr: (3628800 - (({{#time: U | now}} - {{#time: U | 6 Aug 2013}}) mod 3628800)) + {{#time: U | now}}}}}}</pre>. In this case we calculate the time since the Firefox 23 release, take the remainder from dividing by 6 weeks, and subtract that from the current time. This results in the number of days until the next release. Add that to the current time to produce the next release date.


[[category:Release_Management|M]]
[[category:Release_Management|M]]
[[Category:Release_Management:Processes|Merge]]

Latest revision as of 09:16, 5 April 2018

Warning: This page hasn't been updated recently and may not be fully accurate or complete. In case of doubt, contact our release managers.

NOTE: For the next merge, we need to check for interface changes that are unpaired to UUID changes

NOTE: Release Engineering is now performing all code merges. The work on updating the wiki and complete automation is in progress. Hence let both RelMan & RelEng know if you find anything missing here

Archive of Past Merge Days

Release_Management/Merge_Days

What's missing here

This is a document in process, and will also be replaced by automation at some point. In the meantime it outlines the manual steps required on a 'Merge Day' when Mozilla-Aurora becomes Mozilla-Beta and Mozilla-Central becomes Mozilla-Aurora.

ATM there is nothing in here about:

  • synching all the L10N repos (current doc is here for repos: L10n:Migration, and dashboard process is coming)
    • There have been issues with missing l10n locales on first beta1 builds. In m-b --> m-r migration, RelEng run l10n-sync script to uplift beta locales to release, which ensures that all locales have content in release repo and are migrated correctly. However, this script currently doesn't get used for m-a --> m-b merge day (need to check with Axel on his process here).
  • Thunderbird/SeaMonkey merging, that doc is at Thunderbird/Release_Driving/Rapid_Release_Activities/Merge_Repositories

Mozilla-Beta -> Mozilla-Release Merge

For Release Engineering, this page has been superseded by https://wiki.mozilla.org/ReleaseEngineering/Merge_Duty/Steps#Perform_mozilla-beta_-.3E_mozilla-release_migration .



  • Make sure that there isn't an l10n locales bug that needs to filed like: bug 826825

Close the Beta Tree

  • Use https://treestatus.mozilla.org/ to close mozilla-beta.
    • Please use the "Remember previous state" option, so you can easily restore the previous status messages when you are finished (there will be a restore button at the bottom of the page).
    • In order to change tree statuses, your browserID email needs to be added with sheriff permissions (ping edmorley/philor/catlee or ask in #developers).
    • mozilla-beta will remain closed until after the Aurora->Beta uplift the following Monday (or a beta re-spin is necessary).

Sync mozilla-beta to mozilla-release

Mercurial repositories used for final releases should be synced from mozilla-beta.

Tip of default on mozilla-release should be tagged and closed. mozilla-beta should be tagged and pulled. It creates new tip of default on mozilla-release. See Aurora specific sync mechanics for the details.

L10N repositories uses noop (dummy) merge if needed to simplify localizers life.


To handle this process use the following scripts.

Beta to Release Merge day helper Script

Merge day helper script: beta2release.py

Clobber mozilla-release builders

Go to https://secure.pub.build.mozilla.org/clobberer/?branch=mozilla-release and clobber the mozilla-release builders

Running beta2release.py

Example invocation:

python beta2release.py --remove-locale sw --remove-locale ms
  • Script will take-care of tagging of mozilla-beta and wil promt you to push the tag to mozilla-beta. Push by
hg -R mozilla-beta push ssh://hg.mozilla.org/releases/mozilla-beta
  • Script will continue by pulling mozilla-beta to mozilla-release, merging the heads in a fast-forward manner (using hg debugsetparents), adjusting shipped-locales and changing some congigs.
  • Once the diff is shown and reviewed on screen, the script will commit the changes.
  • Push the final bits by
hg -R mozilla-release push --new-branch ssh://hg.mozilla.org/releases/mozilla-release

Uplift locales

Helper script: beta2release_l10n.sh

  • Note you need permission to be able to run this script successfully.File a server ops bug similar to bug 869654
  • ATM, the script uses ~/.ssh/ffxbld_dsa key to push l10n repos on befalf on ffxbld user. It can be run from cruncher.
  • The script is based on Axel's merge script

Merge Day (Central, Aurora, Beta)

The bulk of the merge day work is performed by Release Engineering. However, Release Management is responsible for providing product behavior information.

Prior to sending the "Please bump & merge m-c, m-a, m-b" email, the follow steps need to be performed:

  • Make sure the trees are green and as much as possible land the aurora approved patches
  • Find IIDs that need to be bumped from Aurora to Beta: https://github.com/jwir3/checkiid
    • the command is -I (big 'i', not small 'L' which is what it looks like on the readme)
# run this in an updated mozilla-aurora dir
hg diff -r FIREFOX_AURORA_128_END -r tip -I "**.idl" > /tmp/firefox.diff
python /path/to/checkiid.py repo /tmp/firefox.diff
    • ie: idl files that changed on Aurora and didn't get an IID bump
    • Track on http://dxr.mozilla.org/ (Log link on the right) + http://hg.mozilla.org the new/remove methods, method profile updated, etc. Note that %{C++ declaration changes does not need to see any IID bump (no change in the vtable).
      Renaming of an argument in the function/method profile does NOT impact the IDL.
    • a const change does not require a IID bump. bug 1061656
    • report bug and n-i developers+managers to see them fixed. bug 1023109
    • OR, fix them yourself if you feel confident enough. To get a new IID, on irc, /msg firebot uuid should be enough or use ./mach update-uuids (safer)
    • need to get landed before go-to-build for 54 Beta 1 (but does not block the merge-day)
  • Make final determination if any locales need to be changed for any step. (Gather bug #'s for the needed actions.)
    • The default is: central->aurora should reset to aurora, aurora->beta should take the content from aurora

Requesting the Merge

Send an email to r-d with the subject: "Please bump & merge m-c, m-a, m-b", with the following contents:

  • all locales confirmed (or a list of changes needed with bug numbers)
  • no config changes needed (or a list of features to enable/disable with bug numbers)
  • confirm that all IDL checks have been done, and that RelMan will ensure that any remaining IDL issues are addressed prior to go-to-build for m-a.
Subject: Please bump & merge m-c, m-a, m-b

Please kick off the merge process for m-c, m-a, m-b.

Locales: The locales should be handled with the default process:  central->aurora should reset to aurora, aurora->beta should take the content from aurora
Configuration changes: There are no configuration changes we are aware of at this time.
IDL: The IDL files have been checked and there are no known issues with bumped IIDs.

Please be available for any question on irc or email.

RelEng will take the process from there, and will (eventually) reply with an email to r-d with a subject of "Bump & Merge m-c,m-a,m-b complete". When that email is received, verify that the contents confirm:

  • wikimo version templates have been updated

After that email is received, continue.

Completing the Merge

  • Email dev.planning and let them know the merge is complete
  • Notify #developers
  • Notify Release Engineering
  • re-open Beta tree (leaving Aurora closed for stabilization) - https://treestatus.mozilla.org/
  • Update the merge docs as needed to keep them up to date for next merge day
  • Make sure you did file the bug on Aurora update throttling
  • Remind Jorge that he needs to prevent an add-on compatibility bump for the hotfix add-ons

Verify the Template Version Numbers

Now that everything has been completed, verify that the template version numbers are correct. They are very important for daily cronjobs that read the values and nag many many engineers based on triage queries that use them.

Calculating the current Firefox release # and next release date

The expression reads

floor(Firefox 23 + ((current time - Firefox 23 release date) / 6 weeks))

. This expression counts the number of full 6 week increments since Firefox 23 and adds the total to 23 to give the current release number. Similarly, we can calculate the next release date with

{{#time: Y-m-d | @{{#expr: (3628800 - (({{#time: U | now}} - {{#time: U | 6 Aug 2013}}) mod 3628800)) + {{#time: U | now}}}}}}

. In this case we calculate the time since the Firefox 23 release, take the remainder from dividing by 6 weeks, and subtract that from the current time. This results in the number of days until the next release. Add that to the current time to produce the next release date.