### Describe Your Changes
See: https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4116
### Checklist
The following checks are **mandatory**:
- [x] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
---------
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
Co-authored-by: Roman Khavronenko <roman@victoriametrics.com>
(cherry picked from commit 6ff61a1c09)
12 KiB
weight, title, menu, aliases
| weight | title | menu | aliases | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 501 | Release process guidance |
|
|
Pre-reqs
- Make sure you have enterprise remote configured
git remote add enterprise <url>
- Make sure you have singing key configured
- Make sure you have github token with at least
read:org, repo, write:packagespermissions exported underGITHUB_TOKENenv variable. You can create token here - Make sure you're authorized for pushing docker images to
docker.ioandquay.io
For MacOS users
Make sure you have GNU version of utilities zip, tar, sha256sum. To install them run the following commands:
brew install coreutils
brew install gnu-tar
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
Docker may need additional configuration changes:
docker buildx create --use --name=qemu
docker buildx inspect --bootstrap
By default, docker on MacOS has limited amount of resources (CPU, mem) to use. Bumping the limits may significantly improve build speed.
Release version and Docker images
- Make sure all the changes are documented in CHANGELOG.md. Ideally, every change must be documented in the commit with the change. Alternatively, the change must be documented immediately after the commit, which adds the change.
- Run
make vmui-updateandmake vmui-logs-updatecommands to re-build static files forvmui. Static assets needs to be rebuilt separately for oss and enterprise branches (changes should not be cherry-picked between these branches). See commit example. - Make sure all the changes are synced between
master,cluster,enterprise-single-nodeandenterprise-clusterbranches. Changes in these branches must be synced immediately after they are committed in at least a single branch. - Make sure that the release branches have no security issues.
- Update release versions if needed in SECURITY.md.
- Run
PKG_TAG=v1.xx.y make docs-update-versioncommand to update version help tooltips. - Cut new version in CHANGELOG.md and make it merged. See example in this commit.
- Cherry-pick bug fixes relevant for LTS releases.
- Make sure you get all changes fetched
git fetch --all. - Create the following release tags:
git tag -s v1.xx.yinmasterbranchgit tag -s v1.xx.y-clusterinclusterbranchgit tag -s v1.xx.y-enterpriseinenterprise-single-nodebranchgit tag -s v1.xx.y-enterprise-clusterinenterprise-clusterbranch
- Run
TAG=v1.xx.y make publish-release. This command performs the following tasks: a) Build and package binaries in*.tar.gzrelease archives with the corresponding_checksums.txtfiles insidebindirectory. This step can be run manually with the commandmake releasefrom the needed git tag. b) Build and publish multi-platform Docker images for the givenTAG,TAG-cluster,TAG-enterpriseandTAG-enterprise-cluster. The multi-platform Docker image is built for the following platforms:- linux/amd64
- linux/arm64
- linux/arm
- linux/ppc64le
- linux/386
This step can be run manually with the command
make publishfrom the needed git tag.
- Verify that created images are stable and don't introduce regressions on test environment.
- Test new images on sandbox.
- Push the tags
v1.xx.yandv1.xx.y-clustercreated at previous steps to public GitHub repository at https://github.com/VictoriaMetrics/VictoriaMetrics. Push the tagsv1.xx.y,v1.xx.y-cluster,v1.xx.y-enterpriseandv1.xx.y-enterprise-clusterto the corresponding branches in private repository. Important note: do not push enterprise tags to public GitHub repository - they must be pushed only to private repository. - Run
TAG=v1.xx.y make github-create-release github-upload-assets. This command performs the following tasks: a) Create draft GitHub release with the nameTAG. This step can be run manually with the commandTAG=v1.xx.y make github-create-release. The release id is stored at/tmp/vm-github-releasefile. b) Upload all the binaries and checksums created at step9ato that release. This step can be run manually with the commandmake github-upload-assets. It is expected that the needed release id is stored at/tmp/vm-github-releasefile, which must be created at the stepa. If the upload process is interrupted by any reason, then the following recovery steps must be performed:- To delete the created draft release by running the command
make github-delete-release. This command expects that the id of the release to delete is located at/tmp/vm-github-releasefile created at the stepa. - To run the command
TAG=v1.xx.y make github-create-release github-upload-assets, so new release is created and all the needed assets are re-uploaded to it.
- To delete the created draft release by running the command
- Go to https://github.com/VictoriaMetrics/VictoriaMetrics/releases and verify that draft release with the name
TAGhas been created and this release contains all the needed binaries and checksums. - Update the release description with the content of CHANGELOG for this release.
- Publish release by pressing "Publish release" green button in GitHub's UI.
- Update GitHub tickets related to the new release. Usually, such tickets have label waiting for release. Close such tickets by mentioning which release they were included into, and remove the label. See example here.
- Bump VictoriaMetrics version at
deployment/docker/docker-compose.ymland atdeployment/docker/docker-compose-cluster.yml. - Bump VictoriaMetrics version mentioned in docs.
- Follow the instructions in release follow-up.
Public Announcement
- Publish message in Slack at https://victoriametrics.slack.com
- Post at X (Twitter) at https://x.com/VictoriaMetrics
- Post in Reddit at https://www.reddit.com/r/VictoriaMetrics/
- Post in LinkedIn at https://www.linkedin.com/company/victoriametrics/
- Publish message in Telegram at https://t.me/VictoriaMetrics_en and https://t.me/VictoriaMetrics_ru1
Operator
The operator repository https://github.com/VictoriaMetrics/operator/
Bump the version of images
- Bump
Versionfield in fileinternal/config/config.gowith new release version for:vmalertinBaseOperatorConf.VMAlertDefault.Version,vmagentinBaseOperatorConf.VMAgentDefault.Version,vmsingleinBaseOperatorConf.VMSingleDefault.Version,vmselectinBaseOperatorConf.VMClusterDefault.VMSelectDefault.Version,vmstorageinBaseOperatorConf.VMClusterDefault.VMStorageDefault.Version,vminsertinBaseOperatorConf.VMClusterDefault.VMInsertDefault.Version,vmbackupmanagerinBaseOperatorConf.VMBackup.Version(should be enterprise version),vmauthinBaseOperatorConf.VMAuthDefault.Version.
- Run
make operator-conf. - Rename "Next release" section in
docs/CHANGELOG.mdto the new release version and create new empty "Next release" section. - Commit and push changes to
master. - Create and push a new tag with the new release version.
- Create github release from this tag with "Release notes" from
docs/CHANGELOG.mdfor this version in description.
Helm Charts
The helm chart repository https://github.com/VictoriaMetrics/helm-charts/
Bump the version of images
Note that helm charts versioning uses its own versioning scheme. The version of the charts not tied to the version of VictoriaMetrics components.
Bump appVersion field in Chart.yaml with new release version.
Add new line to "Next release" section in CHANGELOG.md about version update (the line must always start with "-"). Do NOT change headers in CHANGELOG.md.
Bump version field in Chart.yaml with incremental semver version (based on the CHANGELOG.md analysis).
Do these updates to the following charts:
- Update
vmagentchartversionandappVersioninChart.yaml - Update
vmalertchartversionandappVersioninChart.yaml - Update
vmauthchartversionandappVersioninChart.yaml - Update
clusterchartversionandappVersioninChart.yaml - Update
k8s-stackchartversionandappVersioninChart.yaml - Update
single-nodechartversionandappVersioninChart.yaml - Update
vmgatewaychartversionandappVersioninChart.yaml
See commit example here.
Once updated, run the following commands:
- Commit and push changes to
master. - Run "Release" action on Github:

- Merge new PRs "Automatic update CHANGELOGs and READMEs" and "Synchronize docs" after pipelines are complete.
Ansible Roles
Note that ansible playbooks versioning uses its own versioning scheme. The version of the playbooks is not tied to the version of VictoriaMetrics components.
- Update the version of VictoriaMetrics components at https://github.com/VictoriaMetrics/ansible-playbooks.
- Commit changes.
- Create a new tag with
git tag -sm <TAG> <TAG>. - Push the changes with the new tag. This automatically publishes the new versions to galaxy.ansible.com.