Skip to content

Commit d2b6d57

Browse files
lukeheathgeorgekarrvSampfluger88
authored
Update engineering handbook to adjust patch release process (#17571)
This outlines a new patch branching strategy to avoid the conflicts we've been running into recently. This will introduce more friction in the form of two PRs for released bug fixes during patch weeks. The benefit is that we won't have to deal with merge conflicts when we're cherry-picking commits into the patch branch, which sometimes becomes a big distraction for the team. We also found ourselves in a situation with 4.46.3 where we couldn't release a fix without rewriting it because it had been built on top of feature code that was not included in the patch. That was the motivation to make this change. --------- Co-authored-by: George Karr <[email protected]> Co-authored-by: Sam Pfluger <[email protected]>
1 parent b9c3d3a commit d2b6d57

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

handbook/engineering/README.md

+17-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ The metrics are:
2727

2828
Each week these are tracked and shared in the weekly KPI sheet by Luke Heath.
2929

30-
#### Create an engineering-initiated story
30+
### Create an engineering-initiated story
3131
Engineering-initiated stories are types of user stories created by engineers to make technical changes to Fleet. Technical changes should improve the user experience or contributor experience. For example, optimizing SQL that improves the response time of an API endpoint improves user experience by reducing latency. A script that generates common boilerplate, or automated tests to cover important business logic, improves the quality of life for contributors, making them happier and more productive, resulting in faster delivery of features to our customers.
3232

3333
It is important to frame engineering-initiated user stories the same way we frame all user stories. Stay focused on how this technical change will drive value for our users.
@@ -42,6 +42,20 @@ If there are no product changes, and the DRI decides to prioritize the story, th
4242

4343
> We prefer the term engineering-initiated stories over technical debt because the user story format helps keep us focused on our users and contributors.
4444
45+
### Manage release branches
46+
Every three weeks, release a minor version of Fleet from the `main` branch.
47+
48+
Every week between minor releases, release a patch release with fixes for released bugs.
49+
50+
The DRI for publishing a release is responsible for creating the next patch branch. Create a patch branch off the latest tagged release of Fleet. Submit PRs for released bug fixes directly to the target patch branch to avoid merge conflicts later in the release cycle. After merging into the patch branch, submit another PR to `main` containing the same fix and resolve any merge conflicts.
51+
52+
> It is the responsibility of the person merging the fix into the patch branch to make sure the fix is also merged into `main`.
53+
54+
### Fix a bug
55+
If the bug is labeled `~unreleased bug`, branch off and put your PR into `main`.
56+
57+
If the bug is labeled `~released bug`, branch off and put your PR into the upcoming patch branch `patch-fleet-v4.x.x`. If you are unsure which branch to use, confirm with your manager. Don't forget to also submit a second PR to `main` after the bug is confirmed fixed.
58+
4559
### Begin a merge freeze
4660
To ensure release quality, Fleet has a freeze period for testing beginning the Tuesday before the release at 9:00 AM Pacific. Effective at the start of the freeze period, new feature work will not be merged into `main`.
4761

@@ -156,6 +170,8 @@ Immediately after publishing a new release, we close out the associated GitHub i
156170

157171
12. Announce that `main` is unfrozen and the milestone has been closed in #help-engineering.
158172

173+
13. Create a branch for the next patch and push it to GitHub. For example, if you release `fleet-v4.44.0`, create a branch called `patch-fleet-v4.44.1`.
174+
159175
### Update the Fleet releases calendar
160176
The [Fleet releases Google calendar](https://calendar.google.com/calendar/embed?src=c_v7943deqn1uns488a65v2d94bs%40group.calendar.google.com&ctz=America%2FChicago) is kept up-to-date by the [release ritual DRI](https://fleetdm.com/handbook/engineering#rituals). Any change to targeted release dates is reflected on this calendar.
161177

0 commit comments

Comments
 (0)