Tree Rules: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎mozilla-central (Nightly channel): Update rules for mozilla-central essential pushes only policy change)
(→‎mozilla-beta: remove obsolete info about xpidl and uuids)
 
(15 intermediate revisions by 7 users not shown)
Line 1: Line 1:
For comm-central tree rules, [[Tree_Rules/comm-central|see this page]].
For comm-central tree rules, [[Tree_Rules/comm-central|see this page]].


Not sure which Firefox version is on which branch today?  See [[RapidRelease/Calendar]].
Not sure which Firefox version is on which branch today?  See [[RapidRelease/Calendar|Rapid Release Calendar]].


Looking to add a new platform/job type to TBPL? See [[Sheriffing/Job_Visibility_Policy]].
Looking to add a new platform/job type to Treeherder? See our [[Sheriffing/Job_Visibility_Policy|Job Visibility Policy]].


== [http://tbpl.mozilla.org/ mozilla-central] (Nightly channel) ==
== Integration Branches, or the "Normal" workflow ==


* In order to increase the reliability of our primary repository, direct pushes to mozilla-central [https://groups.google.com/d/topic/mozilla.dev.tree-management/V1zZ3JlFpzI/discussion must now] only be for one of the following reasons:
[[File:Land patch - go home.jpg|300px|right]]
** Merging from an integration/team/project repository (there is no restriction on who may make these merges) [''a=merge''].
** Automated blocklist / HSTS preload list updates [''a={blocklist-update,hsts-update}''].
** For the resolution (ie: backout or follow-up fix) of critical regressions (eg: top-crashers or other major functional regression) that will result in a Nightly respin or must make the imminent scheduled Nightly at all costs [''a={backout,topcrasher,respin,...}''].
** Anything else for which common sense (or asking in #developers) says is an appropriate reason for a direct landing on mozilla-central [''a=something_descriptive''].
* If your patch is eligible for direct-landing on mozilla-central:
** Use the ''a=reason'' examples given above, to bypass the Mercurial hook used to prevent accidental pushes. Note: That whilst we are using the "a=" syntax (since that's all the hook supports for now), this is unrelated to the "release-driver approval request" process - so please do not request approval from them in Bugzilla.
** Changes must meet the [https://developer.mozilla.org/En/Developer_Guide/Committing_Rules_and_Responsibilities general checkin rules].
** You must check the tree is green before pushing, notify the sheriffs in #developers and then watch mozilla-central for failures after pushing.
** Set the ''Target Milestone'' field in Bugzilla to the current Nightly version after landing a bug fix on mozilla-central.
* All other changes must instead land via one of the integration branches and will then be merged into mozilla-central once green (these merges occur typically 1-2 times a day on the last complete green push).
* Please ask in #developers on [[IRC]] if you have questions.


== Integration Branches ==
The following rules apply to integration branch managed by the [[Sheriffing|Sheriffs]], namely [https://treeherder.mozilla.org/#/jobs?repo=autoland autoland].


[[File:Land patch - go home.jpg|300px|right]]
=== [https://treeherder.mozilla.org/#/jobs?repo=autoland autoland]/Lando ===
If you are using [https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html Phabricator] to post and review patches, you can also use the tool to automatically land those patch to the autoland repository. This is the preferred method of landing Mozilla code because, in almost all cases, it involves the least work for humans, including you.


The following rules apply to integration branches managed by the [[sheriff]]s, including [https://tbpl.mozilla.org/?tree=Mozilla-Inbound mozilla-inbound], [https://tbpl.mozilla.org/?tree=B2g-Inbound b2g-inbound], and [https://tbpl.mozilla.org/?tree=Fx-Team fx-team].
Please see the documentation on [https://moz-conduit.readthedocs.io/en/latest/lando-user.html Landing Commits with Lando] for details on how to use Lando.


* '''All changes''' must meet the [https://developer.mozilla.org/En/Developer_Guide/Committing_Rules_and_Responsibilities general checkin rules], except you do not need to watch the tree after pushing.
Sheriffs will merge autoland into mozilla-central a few times a day.
* These branches are merged into mozilla-central approximately daily.
* Please read '''[[Tree Rules/Integration]]''' for commit procedures and the list of sheriffs.
* Ask in #developers on [[IRC]] if you have any questions.


== [https://tbpl.mozilla.org/?tree=Mozilla-Aurora mozilla-aurora] ==
== [https://treeherder.mozilla.org/#/jobs?repo=mozilla-central mozilla-central] (Nightly channel) ==


'''<font color="orange">APPROVAL REQUIRED</font>'''
'''<font color="orange">APPROVAL REQUIRED</font>'''


* '''All changes''' must meet the [https://developer.mozilla.org/En/Developer_Guide/Committing_Rules_and_Responsibilities general checkin rules]. You must check the tree before pushing, and watch the tree for failures after pushing.
In order to increase the reliability of our primary repository, direct pushes to mozilla-central [https://groups.google.com/d/topic/mozilla.dev.tree-management/V1zZ3JlFpzI/discussion must now] only be for one of the following reasons:
* Patches must have the '''approval-mozilla-aurora+''' flag in Bugzilla. To request approval, set the approval-mozilla-aurora? flag on the patch you wish to check in. Exception: If patches only make changes to tests, test harnesses or anything else that does not affect the shipped builds, they may land with self approval (use a=testonly, a=npotb etc).
* Merging from an integration/team/project repository (there is no restriction on who may make these merges) [''a=merge''].  
* Patches nominated for aurora should:
* Automated blocklist / HSTS preload list updates [''a={blocklist-update,hsts-update}''].
** not change any localizable strings.
* For the resolution (ie: backout or follow-up fix) of critical regressions (eg: top-crashers or other major functional regression) that will result in a Nightly respin or must make the imminent scheduled Nightly at all costs [''a={backout,topcrasher,respin,...}''].
** have tests, or a strong statement of what can be done in the absence of tests.
** Anything else for which common sense (or asking in #developers) says is an appropriate reason for a direct landing on mozilla-central [''a=something_descriptive''].  
** have landed in mozilla-central to bake on the nightly channel for a few days.
 
** have a comment in Bugzilla assessing performance impact, risk, and reasons the patch is needed on aurora.
If your patch is eligible for direct-landing on mozilla-central:
* Approval requests will be processed by [[Releases/Drivers|release drivers]] in the weekly [[Firefox/Channels]] meetings.
* Use the ''a=reason'' examples given above, to bypass the Mercurial hook used to prevent accidental pushes. Note: That whilst we are using the "a=" syntax (since that's all the hook supports for now), this is unrelated to the "release-driver approval request" process - so please do not request approval from them in Bugzilla.
* Set the appropriate ''status-firefoxN'' flag to "fixed" after landing a fix on the Aurora branch.
** Note if merging into mozilla-central, and your push didn't generate a merge commit (and so you have nowhere to put the "a=merge" to get past the hook), then either temporarily set the tree state to OPEN, try merging a different integration repo first (which may need a merge commit), or add an empty mq commit on top with an appropriate commit message.
* Changes must meet the [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Committing_Rules_and_Responsibilities general checkin rules].
* You must check the tree is green before pushing, notify the sheriffs in #developers and then watch mozilla-central for failures.
* Set the ''Target Milestone'' field in Bugzilla to the current Nightly version after landing a bug fix on mozilla-central.
 
All other changes must instead land via one of the [[Tree_Rules#Integration_Branches.2C_or_the_.22Normal.22_workflow|integration branches]] and will then be merged into mozilla-central once green (these merges occur typically 1-2 times a day on the last complete green push).
 
Please ask in #developers on [[IRC]] if you have questions.


== [https://tbpl.mozilla.org/?tree=Mozilla-Beta mozilla-beta] ==
== [https://treeherder.mozilla.org/#/jobs?repo=mozilla-beta mozilla-beta] ==


'''<font color="orange">APPROVAL REQUIRED</font>'''
'''<font color="orange">APPROVAL REQUIRED</font>'''
Line 53: Line 47:
* Patches nominated for beta should:
* Patches nominated for beta should:
** not change any localizable strings.
** not change any localizable strings.
** not change binary interfaces or otherwise break add-on compatibility.  (In particular, they should not make any change to an [https://developer.mozilla.org/en-US/docs/Mozilla/XPIDL XPIDL] interface that requires a UUID change.)
** have tests, or a strong statement of what can be done in the absence of tests.
** have tests, or a strong statement of what can be done in the absence of tests.
** have landed in mozilla-central to bake on the nightly channel for a few days.
** have landed in mozilla-central to bake on the nightly channel for a few days.
** have a comment in Bugzilla assessing performance impact, risk, and reasons the patch is needed on beta.
** have a comment in Bugzilla assessing performance impact, risk, and reasons the patch is needed on beta.
* Approval requests will be processed by [[Releases/Drivers|release drivers]] in the weekly [[Firefox/Channels]] meetings.
* Approval requests will be processed by by the [[Release_Management|release manager]] team.
* Set the appropriate ''status-firefoxN'' flag to "fixed" after landing a fix on the Beta branch.  
* Set the appropriate ''status-firefoxN'' flag to "fixed" after landing a fix on the Beta branch.


== [https://tbpl.mozilla.org/?tree=Mozilla-Release mozilla-release] ==
== [https://treeherder.mozilla.org/#/jobs?repo=mozilla-release mozilla-release] ==


'''<font color="orange">APPROVAL REQUIRED</font>'''
'''<font color="orange">APPROVAL REQUIRED</font>'''
Line 66: Line 59:
* Patches must have the '''approval-mozilla-release+''' flag in Bugzilla. To request approval, set the approval-mozilla-release? flag on the patch you wish to check in. Exception: If patches only make changes to tests, test harnesses or anything else that does not affect the shipped builds, they may land with self approval (use a=testonly, a=npotb etc).
* Patches must have the '''approval-mozilla-release+''' flag in Bugzilla. To request approval, set the approval-mozilla-release? flag on the patch you wish to check in. Exception: If patches only make changes to tests, test harnesses or anything else that does not affect the shipped builds, they may land with self approval (use a=testonly, a=npotb etc).
* In the normal development process, no changes will land on mozilla-release except [[RapidRelease/Calendar|regular merges from mozilla-beta]] every six weeks.
* In the normal development process, no changes will land on mozilla-release except [[RapidRelease/Calendar|regular merges from mozilla-beta]] every six weeks.
* Changes to the release branch are limited to urgent "chemspills" like zero-day security vulnerabilities and other unplanned emergencies.  Any changes to this branch will be directly overseen by [[Releases/Drivers|release drivers]].  They are also subject to the same restrictions as [[#mozilla-beta]], including string freeze and UUID freeze.
* Changes to the release branch are limited to urgent "chemspills" like zero-day security vulnerabilities and other unplanned emergencies.  Any changes to this branch will be directly overseen by the [[Release_Management|release manager]] team.  They are also subject to the same restrictions as [[#mozilla-beta]], including string freeze and UUID freeze.
 
== [https://tbpl.mozilla.org/?tree=Mozilla-B2g28-v1.3 mozilla-b2g28_v1_3] (and other B2G branches) ==
 
'''<font color="orange">APPROVAL REQUIRED</font>'''
 
* See [[Release Management/B2G_Landing]].


== [https://tbpl.mozilla.org/?tree=Mozilla-Esr24 mozilla-esr24] (Firefox 24.x.y ESR) ==
== [https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr60 mozilla-esr60] (Firefox 60.x.y ESR) ==


'''<font color="orange">APPROVAL REQUIRED</font>'''
'''<font color="orange">APPROVAL REQUIRED</font>'''


* See [[Release Management/ESR Landing Process]].
* See [[Release Management/ESR Landing Process]].

Latest revision as of 09:50, 14 May 2020

For comm-central tree rules, see this page.

Not sure which Firefox version is on which branch today? See Rapid Release Calendar.

Looking to add a new platform/job type to Treeherder? See our Job Visibility Policy.

Integration Branches, or the "Normal" workflow

Land patch - go home.jpg

The following rules apply to integration branch managed by the Sheriffs, namely autoland.

autoland/Lando

If you are using Phabricator to post and review patches, you can also use the tool to automatically land those patch to the autoland repository. This is the preferred method of landing Mozilla code because, in almost all cases, it involves the least work for humans, including you.

Please see the documentation on Landing Commits with Lando for details on how to use Lando.

Sheriffs will merge autoland into mozilla-central a few times a day.

mozilla-central (Nightly channel)

APPROVAL REQUIRED

In order to increase the reliability of our primary repository, direct pushes to mozilla-central must now only be for one of the following reasons:

  • Merging from an integration/team/project repository (there is no restriction on who may make these merges) [a=merge].
  • Automated blocklist / HSTS preload list updates [a={blocklist-update,hsts-update}].
  • For the resolution (ie: backout or follow-up fix) of critical regressions (eg: top-crashers or other major functional regression) that will result in a Nightly respin or must make the imminent scheduled Nightly at all costs [a={backout,topcrasher,respin,...}].
    • Anything else for which common sense (or asking in #developers) says is an appropriate reason for a direct landing on mozilla-central [a=something_descriptive].

If your patch is eligible for direct-landing on mozilla-central:

  • Use the a=reason examples given above, to bypass the Mercurial hook used to prevent accidental pushes. Note: That whilst we are using the "a=" syntax (since that's all the hook supports for now), this is unrelated to the "release-driver approval request" process - so please do not request approval from them in Bugzilla.
    • Note if merging into mozilla-central, and your push didn't generate a merge commit (and so you have nowhere to put the "a=merge" to get past the hook), then either temporarily set the tree state to OPEN, try merging a different integration repo first (which may need a merge commit), or add an empty mq commit on top with an appropriate commit message.
  • Changes must meet the general checkin rules.
  • You must check the tree is green before pushing, notify the sheriffs in #developers and then watch mozilla-central for failures.
  • Set the Target Milestone field in Bugzilla to the current Nightly version after landing a bug fix on mozilla-central.

All other changes must instead land via one of the integration branches and will then be merged into mozilla-central once green (these merges occur typically 1-2 times a day on the last complete green push).

Please ask in #developers on IRC if you have questions.

mozilla-beta

APPROVAL REQUIRED

  • All changes must meet the general checkin rules. You must check the tree before pushing, and watch the tree for failures after pushing.
  • Patches must have the approval-mozilla-beta+ flag in Bugzilla. To request approval, set the approval-mozilla-beta? flag on the patch you wish to check in. Exception: If patches only make changes to tests, test harnesses or anything else that does not affect the shipped builds, they may land with self approval (use a=testonly, a=npotb etc).
  • Patches nominated for beta should:
    • not change any localizable strings.
    • have tests, or a strong statement of what can be done in the absence of tests.
    • have landed in mozilla-central to bake on the nightly channel for a few days.
    • have a comment in Bugzilla assessing performance impact, risk, and reasons the patch is needed on beta.
  • Approval requests will be processed by by the release manager team.
  • Set the appropriate status-firefoxN flag to "fixed" after landing a fix on the Beta branch.

mozilla-release

APPROVAL REQUIRED

  • Patches must have the approval-mozilla-release+ flag in Bugzilla. To request approval, set the approval-mozilla-release? flag on the patch you wish to check in. Exception: If patches only make changes to tests, test harnesses or anything else that does not affect the shipped builds, they may land with self approval (use a=testonly, a=npotb etc).
  • In the normal development process, no changes will land on mozilla-release except regular merges from mozilla-beta every six weeks.
  • Changes to the release branch are limited to urgent "chemspills" like zero-day security vulnerabilities and other unplanned emergencies. Any changes to this branch will be directly overseen by the release manager team. They are also subject to the same restrictions as #mozilla-beta, including string freeze and UUID freeze.

mozilla-esr60 (Firefox 60.x.y ESR)

APPROVAL REQUIRED