Skip to content

Commit

Permalink
docs: add release cadence docs, and tasks for notifying after release (
Browse files Browse the repository at this point in the history
…#823)

Signed-off-by: Xander Grzywinski <[email protected]>
  • Loading branch information
Xander Grzywinski authored Aug 7, 2023
1 parent c17e187 commit 31ecfb6
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 1 deletion.
67 changes: 67 additions & 0 deletions docs/docs/release-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Release Management

## Overview

This document describes Eraser project release management, which includes release versioning, supported releases, and supported upgrades.

## Legend

- **X.Y.Z** refers to the version (git tag) of Eraser that is released. This is the version of the Eraser images and the Chart version.
- **Breaking changes** refer to schema changes, flag changes, and behavior changes of Eraser that may require a clean installation during upgrade, and it may introduce changes that could break backward compatibility.
- **Milestone** should be designed to include feature sets to accommodate 2 months release cycles including test gates. GitHub's milestones are used by maintainers to manage each release. PRs and Issues for each release should be created as part of a corresponding milestone.
- **Patch releases** refer to applicable fixes, including security fixes, may be backported to support releases, depending on severity and feasibility.
- **Test gates** should include soak tests and upgrade tests from the last minor version.

## Release Versioning

All releases will be of the form _vX.Y.Z_ where X is the major version, Y is the minor version and Z is the patch version. This project strictly follows semantic versioning.

The rest of the doc will cover the release process for the following kinds of releases:

**Major Releases**

No plan to move to 2.0.0 unless there is a major design change like an incompatible API change in the project

**Minor Releases**

- X.Y.0-alpha.W, W >= 0 (Branch : main)
- Released as needed before we cut a beta X.Y release
- Alpha release, cut from master branch
- X.Y.0-beta.W, W >= 0 (Branch : main)
- Released as needed before we cut a stable X.Y release
- More stable than the alpha release to signal users to test things out
- Beta release, cut from master branch
- X.Y.0-rc.W, W >= 0 (Branch : main)
- Released as needed before we cut a stable X.Y release
- soak for ~ 2 weeks before cutting a stable release
- Release candidate release, cut from master branch
- X.Y.0 (Branch: main)
- Released every ~ 3 months
- Stable release, cut from master when X.Y milestone is complete

**Patch Releases**

- Patch Releases X.Y.Z, Z > 0 (Branch: release-X.Y, only cut when a patch is needed)
- No breaking changes
- Applicable fixes, including security fixes, may be cherry-picked from master into the latest supported minor release-X.Y branches.
- Patch release, cut from a release-X.Y branch

## Supported Releases

Applicable fixes, including security fixes, may be cherry-picked into the release branch, depending on severity and feasibility. Patch releases are cut from that branch as needed.

We expect users to stay reasonably up-to-date with the versions of Eraser they use in production, but understand that it may take time to upgrade. We expect users to be running approximately the latest patch release of a given minor release and encourage users to upgrade as soon as possible.

We expect to "support" n (current) and n-1 major.minor releases. "Support" means we expect users to be running that version in production. For example, when v1.2.0 comes out, v1.0.x will no longer be supported for patches, and we encourage users to upgrade to a supported version as soon as possible.

## Supported Kubernetes Versions

Eraser is assumed to be compatible with the [current Kubernetes Supported Versions](https://kubernetes.io/releases/patch-releases/#detailed-release-history-for-active-branches) per [Kubernetes Supported Versions policy](https://kubernetes.io/releases/version-skew-policy/).

For example, if Eraser _supported_ versions are v1.2 and v1.1, and Kubernetes _supported_ versions are v1.22, v1.23, v1.24, then all supported Eraser versions (v1.2, v1.1) are assumed to be compatible with all supported Kubernetes versions (v1.22, v1.23, v1.24). If Kubernetes v1.25 is released later, then Eraser v1.2 and v1.1 will be assumed to be compatible with v1.25 if those Eraser versions are still supported at that time.

If you choose to use Eraser with a version of Kubernetes that it does not support, you are using it at your own risk.

## Acknowledgement

This document builds on the ideas and implementations of release processes from projects like Kubernetes and Helm.
7 changes: 6 additions & 1 deletion docs/docs/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,9 @@ title: Releasing

## Publishing

1. GitHub Action will create a new release, review and edit it at https://github.com/eraser-dev/eraser/releases
1. GitHub Action will create a new release, review and edit it at https://github.com/eraser-dev/eraser/releases

## Notifying

1. Send an email to the [Eraser mailing list](https://groups.google.com/g/eraser-dev) announcing the release, with links to GitHub.
2. Post a message on the [Eraser Slack channel](https://kubernetes.slack.com/archives/C03Q8KV8YQ4) with the same information.

0 comments on commit 31ecfb6

Please sign in to comment.