Generic Release Process
This process applies to all releases other than feature releases, this includes:
- Stable releases
If you intent to release a new feature release, see the Feature Release Process section instead.
Note
The following commands have been validated when ran in the VM used in the Cilium development process. See Development Setup for detailed instructions about setting up said VM.
GitHub template process
- File a new release issue on GitHub, updating the title to reflect the version that will be released.
- Follow the steps in the issue template to prepare the release.
Reference steps for the template
Ensure that the necessary backports have been completed and merged. See Backporting process.
- Update GitHub project and create
vX.Y.Z+1
project if applicable. - Update PRs / issues that were added to the
vX.Y.Z
project, but didn’t make it into this release into thevX.Y.Z+1
project.
- Update GitHub project and create
Create a new project named “X.Y.Z+1” to automatically track the backports for that particular release. Direct Link:
Checkout the desired stable branch and pull it:
git checkout v1.0; git pull
Run the release preparation script:
contrib/release/start-release.sh
Note
Check to see if the
AUTHORS
file has any formatting errors (for instance, indentation mismatches) as well as duplicate contributor names, and correct them accordingly.Set the right version for the
CustomResourceDefinitionSchemaVersion
in thepkg/k8s/client
by following these instructions:Run
./Documentation/check-crd-compat-table.sh vX.Y
Add all modified files using
git add
and create a commit with the titlePrepare for release v1.0.3
.Prepare a pull request for the changes:
contrib/release/submit-release.sh
Follow standard procedures to get the aforementioned PR merged into the desired stable branch. See Submitting a pull request for more information about this process.
Checkout out the stable branch and pull your merged changes:
git checkout v1.0; git pull
Create and push release tags to GitHub:
contrib/release/tag-release.sh
Note
There are two tags that correspond to the same release because GitHub recommends using
vx.y.z
for release version formatting, and ReadTheDocs, which hosts the Cilium documentation, requires the version to be in formatx.y.z
For more information about how ReadTheDocs does versioning, you can read their Versions Documentation.Approve the release from the Release Image build UI.
Once the release images are pushed, pull the image digests and prepare a PR with the official release image digests:
contrib/release/post-release.sh <URL of workflow run from the release link above>
This will leave a file with the format
digest-vX.Y.Z.txt
in the local directory which can be used to prepare the release in the next step.Prepare Helm changes for the release using the Cilium Helm Charts Repository and push the changes into that repository (not the main cilium repository):
./prepare_artifacts.sh /path/to/cilium/repository/checked/out/to/release/commit
git push
Prepare Helm changes for the dev version of the branch using the Cilium Helm Charts Repository for the vX.Y helm charts, and push the changes into that repository (not the main cilium repository):
In the
cilium/cilium
repository:git checkout vx.y -b vx.z-dev
- Change the
VERSION
file tox.y-dev
- Run
make -C install/kubernetes
In the
cilium/charts
repository:./prepare_artifacts.sh /path/to/cilium/repository/checked/out/to/release/commit
git push
After pushing you can revert all the changes made in the local branch
x.y-dev
fromcilium/cilium
.Wait for the Cilium Helm Charts Workflow to successfully deploy a cluster using the new Helm charts.
-
Following the steps above, the release draft will already be prepared. Preview the description and then publish the release.
- Copy the official docker manifests for the release from the previous step into the end of the Github release announcement.
Announce the release in the
#general
channel on Slack. Sample text::cilium-new: **Announcement:** Cilium vX.Y.Z has been released :tada:
<If security release or major bugfix, short summary of fix here>
For more details, see the release notes:
https://github.com/cilium/cilium/releases/tag/vX.Y.Z
Create a new git branch based on the master branch to update
README.rst
:$ git checkout -b pr/bump-readme-vX.Y.Z origin/master
$ contrib/release/bump-readme.sh
$ # (Commit changes & submit PR)
Bump the version of Cilium used in the Cilium upgrade tests to use the new release
Please reach out on the
#development
channel on Slack for assistance with this task.Update the
stable
tags forcilium
,cilium-operator
,cilium-operator-aws
,cilium-operator-azure
,cilium-operator-generic
,cilium-docker-plugin
,hubble-relay
andclustermesh-apiserver
on DockerHub, for the latest version of Cilium. For example, if the latest version is1.8
, then for all patch releases on the1.8
line, this step should be performed. Once1.9
is out for example, then this is no longer required for1.8
or earlier releases.contrib/release/bump-docker-stable.sh X.Y.Z
Check if all docker images are available before announcing the release:
make -C install/kubernetes/ check-docker-images
Update the following external tools and guides to point to the released Cilium version. This step is only required on a new minor release like going from
1.8
to1.9
.