11 KiB
Releases
The release processes that follow apply to the Grafana Mimir Helm chart.
Schedule
The release schedule follows the Grafana Mimir and Grafana Enterprise Metrics (GEM) releases so that a new Helm chart release will include both. This usually happens within 2 weeks of the Mimir release. For the Mimir release schedule consult the Mimir RELEASE.md.
Security updates of Mimir or GEM will also trigger a Helm chart release. The Helm chart can be released independently of Mimir and GEM, but this is only done if there's some urgent update needed.
There are weekly releases with the latest Mimir and GEM build, but they are intended for testing purposes only, not production. Weekly releases are marked with a development version and helm will ignore them unless the --devel flag is used on the command line.
Before you begin
One of the following scenarios must apply:
- Both Mimir and GEM have container images, whose image versions match. The image versions have the same weekly, RC, and final versions. These versions are released to Docker Hub.
- The Mimir and GEM image versions do not match, but there are no breaking changes between them because all of the shared configuration parameters behave the same way. For example, because GEM contains a bugfix, the version of GEM is
2.5.1and the version of Mimir is2.5.0.
Release process for a weekly release
Each weekly release is created automatically, but you need to approve and merge it manually. For an example, see PR 4600.
The Chart.yaml file requires semantic versioning.
Weekly releases have the version x.y.z-weekly.w, for example 3.1.0-weekly.196, where 196 represents an incrementing week number.
Note
: You must precede the week number (such as
196) with a dot (.).
Release process for a release candidate
-
Determine the Helm chart version number.
The Chart.yaml file requires semantic versioning:
- Release candidates have the version
x.y.z-rc.w, for example3.1.0-rc.7.
Note
: You must precede the release candidate number (such as
7) with a dot (.). - Release candidates have the version
-
Prepare changelog.
- Create a PR, whose target is
main, that updates the Helm chart changelog, and move any## main / unreleaseditems under this release’s version.
Note: If there are any deprecated features that should be removed in this release, then verify that they have been removed, and move their deprecation notices into the section for this release.
-
Have the PR reviewed by a maintainer.
-
Merge the PR upon approval.
- Create a PR, whose target is
-
Create a release branch.
-
Create (if the branch is not created yet), switch to and push a branch starting from the commit created by the prepare changelog PR and name it
mimir-distributed-release-x.y.For example,
mimir-distributed-release-4.5for any4.5.xrelease. -
Push the branch to origin without any commit added.
-
Once the branch is pushed, all changes to
mimir-distributed-release-x.ybranch must be done through PR.
-
-
Create a branch from release branch if it hasn't been created yet, to update Mimir/GEM image and helm chart version .
For example
user/update-mimir-distributed-release-x.y. -
Update versions and links in the
user/update-mimir-distributed-release-x.ybranch.-
Set the image versions in values.yaml, as needed:
-
image.tag(Mimir) -
enterprise.image.tag(GEM)Note: Unlike the Mimir image tags, GEM image tags start with
v. For example,v2.6.0instead of2.6.0.
-
-
Set the
versionfield, in the Chart.yaml file, to the desired release candidate version.For example,
4.5.0-rc.0.Note: Once this change is merged to
mimir-distributed-x.ybranch, it will trigger the release process GitHub Action. Unless you want to release final release, make sure to append the correct rc version. -
Set the
appVersionfield, in the Chart.yaml file, to the version of Mimir that the Helm chart deploys.For example,
2.6.0. -
Create or update the release notes in
docs/sources/helm-charts/mimir-distributed/release-notesdirectory.The release notes should refer to the correct Mimir and GEM versions and their specific documentation version.
Note: This step can be done in a separate PR and shouldn't block release candidate from getting published.
-
Update the Mimir and GEM documentation version parameters in _index.md
The two parameters are
MIMIR_DOCS_VERSIONandgem_docs_version. With the exception of the release notes, the Helm chart documentation should refer to the documentation or Mimir and GEM that is actually included in the Helm chart. -
From the root directory of the repository, run
make docto update README.md file. -
Verify that the links on the README.md are correct.
-
-
Open PR to release branch
-
Create PR that contains all the changes we have so far from
user/update-mimir-distributed-release-x.ybranch and make sure that your PR targets the release branchmimir-distributed-release-x.y. -
Have the PR reviewed by a maintainer.
-
Merge the PR upon approval.
-
-
Verify that the Helm chart is published
-
Run the following commands:
helm repo update && helm search repo grafana/mimir-distributed --devel --version <VERSION>You might have to wait a few minutes.
-
In a browser, go to https://grafana.com/docs/helm-charts/mimir-distributed and refresh the page.
-
-
After the release tag in Git is created, merge the branch back into
mainby following the same procedure as for Mimir releases: Merging release branch into main. -
Backport and additional release candidate.
- If additional changes need to be added to this release, another release candidate version has to be created.
- Follow backport process similar with Mimir release to backport changes from main branch.
- Go back to step 5. Update versions and links in the user/update-mimir-distributed-release-x.y branch to update the next release candidate.
The release process checks and creates a Git tag formatted as mimir-distributed-<version>, for example mimir-distributed-4.5.0, on the merge commit created when the PR is merged. To prevent releasing the same version with different content, the release process fails if the tag already exists. The release is published in the Grafana helm-charts Helm repository.
Release process for a final release
-
Determine the Helm chart version number.
The Chart.yaml file requires semantic versioning:
- The final version has the version
x.y.z, for example3.1.0. - Normally we will proceed the same
x.y.zversion value from the release candidate step.
- The final version has the version
-
Create a branch from release branch to update Mimir/GEM image and helm chart version.
For example
user/update-mimir-distributed-release-x.y-final. -
Optionally finalise release note and update version in the
user/update-mimir-distributed-release-x.y-finalbranch.-
Update and finalize the release notes in
docs/sources/helm-charts/mimir-distributed/release-notesdirectory if there has been some changes after release candidate. -
Set the
versionfield, in the Chart.yaml file, to the desired final release version.For example,
4.5.0.Note: Once this change is merged to
mimir-distributed-x.ybranch, it will trigger the release process GitHub Action. -
There shouldn't be anymore update needed in documentation because that has been done in the release candidate step above.
-
From the root directory of the repository, run
make docto update README.md file.
-
-
Open PR to release branch
-
Create PR that contains all the changes we have so far from
user/update-mimir-distributed-release-x.y-finalbranch and make sure that your PR targets the release branchmimir-distributed-release-x.y. -
Have the PR reviewed by a maintainer.
-
Merge the PR upon approval.
-
-
Verify that the Helm chart is published
-
Run the following commands:
helm repo update && helm search repo grafana/mimir-distributed --version <VERSION>You might have to wait a few minutes.
-
In a browser, go to https://grafana.com/docs/helm-charts/mimir-distributed and refresh the page.
-
-
After the release tag in Git is created, merge the branch back into
mainby following the same procedure as for Mimir releases: Merging release branch into main.
The release process checks and creates a Git tag formatted as mimir-distributed-<version>, for example mimir-distributed-4.5.0, on the merge commit created when the PR is merged. To prevent releasing the same version with different content, the release process fails if the tag already exists. The release is published in the Grafana helm-charts Helm repository.
When a mimir-distributed-x.y.z final version tag is pushed, the Helm chart documentation is published to https://grafana.com/docs/helm-charts/mimir-distributed.