This document outlines the process for creating a new official release for the DRA Driver for NVIDIA GPUs. The repository uses an automated release pipeline to handle branching and tagging.
- Create a new GitHub Issue titled "Release vX.Y.Z" to track the release process.
- In the issue, gather a preliminary changelog by reviewing commits since the last release.
We will add automation to streamline this process, and document how to use in this document. If the automation is unavailable, or if we need a manually curated list,
a good starting point is
git log --oneline <last-tag>..HEAD.
Instead of manually creating branches and tags, the release is triggered by a pull request:
- The Release Shepherd creates a new PR targeting the
mainbranch (for minor/major releases) or arelease-*branch (for patch releases). - In this PR:
- Update the
VERSIONfile at the repository root to the new semantic version (e.g.,v0.5.0). - Update any documentation, examples, or manifests as needed for the release.
- Update the
- Ensure all tests are passing.
- Once the PR is merged, the Release Automation GitHub Action will trigger.
The automation will:
- Validate the semantic version format.
- Create and push a git tag
vX.Y.Zat the merged commit. - If it is a minor or major release (e.g.
v0.2.0), it will automatically branch offrelease-vX.Y.Zand push it to the repository.
After the release tag is pushed, the images must be built, pushed to staging, and then promoted to the official registry.
- Monitor the image push job status on Testgrid (sig-node-image-pushes).
- The Prow job configuration is in test-infra if troubleshooting is needed.
- Verify the images exist in the staging repository:
skopeo list-tags docker://us-central1-docker.pkg.dev/k8s-staging-images/dra-driver-nvidia/dra-driver-nvidia-gpu | grep vX.Y.Z
- Identify the image digests:
skopeo inspect docker://us-central1-docker.pkg.dev/k8s-staging-images/dra-driver-nvidia/dra-driver-nvidia-gpu:vX.Y.Z --format '{{.Digest}}' - Fork kubernetes/k8s.io.
- Update
registry.k8s.io/images/k8s-staging-nv-dra-driver-gpu/images.yamlwith the new digests and tags (sample PR). - Submit the PR to
kubernetes/k8s.io. Once it is approved and merged automation will schedule the promotion.
Before publishing the release, verify the images are available at k8s-registry:
- Ensure the images are available at
registry.k8s.io:skopeo list-tags docker://registry.k8s.io/dra-driver-nvidia/dra-driver-nvidia-gpu | grep vX.Y.Z
- Checkout the release tag locally
git show vX.Y.Z -q # to verify the right tag and commit git checkout vX.Y.Z - Generate the release manifests:
rm -rf ./dist REGISTRY=registry.k8s.io/dra-driver-nvidia TAG=vX.Y.Z make manifests ls ./dist # to confirm the generated artifacts - Run a local E2E test in Kind (see references in
README.md) using the generated manifests from thedist/directory to ensure they pull the correct images and function as expected.
- Go to the Releases page on GitHub.
- Find the new tag and click "Edit tag" (or "Draft a new release" and select the tag).
- Paste the final changelog into the release description.
- Upload the generated manifests (
dist/install.yaml) as release artifacts. - Publish the release.
- Close the release tracking issue.
- Announce the release on the
sig-nodemailing list. The subject should be:[ANNOUNCE] DRA Driver for NVIDIA GPUs vX.Y.Z is released.