2016-08-10 03:06:04 +08:00
# Release Process
2017-06-17 01:25:46 +08:00
The Kubespray Project is released on an as-needed basis. The process is as follows:
2016-08-10 03:06:04 +08:00
1. An issue is proposing a new release with a changelog since the last release
2019-12-10 20:41:29 +08:00
2. At least one of the [approvers ](OWNERS_ALIASES ) must approve this release
2020-04-01 22:29:28 +08:00
3. The `kube_version_min_required` variable is set to `n-1`
4. An approver creates [new release in GitHub ](https://github.com/kubernetes-sigs/kubespray/releases/new ) using a version and tag name like `vX.Y.Z` and attaching the release notes
5. An approver creates a release branch in the form `release-X.Y`
6. The corresponding version of [quay.io/kubespray/kubespray:vX.Y.Z ](https://quay.io/repository/kubespray/kubespray ) docker image is built and tagged
7. The `KUBESPRAY_VERSION` variable is updated in `.gitlab-ci.yml`
8. The release issue is closed
9. An announcement email is sent to `kubernetes-dev@googlegroups.com` with the subject `[ANNOUNCE] Kubespray $VERSION is released`
10. The topic of the #kubespray channel is updated with `vX.Y.Z is released! | ...`
2017-01-11 18:18:21 +08:00
2020-04-01 22:29:28 +08:00
## Major/minor releases and milestones
2017-01-11 18:18:21 +08:00
2020-04-01 22:29:28 +08:00
* For major releases (vX.Y) Kubespray maintains one branch (`release-X.Y`). Minor releases (vX.Y.Z) are available only as tags.
2019-12-10 20:41:29 +08:00
* Security patches and bugs might be backported.
2017-01-11 18:18:21 +08:00
2020-04-01 22:29:28 +08:00
* Fixes for major releases (vX.Y) and minor releases (vX.Y.Z) are delivered
2017-01-12 18:22:22 +08:00
via maintenance releases (vX.Y.Z) and assigned to the corresponding open
2020-04-01 22:29:28 +08:00
[GitHub milestone ](https://github.com/kubernetes-sigs/kubespray/milestones ).
That milestone remains open for the major/minor releases support lifetime,
which ends once the milestone is closed. Then only a next major or minor release
can be done.
2017-01-11 18:18:21 +08:00
2020-04-01 22:29:28 +08:00
* Kubespray major and minor releases are bound to the given `kube_version` major/minor
2017-01-12 18:22:22 +08:00
version numbers and other components' arbitrary versions, like etcd or network plugins.
2020-04-01 22:29:28 +08:00
Older or newer component versions are not supported and not tested for the given
release (even if included in the checksum variables, like `kubeadm_checksums` ).
2017-01-11 18:18:21 +08:00
2017-06-17 01:25:46 +08:00
* There is no unstable releases and no APIs, thus Kubespray doesn't follow
2020-02-14 06:46:17 +08:00
[semver ](https://semver.org/ ). Every version describes only a stable release.
2017-01-12 18:22:22 +08:00
Breaking changes, if any introduced by changed defaults or non-contrib ansible roles'
playbooks, shall be described in the release notes. Other breaking changes, if any in
the contributed addons or bound versions of Kubernetes and other components, are
2017-06-17 01:25:46 +08:00
considered out of Kubespray scope and are up to the components' teams to deal with and
2017-01-12 18:22:22 +08:00
document.
2020-04-01 22:29:28 +08:00
* Minor releases can change components' versions, but not the major `kube_version` .
Greater `kube_version` requires a new major or minor release. For example, if Kubespray v2.0.0
is bound to `kube_version: 1.4.x` , `calico_version: 0.22.0` , `etcd_version: v3.0.6` ,
then Kubespray v2.1.0 may be bound to only minor changes to `kube_version` , like v1.5.1
2017-01-12 18:22:22 +08:00
and *any* changes to other components, like etcd v4, or calico 1.2.3.
2020-04-01 22:29:28 +08:00
And Kubespray v3.x.x shall be bound to `kube_version: 2.x.x` respectively.