- 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.
- 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.
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.