docs/internal/RELEASE.md
Check for open security PRs from Dependabot or Renovate. Review and merge any applicable security fixes to avoid shipping known vulnerabilities.
Create a new branch for the release (e.g., release/vX.Y).
[!IMPORTANT] The release branch should only contain the major (X) and minor (Y) version, but not the patch level (Z), for example:
✅ Correct:
release/v1.3⚠️ Incorrect:
release/v1.3.0
Create the tag for the release (e.g., vX.Y.Z)
Push the release branch and tag to the remote. Note that the tag will kick off a release workflow via goreleaser.
Create a GitHub label for backports:
gh label create "backport release/vX.Y" -d "This label will backport a merged PR to the release/vX.Y branch" -c "#0052cc"
The CI will automatically handle the build and then create and publish a new GitHub release. Please do not delete GitHub releases that were once public.
Once the release is published, you should edit the release notes in GitHub. Use the already generated changelog and summarize it in the main categories:
Keep the generated changelog as is, after the summary sections.
Make sure each release note has full links to the relevant pull requests.
The list of changes from the GitHub release forms the basis of the public-facing release notes. Release notes are added to the public Pyroscope documentation.
The website release notes need to be added to both the release/vX.Y branch and the main branch. The recommended workflow is to:
type/docs label to the PRThe release notes follow the same pattern for each release:
For help writing release notes, refer to the Writers' Toolkit.
Merge a PR that bumps the chart version and updates the appVersion to the latest release Pyroscope in the main branch (no tagging required), the CI will automatically publish the chart to the helm repository.
The Helm chart version and Pyroscope application version are separate and won't always match. The Chart.yaml file contains two distinct version fields:
version: The Helm chart versionappVersion: The Pyroscope application versionVersioning Strategy:
v1.10.2 (with appVersion: v1.10.2), a chart-only fix would bump to v1.10.3 while keeping appVersion: v1.10.2A PR to be backported must have the appropriate backport release/vX.Y label(s) AND one of these expected labels:
['type/docs', 'type/bug', 'product-approved', 'type/ci']. Note that these labels must be present before the PR is merged.
When a patch release is needed, make PRs containing the necessary changes against the appropriate release/vX.Y branch.
Changes done in patch releases should be documented in the existing website release notes for that version under a new heading with the version number. These documentation changes should be done with a PR against the appropriate release branch and then backported to the main branch.
Before tagging, check for open security PRs from Dependabot or Renovate. Review, merge, and backport any applicable security fixes to the release/vX.Y branch.
Once the release notes are merged, a vX.Y.Z patch release tag must be created and pushed to remote to create a new release.
[!WARNING] If you are releasing a patch version, for an older major/minor version (example: you are releasing
v1.15.2, but the current latest release isv1.16.0), you need to make sure the release's actions to publish a:latestdocker image tag and ahome-brewformula are removed:This can be done by updating
release.ymlin the previous release branches to set$IMAGE_PUBLISH_LATEST=false.
The release process uses goreleaser and can be configured using the .goreleaser.yaml.
To create a new release first prepare the release using:
make release/prepare
This will build and packages all artifacts without pushing or creating the GitHub release.
Once you're ready you can then tag your release.
git tag v0.1.0
And finally push the release using:
make release
Make sure to have a GitHub Token
GITHUB_TOKENcorrectly set.
Make sure to create the release notes and CHANGELOG for any manual release.