Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 1 | # Merge Request Process |
| 2 | |
| 3 | [TOC] |
| 4 | |
| 5 | ## tl;dr |
| 6 | |
| 7 | * After branch point, all merges will be closely reviewed (either manually or |
| 8 | automatically) by TPMs and release owners. |
| 9 | * Requirements for approving merges are becoming more |
| 10 | stringent and scrutiny of merges gets higher as we get closer to the |
| 11 | stable launch date. Any necessary merges should be requested as early as |
| 12 | possible. |
| 13 | * All merge candidates should have full automated unit test coverage, have been deployed in Canary |
| 14 | for at least 24 hours, and full developer confidence that change will be |
| 15 | safe. |
| 16 | * When requesting merge review, please provide clear explanation for why a merge |
| 17 | is required, the criticality and impact of the issue, and ensure that |
| 18 | bug is correctly labeled for all impacted OS's. |
| 19 | |
| 20 | ## Introduction |
| 21 | |
| 22 | Chrome ships across multiple channels which are built from different release |
| 23 | branches. In general, changes should first land on trunk, be shipped and |
| 24 | verified in a canary release, and then promoted to our Dev, Beta, and Stable |
| 25 | channels overtime. However, due to many reasons and scenarios, it’s |
| 26 | possible that changes may miss branch date and require a merge post branch. |
| 27 | |
| 28 | **Merge**: any change that is cherry picked from trunk to a release branch. |
| 29 | |
| 30 | Please read overview of [Chrome Release |
| 31 | Cycle](https://chromium.googlesource.com/chromium/src.git/+/master/docs/process/release_cycle.md) |
| 32 | to understand in detail how the Chrome release cycle works and understand key |
| 33 | release concepts and terminology. Please read [Defining Release |
| 34 | Blockers](https://chromium.googlesource.com/chromium/src.git/+/master/docs/process/release_blockers.md) |
| 35 | to understand how issues/bugs are categorized as release blocking. |
| 36 | List of schedule and release owners can be found at [Chrome |
| 37 | Calendar](https://chromepmo.appspot.com/calendar) (Googlers only, opening to all in the near future). |
| 38 | |
| 39 | ## When to Request a Merge? |
| 40 | |
| 41 | This section will discuss when and what type of bugs can be merged based on |
| 42 | criticality of the issue. Please note that the scrutiny of merges |
| 43 | gets higher as we get closer to the stable launch date. Merges post |
| 44 | stable-rollout have a higher bar than merges prior to Stable. |
| 45 | |
| 46 |  |
| 47 | |
| 48 | **Phase 1: First Two Weeks After Branch (two weeks before beta promotion)** |
| 49 | |
| 50 | There are bugs and polish fixes that may not necessarily be considered |
| 51 | critical but help with the overall quality of the product. There are also |
| 52 | scenarios where dependent CL’s are missed by hours or days. To accommodate |
| 53 | these scenarios, merges will be considered for all polish bugs, regressions, |
| 54 | and release blocking bugs for the first two weeks after branch point. |
| 55 | Please note that merges will not be accepted for |
| 56 | implementing or enabling brand new features or functionality. Features |
| 57 | should already be complete. Merges will be reviewed manually and |
| 58 | automatically, depending on the type of change. |
| 59 | |
| 60 | GRD file changes are allowed only during this phase. If you have a critical |
| 61 | string change needed after this phase, please reach out to release owner or |
| 62 | Chrome TPMs. |
| 63 | |
| 64 | **Phase 2: First Four Weeks of Beta Rollout** |
| 65 | |
Alex Mineer | 40d33c3 | 2018-03-15 23:45:14 | [diff] [blame^] | 66 | During the first four weeks of Beta, merges should only be requested if: |
| 67 | |
| 68 | * The bug is considered either release blocking or |
| 69 | considered a high-impact regression |
| 70 | * The merge is related to a feature which (1) is entirely gated behind |
| 71 | a flag and (2) does not change user functionality in a substantial way |
| 72 | (e.g. minor tweaks and metrics code are OK, workflow changes are not) |
Abdul Syed | e21aa1b | 2017-07-06 17:13:06 | [diff] [blame] | 73 | |
| 74 | Security bugs should be consulted with |
| 75 | [[email protected]]([email protected]) to |
| 76 | determine criticality. If your issue does not meet the above criteria |
| 77 | but you would still like to consider this merge, please reach out to |
| 78 | release owner or TPMs with a detailed justification. |
| 79 | |
| 80 | **Phase 3: Last Two Weeks of Beta and Post Stable** |
| 81 | |
| 82 | During the last 2 weeks of Beta and after stable promotion, merges |
| 83 | should only be requested for critical, release blocking issues where the |
| 84 | fix is low complexity. |
| 85 | |
| 86 | Security bugs should be consulted with [chrome-security@]([email protected]) |
| 87 | to determine criticality. |
| 88 | |
| 89 | This table below provides key dates and phases as an example, for M61 release. |
| 90 | |
| 91 | Key Event | Date |
| 92 | ------- | -------- |
| 93 | Feature Freeze | June 23rd, 2017 |
| 94 | Branch Date | July 20th, 2017 |
| 95 | Branch Stabilization Period | July 20th to August 3rd, 2017 |
| 96 | Merge Reviews Phase 1 | July 20th to August 3rd, 2017 |
| 97 | Beta Rollout | August 3rd to September 12th 2017 |
| 98 | Merge Reviews Phase 2 | August 3rd to August 31st 2017 |
| 99 | Merge Reviews Phase 3 | August 31st 2017 and post Stable release |
| 100 | Stable Release | September 6th, 2017 + rollout schedule |
| 101 | |
| 102 | ## Merge Requirements |
| 103 | |
| 104 | Before requesting a merge, please ensure following conditions are met: |
| 105 | * **Full automated unit test coverage:** please add unit tests or |
| 106 | functional tests before requesting a merge. |
| 107 | * **Deployed in Canary for at least 24 hours:** change has to |
| 108 | be tested and verified in Canary or Dev, before requesting a |
| 109 | merge. Fix should be tested by either test engineering or the |
| 110 | original reporter of the bug. |
| 111 | * **Safe Merge:** Need full developer confidence that the |
| 112 | change will be a safe merge. Safe merge means that your |
| 113 | change will not introduce new regressions, or break |
| 114 | anything existing. If you are not confident that your |
| 115 | merge is fully safe, then reach out to TL or TPMs for |
| 116 | guidance. |
| 117 | |
| 118 | ## Merge Request |
| 119 | If the merge review requirements are met (listed in |
| 120 | section above) and your change fits one of the timelines |
| 121 | above, please go ahead and apply the |
| 122 | Merge-Request-[Milestone Number] label on the bug and |
| 123 | please provide clear justification in the bug. |
| 124 | |
| 125 | Please provide clear explanation for why a merge is required, what is the |
| 126 | criticality and impact of the issue, and ensure that bug is correctly |
| 127 | labeled for all impacted OS's. |
| 128 | |
| 129 | Approved merge requests in Phase 2 and Phase 3 will require a post mortem. |
| 130 | |
| 131 | Once Merge is approved, the bug will be marked with |
| 132 | Merge-Approved-[Milestone-Number] label. Please merge |
| 133 | **immediately after**. Please note that if change is not |
| 134 | merged in time after approval, it can be rejected. |
| 135 | |
| 136 | If merge is rejected, “Merge-Rejected” label will be |
| 137 | applied. If you think it’s important to consider the |
| 138 | change for merge and does not meet the criteria above, |
| 139 | please reach out to the release owners, TPMs or TLs for |
| 140 | guidance. |
| 141 | |
| 142 | ## Merge Reviews |
| 143 | |
| 144 | The release team has an automated process that helps |
| 145 | with the merge evaluation process. It will enforce many |
| 146 | of the rules listed in sections above. If the rules |
| 147 | above don’t pass, it will either auto-reject or flag |
| 148 | for manual review. Please allow up to 24 hours for the |
| 149 | automated process to take effect. |
| 150 | |
| 151 | Manual merge reviews will be performed by release |
| 152 | owners and TPMs. |