51
edits
(Split out lando and phab uplifts with an intro for each section) |
(update documentation with details about jobs flow) |
||
| (6 intermediate revisions by 4 users not shown) | |||
| Line 20: | Line 20: | ||
=== Requesting Uplift using Lando === | === Requesting Uplift using Lando === | ||
# | # Go to the Lando page for the stack of revisions to uplift. | ||
# | #* You can get here from the Phabricator revision by using the “View stack in Lando” option on the right side menu. | ||
# ' | # Click the Log In button in the top right of Lando, if you're not already logged in. | ||
# | # If you haven't added a Phabricator API token (or it has expired i.e. you don't see the Request Uplift button), click your username in the top right corner and paste the Phabricator API token there. | ||
# | #* Tokens are in the form ''api-XXXXX…''. This token can be found here (replace <code><USERNAME></code> with your phab username): <code>https://phabricator.services.mozilla.com/settings/user/<USERNAME>/page/apitokens/</code> [[File:Lando-phab-api-token.png|thumb|Click your username in the top right corner and paste the Phabricator API token there.]] | ||
# Click the “Request Uplift” button in the bottom right corner of the page. | |||
# Select your uplift targets by checking all the repositories you wish to uplift to (e.g., firefox-beta, firefox-release, etc.). | |||
# Complete the uplift request assessment form and click “Create uplift request”. | |||
#* After submitting, Lando will verify whether your stack applies cleanly to the selected uplift targets in the background. | |||
#* If your stack applies cleanly, Lando will automatically create Phabricator uplift requests for you. | |||
#* If your patch has merge conflicts you will receive an email notification with steps on how to proceed. | |||
| Line 30: | Line 36: | ||
If your Phabricator revision(s) require more attention, perhaps because it's expected they won't apply cleanly to the target, you'll need to apply the commit locally and submit using moz-phab. | If your Phabricator revision(s) require more attention, perhaps because it's expected they won't apply cleanly to the target, you'll need to apply the commit locally and submit using moz-phab. | ||
'''Note:''' you must use <code>moz-phab uplift</code>, not <code>moz-phab submit</code> or any other unsupported tool to submit uplift requests. | |||
=== Requesting Uplift using ''moz-phab'' === | === Requesting Uplift using ''moz-phab'' === | ||
# | # Ensure you are using the [https://github.com/mozilla-firefox/firefox mozilla-firefox] repository. | ||
# | # Switch to the appropriate branch (e.g. beta, ESR140, etc.). | ||
# | # Make sure your local repository is up to date with the target branch head. | ||
# | # Find the patch or series of patches in your local VCS. | ||
# | #* You can <code>moz-phab patch</code> patches onto your local machine if need be. | ||
# | # Use <code>moz-phab uplift --list-trains</code> to determine which uplift train you want to request an uplift for. | ||
# | #* Note: Train names generally start with <code>firefox-</code> and are not simply the branch name. | ||
# Run <code>moz-phab uplift --train <train> <revision before first of patches to uplift> <last revision of patches to uplift></code>. | |||
#* This will create new revisions in Phabricator that will be uplifted to the specified train. | |||
#* Most of the arguments to <code>moz-phab uplift</code> are the same as <code>moz-phab submit</code>. | |||
#* The <code>moz-phab uplift</code> command requires the commit hash of the revision immediately before the first one in the patch stack, and the commit hash of the last revision to uplift. | |||
# Open the URL as suggested at the bottom of the output. | |||
# Complete the uplift request form. See the section below on how to submit the form. | |||
=== Manual Cherry-Pick (Recommended if Conflicts Are Likely) === | |||
If you expect merge conflicts or want finer control over the uplift, you may prefer manually cherry-picking commits and uploading with <code>moz-phab uplift --no-rebase</code>. This avoids the behavior of <code>moz-phab uplift</code>, which will '''fail without recovery options if any conflicts are encountered.''' | |||
# Ensure you are using the [https://github.com/mozilla-firefox/firefox mozilla-firefox] repository. | |||
# Switch to the appropriate branch (e.g. beta, ESR140, etc.). | |||
# Make sure your local repository is up to date with the target branch head. | |||
# Create a new branch for your uplift, e.g. <code>git switch -c <new branch name></code> | |||
# Cherry-pick each commit or range, e.g. <code>git cherry-pick <commit-hash></code> | |||
# Resolve any merge conflicts as needed. | |||
# Use <code>moz-phab uplift --list-trains</code> to determine which uplift train you want to request an uplift for. | |||
#* Note: Train names generally start with <code>firefox-</code> and are not simply the branch name. | |||
# Submit the uplifts using <code>moz-phab uplift --no-rebase --train <train name> <revision before first of patches to uplift> <last revision of patches to uplift></code> | |||
#* Example of uplifting one patch to ESR140: <code>moz-phab uplift --no-rebase --train firefox-esr140 -i --no-wip HEAD^ HEAD</code> (<code>HEAD^</code> means the penultimate commit). | |||
# Open the URL as suggested at the bottom of the output. | |||
# Complete the uplift request form. See the section below on how to submit the form. | |||
== Submit the Uplift Request Form == | == Submit the Uplift Request Form == | ||
Once your revision is created in Phabricator, you must complete the uplift request form. This form is a short questionnaire that helps Release Managers understand the reasoning behind the uplift request and the risk associated with this patch landing directly on a release repository without riding the release trains. | Once your revision is created in Phabricator, you must complete the uplift request assessment form. This form is a short questionnaire that helps Release Managers understand the reasoning behind the uplift request and the risk associated with this patch landing directly on a release repository without riding the release trains. | ||
# Go to the Lando revision in the uplift request stack. | |||
## Click "View Stack in Lando" on the right hand side of the Phabricator revision. | |||
## You can also swap the Phabricator domain with the Lando domain. For example, change https://phabricator.services.mozilla.com/D262303 to https://lando.moz.tools/D262303. | |||
# Click the "Uplift Assessment" button in the "Uplifts" section of the page.. [[File:Lando-Uplift-edit.png|thumb|Click the "Uplift Assessment" button.]] | |||
# Complete the form and submit. | |||
# Wait for Release Manager approval. | |||
A bot will automatically set Release Managers as reviewers for the patch after submitting the form. If the patch stack does not apply cleanly to the uplift train due to a merge conflict, you may need to resolve merge conflicts and re-submit the stack. The uplift request will sit in a pending state until a Release Manager approves, the Release Manager will land after approval. | |||
edits