- Create a branch named
changelog-<version>-<rc.#>. Clean up the changelog, add the version heading and merge to main. - Push a semver tag to main on the merge commit above. Something like:
git tag -a v1.2.0-rc.0git push origin v1.2.0-rc.0
- This will initiate the build process in Github Actions. The tagged docker image should be available here shortly: https://hub.docker.com/r/grafana/tempo/tags?page=1&ordering=last_updated
- A Github Release Draft should also be available here: https://github.com/grafana/tempo/releases
- Copy over the CHANGELOG entries for the release
- Call out contributors for their work
- Cull unnecessary changes that don't impact the Tempo binary or deployment
- Call out breaking changes!
- Publish the release making sure that "This is a pre-release" is checked.
This document details release procedures for Tempo.
- Create a release branch. This may or may not be on the same commit as the release candidate above.
- Name the branch like
release-v2.2
- Name the branch like
- Follow all steps in Release Candidates except:
- Drop the
-rc.#postfix from the tag. For instance usev1.2.0instead. Something like:git tag -a v1.2.0git push origin v1.2.0
- Make sure that the "This is a pre-release" is unchecked when publishing the release.
- Drop the
- Submit a PR cleaning up the changelog and moving everything under "main/unreleased" to be under
the newly minted version.
- Given that the changelog was already cleaned up for the RC above. This will likely be simply renaming the release candidate to the full version.
- Update the tempo image tag in example configs and operations files, then regenerate compiled jsonnet.
Run
make bump-tempo-image-tag TEMPO_IMAGE_TAG=X.Y.Z && make jsonnetand open a PR to the release branch. This is intentionally done before tagging so that users referencing the examples or docs get the correct released version rather thanlatestor a stale one. - In github releases there should be a "Draft" release. Pretty up the changelog, add it to the release notes and hit "Publish release". Make sure that "Set as the latest release" is checked.
- Update helm
- Submit PRs to
github.com/grafana/helm-chartsto update to the newly cut version.- One PR each for the
tempo,tempo-distributedandtempo-vulturehelm charts. - Search the chart for the previous version and udpate each version number to current.
- One PR each for the
- Submit PRs to
Patch releases should be cut for serious bug fixes or security issues.
A release branch should already exist from the minor release. Check it out:
git checkout release-vX.Y
Backport fixes to the release branch. This is currently a manual process.
You need to cherry-pick each commit and open a PR to be merged into the release branch.
git cherry-pick <commit hash>
- Verify all backported fixes have entries in the CHANGELOG. Cross-reference the commits on the release branch since the last tag (
git log --oneline $(git describe --tags --abbrev=0)..release-vX.Y) against the CHANGELOG entries. - Add any missing entries and update the heading from
main / unreleasedto the new patch version (e.g.v2.10.1). - Open a PR with the changelog update to the release branch.
Note: This step is intentionally performed before tagging and the
dockerCI workflow. Example configs and operations files must reference the released version so that users who follow the documentation or deploy from those files get the correct image, notlatestor a stale version.
Run the following from the release branch:
make bump-tempo-image-tag TEMPO_IMAGE_TAG=X.Y.Z
make jsonnet
Review the changes with git diff, then open a PR to the release branch and merge it before proceeding.
Tag the release branch and push. This triggers the release and docker workflows in GitHub Actions.
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z
Check that all workflows triggered by the tag succeeded:
release— creates the GitHub Release draft and binariesdocker— builds per-arch images and creates multi-arch manifestspublish-technical-documentation-release— syncs docs (may show as failed if docs are already up to date; this is harmless)
In GitHub Releases there should be a "Draft" release. Add the changelog entries to the release notes. Make sure "Set as the latest release" is checked and hit "Publish release".
Submit a PR to main moving the relevant entries from "main/unreleased" to be under the newly minted version.