Skip to content

Commit

Permalink
Merge pull request #919 from CecileRobertMichon/release-doc-fixes
Browse files Browse the repository at this point in the history
📖  Update release documentation
  • Loading branch information
k8s-ci-robot authored Sep 3, 2020
2 parents 056c641 + e79a274 commit ef306a4
Showing 1 changed file with 15 additions and 35 deletions.
50 changes: 15 additions & 35 deletions docs/releasing.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
# Release Process

## Change milestone
- Create a new GitHub milestone for the next release
- Change milestone applier so new changes can be applied to the appropriate release
- Open a PR in https://github.com/kubernetes/test-infra to change this [line](https://github.com/kubernetes/test-infra/blob/25db54eb9d52e08c16b3601726d8f154f8741025/config/prow/plugins.yaml#L344)
- Example PR: https://github.com/kubernetes/test-infra/pull/16827
- Example PR: https://github.com/kubernetes/test-infra/pull/16827

## Prepare branch, tag and release notes
- Identify a known good commit on the main branch
- Fast-forward the release branch to the selected commit. Always release from the release branch and not from master!
- Fast-forward the release branch to the selected commit. :warning: Always release from the release branch and not from master!
- `git checkout release-0.x`
- `git fetch upstream`
- `git merge --ff-only upstream/master`
- `git push`
- Create tag with git
- `export RELEASE_TAG=v0.4.6` (the tag of the release to be cut)
- `git tag -s ${RELEASE_TAG} -m "${RELEASE_TAG}"`
- -s creates a signed tag, you must have a GPG key [added to your GitHub account](https://docs.github.com/en/enterprise/2.16/user/github/authenticating-to-github/generating-a-new-gpg-key)
- `-s` creates a signed tag, you must have a GPG key [added to your GitHub account](https://docs.github.com/en/enterprise/2.16/user/github/authenticating-to-github/generating-a-new-gpg-key)
- `git push upstream ${RELEASE_TAG}`
- Update the file `metadata.yaml` if is a major or minor release
- `make release` from repo, this will create the release artifacts in the `out/` folder
- To install the `release-notes` tool, see https://github.com/kubernetes/release/blob/master/cmd/release-notes/README.md
- Install the `release-notes` tool according to [instructions](https://github.com/kubernetes/release/blob/master/cmd/release-notes/README.md)
- Export GITHUB_TOKEN
- Run the release-notes tool with the appropriate commits. Commits range from the first commit after the previous release to the new release commit.
```
Expand All @@ -32,24 +35,20 @@
- Images are built by the [post push images job](https://testgrid.k8s.io/sig-cluster-lifecycle-cluster-api-provider-azure#post-cluster-api-provider-azure-push-images)
- Create a PR in https://github.com/kubernetes/k8s.io to add the image and tag
- Example PR: https://github.com/kubernetes/k8s.io/pull/1030/files
- Location of image: https://console.cloud.google.com/gcr/images/s-staging-cluster-api-azure/GLOBAL/cluster-api-azure-controller?rImageListsize=30
- Location of image: https://console.cloud.google.com/gcr/images/k8s-staging-cluster-api-azure/GLOBAL/cluster-api-azure-controller?rImageListsize=30

## Release in GitHub
Create the GitHub release in the UI
- Create a draft release in GitHub and associate it with the tag that was created
- Copy paste the release notes
- Upload artifacts from the `out/` folder
- Upload [artifacts](#expected-artifacts) from the `out/` folder
- Publish release
- [Announce][release-announcement] the release

## Versioning

cluster-api-provider-azure follows the [semantic versionining][semver] specification.

As of this writing, we have not produced as a major or minor release.

Current pre-release versions can be expected to have breaking changes as we move towards declaring a public API version.

Example versions:
- Pre-release: `v0.1.1-alpha.1`
- Minor release: `v0.1.0`
Expand All @@ -58,40 +57,21 @@ Example versions:

## Expected artifacts

1. A container image containing the azure-provider manager binary
2. A release yaml file `infrastructure-components.yaml` containing the resources needed to deploy to Kubernetes
3. A `cluster-templates.yaml` for each supported flavor
1. A release yaml file `infrastructure-components.yaml` containing the resources needed to deploy to Kubernetes
2. A `cluster-templates.yaml` for each supported flavor
3. A `metadata.yaml` which maps release series to cluster-api contract version
4. Release notes

## Output locations

### Container image

The container image will live in the registry `quay.io/k8s/cluster-api-provider-azure`
under the image name `cluster-api-azure-controller:<tag>` where `<tag>` is
replaced by the version being released.

### Release Notes

Release notes are written by hand using the [release notes template][template] as a guide.

Generally, we'll make a [HackMD](https://hackmd.io/) and share the release note
responsibility for a few days in advance of the release.

The markdown is shared in the Kubernetes slack in the channel #cluster-api-azure.

## Communication

### Minor/Patch Releases
### Patch Releases

1. Announce the release in Kubernetes Slack on the #cluster-api-azure channel.
2. An announcement email is sent to `[email protected]` and `[email protected]` with the subject `[ANNOUNCE] cluster-api-provider-azure <version> has been released`

### Major Releases
### Minor/Major Releases

1. Follow the communications process for [pre-releases](#pre-releases)
2. An announcement email is sent to `[email protected]` with the subject `[ANNOUNCE] cluster-api-provider-azure <version> has been released`

2. An announcement email is sent to `[email protected]` and `[email protected]` with the subject `[ANNOUNCE] cluster-api-provider-azure <version> has been released`

[release-announcement]: #communication
[semver]: https://semver.org/#semantic-versioning-200
Expand Down

0 comments on commit ef306a4

Please sign in to comment.