Basing this action on push to `chart-*` tags doesn't work: the action itself creates the new release tag, so trying to push the changes to a tag ends up with the releaser comparing the changes to themself (and failing). This also renames the chart from "descheduler" to "descheduler-helm-chart", to avoid confusion with automated releases.
4.6 KiB
Release Guide
Container Image
Semi-automatic
- Make sure your repo is clean by git's standards
- Create a release branch
git checkout -b release-1.18(not required for patch releases) - Push the release branch to the descheuler repo and ensure branch protection is enabled (not required for patch releases)
- Tag the repository from the
masterbranch (from therelease-1.18branch for a patch release) and push the tagVERSION=v0.18.0 git tag -m $VERSION $VERSION; git push origin $VERSION - Publish a draft release using the tag you just created
- Perform the image promotion process
- Publish release
- Email
kubernetes-sig-scheduling@googlegroups.comto announce the release
Manual
- Make sure your repo is clean by git's standards
- Create a release branch
git checkout -b release-1.18(not required for patch releases) - Push the release branch to the descheuler repo and ensure branch protection is enabled (not required for patch releases)
- Tag the repository from the
masterbranch (from therelease-1.18branch for a patch release) and push the tagVERSION=v0.18.0 git tag -m $VERSION $VERSION; git push origin $VERSION - Checkout the tag you just created and make sure your repo is clean by git's standards
git checkout $VERSION - Build and push the container image to the staging registry
VERSION=$VERSION make push - Publish a draft release using the tag you just created
- Perform the image promotion process
- Publish release
- Email
kubernetes-sig-scheduling@googlegroups.comto announce the release
Notes
It's important to create the tag on the master branch after creating the release-* branch so that the Helm releaser-action can work. It compares the changes in the action-triggering branch to the latest tag on that branch, so if you tag before creating the new branch there will be nothing to compare and it will fail (creating a new release branch usually involves no code changes). For this same reason, you should also tag patch releases (on the release-* branch) after pushing changes (if those changes involve bumping the Helm chart version).
See post-descheduler-push-images dashboard for staging registry image build job status.
View the descheduler staging registry using this URL in a web browser
or use the below gcloud commands.
List images in staging registry.
gcloud container images list --repository gcr.io/k8s-staging-descheduler
List descheduler image tags in the staging registry.
gcloud container images list-tags gcr.io/k8s-staging-descheduler/descheduler
Get SHA256 hash for a specific image in the staging registry.
gcloud container images describe gcr.io/k8s-staging-descheduler/descheduler:v20200206-0.9.0-94-ge2a23f284
Pull image from the staging registry.
docker pull gcr.io/k8s-staging-descheduler/descheduler:v20200206-0.9.0-94-ge2a23f284
Helm Chart
Helm chart releases are managed by a separate set of git tags that are prefixed with descheduler-helm-chart-*. Example git tag name is descheduler-helm-chart-0.18.0.
Released versions of the helm charts are stored in the gh-pages branch of this repo. The chart-releaser-action GitHub Action
is setup to build and push the helm charts to the gh-pages branch when changes are pushed to a release-* branch.
The major and minor version of the chart matches the descheduler major and minor versions. For example descheduler helm chart version helm-descheduler-chart-0.18.0 corresponds to descheduler version v0.18.0. The patch version of the descheduler helm chart and the patcher version of the descheduler will not necessarily match. The patch version of the descheduler helm chart is used to version changes specific to the helm chart.
- Merge all helm chart changes into the master branch before the release is tagged/cut
- Ensure that
appVersionin filecharts/descheduler/Chart.yamlmatches the descheduler version(novprefix) - Ensure that
versionin filecharts/descheduler/Chart.yamlhas been incremented. This is the chart version.
- Ensure that
- Make sure your repo is clean by git's standards
- Follow the release-branch or patch release tagging pattern from the above section.
- Verify the new helm artifact has been successfully pushed to the
gh-pagesbranch