Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update release process #873

Merged
merged 1 commit into from
Mar 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 80 additions & 11 deletions docs/release_process.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,20 @@ These are notes to help follow a consistent release process. See something
important missing? Please submit a pull request to add anything else that would
be useful!

## Prerequisites

Ensure access to the container image [staging registry](https://console.cloud.google.com/gcr/images/k8s-staging-npd/global/node-problem-detector).
Add email to `k8s-infra-staging-npd` group in sig-node [groups.yaml](https://github.com/kubernetes/k8s.io/blob/main/groups/sig-node/groups.yaml).
See example https://github.com/kubernetes/k8s.io/pull/1599.

## Preparing for a release

There are a few steps that should be taken prior to creating the actual release
itself.

1. Collect changes since last release. This can be done by looking directly at
merged commit messages (``git log [last_release_tag]...HEAD``), or by
viewing the changes on GitHub ([example:
https://github.com/kubernetes/node-problem-detector/compare/v0.8.6...master](https://github.com/kubernetes/node-problem-detector/compare/v0.8.6...master)).
viewing the changes on GitHub (example: https://github.com/kubernetes/node-problem-detector/compare/v0.8.15...master).

2. Based on the changes to be included in the release, determine what the next
release number should be. We strive to follow [SemVer](https://semver.org/)
Expand All @@ -23,25 +28,89 @@ itself.

## Create release

Once changes have been merged to the CHANGELOG, perform the actual release via
GitHub. When creating the release, make sure to include the following in the
body of the release:
### Create the new version tag

#### Option 1
```
# Use v0.8.17 as an example.
git clone [email protected]:kubernetes/node-problem-detector.git
cd node-problem-detector/
git tag v0.8.17
git push origin v0.8.17
```

#### Option 2
Update [version.txt](https://github.com/kubernetes/node-problem-detector/blob/master/version.txt)
(example https://github.com/kubernetes/node-problem-detector/pull/869).

### Build and push artifacts
This step builds the NPD into container files and tar files.
- The container file is pushed to the [staging registry](https://console.cloud.google.com/gcr/images/k8s-staging-npd/global/node-problem-detector).
You will promote the new image to registry.k8s.io later.
- The tar files are generated locally. You will upload those to github in the
release note later.

**Note: You need the access mentioned in the [prerequisites](#prerequisites)
section to perform steps in this section.**

```
# One-time setup
sudo apt-get install libsystemd-dev gcc-aarch64-linux-gnu

cd node-problem-detector
make push

# Get SHA256 of the tar files. For example
sha256sum node-problem-detector-v0.8.17-linux_amd64.tar.gz
sha256sum node-problem-detector-v0.8.17-linux_arm64.tar.gz
sha256sum node-problem-detector-v0.8.17-windows_amd64.tar.gz

# Get MD5 of the tar files. For example
md5sum node-problem-detector-v0.8.17-linux_amd64.tar.gz
md5sum node-problem-detector-v0.8.17-linux_arm64.tar.gz
md5sum node-problem-detector-v0.8.17-windows_amd64.tar.gz

# Verify container image in staging registry and get SHA256.
docker pull gcr.io/k8s-staging-npd/node-problem-detector:v0.8.17
docker image ls gcr.io/k8s-staging-npd/node-problem-detector --digests
```

### Promote new NPD image to registry.k8s.io
1. Get the SHA256 from the new NPD image from the [staging registry](https://console.cloud.google.com/gcr/images/k8s-staging-npd/global/node-problem-detector)
or previous step.
2. Promote the NPD image to registry.k8s.io ([images.yaml](https://github.com/kubernetes/k8s.io/blob/main/registry.k8s.io/images/k8s-staging-npd/images.yaml), example https://github.com/kubernetes/k8s.io/pull/6523).
3. Verify the container image.
```
docker pull registry.k8s.io/node-problem-detector/node-problem-detector:v0.8.17
docker image ls registry.k8s.io/node-problem-detector/node-problem-detector:v0.8.17
```

### Create the release note

Go to https://github.com/kubernetes/node-problem-detector/releases, draft a new
release note and publish. Make sure to include the following in the body of the
release note:

1. For convenience, add a link to easily view the changes since the last
release (e.g.
[https://github.com/kubernetes/node-problem-detector/compare/v0.8.5...v0.8.6](https://github.com/kubernetes/node-problem-detector/compare/v0.8.5...v0.8.6)).
[https://github.com/kubernetes/node-problem-detector/compare/v0.8.15...v0.8.17](https://github.com/kubernetes/node-problem-detector/compare/v0.8.15...v0.8.17)).

2. There is no need to duplicate everything from the CHANGELOG, but include the
most significant things so someone just viewing the release entry will have
an idea of what it includes.

3. Provide a link to the new image release (e.g. `Image:
registry.k8s.io/node-problem-detector/node-problem-detector:v0.8.6`)
registry.k8s.io/node-problem-detector/node-problem-detector:v0.8.17`)

4. Upload the tar files built from [pevious step](#build-and-push-artifacts),
and include the SHA and MD5.

## Post release steps

1. Update image version in
[deployment/node-problem-detector.yaml](https://github.com/kubernetes/node-problem-detector/blob/422c088d623488be33aa697588655440c4e6a063/deployment/node-problem-detector.yaml#L32).
1. Update image version in node-problem-detector repo, so anyone deploying
directly from the repo deployment file will get the newest image deployed.
Example https://github.com/kubernetes/node-problem-detector/pull/879.

Update the image version in the deployment file so anyone deploying directly
from the repo deployment file will get the newest image deployed.
2. Update the NPD version in [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
repo, so that kubernetes clusters use the new NPD version. Example
https://github.com/kubernetes/kubernetes/pull/123740.