VictoriaMetrics/docs/Release-Guide.md
Aliaksandr Valialkin b9231c715a
docs/Release-Guide.md: require manual push of the created release tags to public Github
The automated push of release tags to Github require specifying the remote repository name
when doing `git push <remote-repo-name> v1.xx.y`.
The remote repository name can differ in different environments,
so it cannot be put into Makefile rule.

TODO: create a Makefile rule, which generates standard remote names for public
and private repositories in Git, so `git push` for release tags could be automated then.
2022-09-08 15:00:18 +03:00

8.2 KiB

sort
18

Release process guidance

Prereqs

  1. Make sure you have enterprise remote configured
git remote add enterprise <url>
  1. Make sure you have singing key configured
  2. Make sure you have github token with at least read:org, repo, write:packages permissions exported under GITHUB_TOKEN env variable. You can create token here

Release version and Docker images

  1. Make sure that the release commits have no security issues. 1a. Document all the changes for new release in CHANGELOG.md. 1b. Add (available starting from v1.xx.y) line to feature docs introduced in the upcoming release.
  2. Create the following release tags:
    • git tag -s v1.xx.y in master branch
    • git tag -s v1.xx.y-cluster in cluster branch
    • git tag -s v1.xx.y-enterprise in enterprise branch
    • git tag -s v1.xx.y-enterprise-cluster in enterprise-cluster branch
  3. Run TAG=v1.xx.y make publish-release. This command performs the following tasks: a) Build and package binaries in *.tar.gz release archives with the corresponding _checksums.txt files inside bin directory. This step can be run manually with the command make release from the needed git tag. b) Build and publish multi-platform Docker images for the given TAG, TAG-cluster, TAG-enterprise and TAG-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 publish from the needed git tag.
  4. Push the tags created v1.xx.y and v1.xx.y-cluster at step 2 to public GitHub repository at https://github.com/VictoriaMetrics/VictoriaMetrics . Important note: do not push enteprise tags to public GitHub repository - they must be pushed only to private repository.
  5. Run TAG=v1.xx.yy make github-create-release github-upload-assets. This command performs the following tasks: a) Create draft GitHub release with the name TAG. This step can be run manually with the command TAG=v1.xx.y make github-create-release. The release id is stored at /tmp/vm-github-release file. b) Upload all the binaries and checksums created at step 3a to that release. This step can be run manually with the command make github-upload-assets. It is expected that the needed release id is stored at /tmp/vm-github-release file, which must be created at the step a. 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-release file created at the step a.
    • 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.
  6. Go to https://github.com/VictoriaMetrics/VictoriaMetrics/releases and verify that draft release with the name TAG has been created and this release contains all the needed binaries and checksums.
  7. Update the release description with the CHANGELOG for this release.
  8. Remove the draft checkbox for the TAG release and manually publish it.
  9. Bump version of the VictoriaMetrics cluster in the sandbox environment by opening and merging PR.

Building snap package

pre-requirements:

  • snapcraft binary, can be installed with commands: for MacOS brew install snapcraft and install mutipass, for Ubuntu - sudo snap install snapcraft --classic
  • exported snapcraft login to ~/.snap/login.json with snapcraft export-login login.json && mkdir -p ~/.snap && mv login.json ~/.snap/
  • already created release at github (it operates git describe version, so git tag must be annotated).
  1. checkout to the latest git tag for single-node version.
  2. execute make release-snap - it must build and upload snap package.
  3. promote release to current, if needed manually at release page snapcraft-releases

Public Announcement

Helm Charts

The helm chart repository https://github.com/VictoriaMetrics/helm-charts/

Bump the version of images

  1. Update vmagent chart version in values.yaml and Chart.yaml
  2. Update vmalert chart version in values.yaml and Chart.yaml
  3. Update vmauth chart version in values.yaml and Chart.yaml
  4. Update cluster chart versions in values.yaml, bump version for vmselect, vminsert and vmstorage and Chart.yaml
  5. Update k8s-stack chart versions in values.yaml, bump version for vmselect, vminsert, vmstorage, vmsingle, vmalert, vmagent and Chart.yaml
  6. Update single-node chart version in values.yaml and Chart.yaml
  7. Run make gen-doc
  8. Run make package that creates or updates zip file with the packed chart
  9. Run make merge. It creates or updates metadata for charts in index.yaml
  10. Push changes to master. master is a source of truth
  11. Push the changes to gh-pages branch

Ansible Roles

Bump the version of images

Repository https://github.com/VictoriaMetrics/ansible-playbooks

  1. Update vmagent version in main.yml
  2. Update vmalert version in main.yml
  3. Update cluster version in main.yml
  4. Update single version in main.yml
  5. Commit changes
  6. Create a new tag
  7. Create a new release. This automatically publishes the new versions to galaxy.ansible.com