- A majority of maintainers must agree on a single commit SHA for the release. The agreement should be documented in the release notes.
- The maintainers will match the commit SHA to the release
major.minor.patch
in the release notes - The maintainers will agree on a changelog proposal that MUST be in a PR prior to the release.
- The main
README.md
must also reflect the new release. Ideally this should be in the same PR.
HISTORY.md
serves as our official changelog.- Before the release, the maintainers had opened a PR with the proposed changelog. This should now be merged.
- Darwin binary (generated)
- Linux binary (generated)
- Source code (zip)
- Source code (tar.gz)
- Following the documentation we must release a compatible homebrew formulae with the release.
- This should be done at the same time as the release, and we will iterate on how to improve timing of this.
- Build and release new AMI
- Build and release new nodeup binary to S3
- Build and release new kops binary to S3
- Build and release new protokube docker image
- Build and release new dnscontroller docker image
- Need to pull a tag for channels
- Merge the
master
branch into therelease
branch. More information - Create a
tag
from the newly mergedrelease
branch.
- Maintainers should now give the repository a once over to validate everything looks in place.
- A majority of the maintainers must run the recently released code to verify success.
- Announce the new release on twitter under the k8sops account
- Announce the new release on slack
- Validate the release milestone has been cleaned in github.
- All remaining issues need to be bumped to the backlog, or the next milestone
The core maintainers of kops are in agreement that we should try to keep an agile, and effective release cadence. Our goal should be to release as often as possible, while keeping our code rigid and reliable.
Under no circumstance should we rush a release and risk releasing immature code.
We should lock down the master
branch on a given date. The lockdown is designed to give the maintainers a grasp on what is and isn't in the release, and provide a deadline for new features.
Kops uses semantic versioning to version the code base.
major.minor.patch
Our goal is to keep major.minor
in sync (within reason) to the Kubernetes codebase. But to release our own patch versions as needed.
We develop on the master branch. The master branch is expected to build and generally to work,
but has not necessarily undergone the more complete validation that a release would. The release
branch is expected to always be stable.
We tag releases as needed from the release
branch and upload them to github.
We occasionally batch merge from the master branch to the release
branch. We don't maintain
multiple release branches as we expect most people to upgrade kops to the latest version. We also
don't (yet) do lots of cherry-picking for that reason.
The intention is that this allows for development velocity, while also allowing for stable releases.