Skip to content

Commit

Permalink
Update engineering handbook to adjust patch release process (#17571)
Browse files Browse the repository at this point in the history
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 <georgekarrv@users.noreply.github.com>
Co-authored-by: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com>
  • Loading branch information
3 people authored Mar 18, 2024
1 parent b9c3d3a commit d2b6d57
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion handbook/engineering/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The metrics are:

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

#### Create an engineering-initiated story
### Create an engineering-initiated story
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.

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.
Expand All @@ -42,6 +42,20 @@ If there are no product changes, and the DRI decides to prioritize the story, th

> We prefer the term engineering-initiated stories over technical debt because the user story format helps keep us focused on our users and contributors.
### Manage release branches
Every three weeks, release a minor version of Fleet from the `main` branch.

Every week between minor releases, release a patch release with fixes for released bugs.

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.

> It is the responsibility of the person merging the fix into the patch branch to make sure the fix is also merged into `main`.
### Fix a bug
If the bug is labeled `~unreleased bug`, branch off and put your PR into `main`.

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.

### Begin a merge freeze
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`.

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

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

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`.

### Update the Fleet releases calendar
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.

Expand Down

0 comments on commit d2b6d57

Please sign in to comment.