Skip to content
Sergey Bronnikov edited this page Apr 6, 2022 · 7 revisions

How to release

  • Make sure changelog contains a section for Unreleased version and section contains all user-visible breaking changes, new features and bugfixes, link related issues. But refrain yourself from being too formal.

  • Prepare a pull request with updated CHANGELOG. Rename 'Unreleased' version to the next version number with release date and add a new empty section 'Unreleased' with empty Added, Changed, Removed subsections. Every release has a semantic version. A semantic version has the form vMAJOR.MINOR.PATCH. Given a version number MAJOR.MINOR.PATCH, increment the:

    • MAJOR version when you make incompatible API changes,
    • MINOR version when you add functionality in a backwards-compatible manner, and
    • PATCH version when you make backwards-compatible bug fixes.

(TBD) You can specify pre-release versions by appending a hyphen and dot separated identifiers (for example, v1.0.1-alpha or v2.2.2-beta.2). Normal releases are preferred by the go command over pre-release versions, so users must ask for pre-release versions explicitly (for example, go get example.com/[email protected]) if your module has any normal releases.

  • Prepare the new release draft with release notes. Usually, release notes contain a short description and a list of changes copy-pasted from changelog. Below is a template for new release notes:
## Breaking changes

Warn a user about breaking changes here.

## New features

* Short description (#xx).

## Bugfixes

* Short description (#xx).

See release notes in expirationd as an example. Set 'Release title' to a new release version number, and set 'This is a pre-release' checkbox. Feel free to share release notes draft with teammates to get valuable feedback.

  • Get an LGTM for a pull request with updated changelog and merge it to a master branch.
  • Pull master branch and create annotated tag with release version number: git tag -a --cleanup=verbatim x.y.z. Annotate is used for convenience and is usually containing release notes. Push changes: git push --tags. Or, in case of any error, remove them and proceed again: git tag -d x.y.z.
  • Set a proper Git tag in release draft, remove 'This is pre-release' and publish release.
  • Send request for announcing to the Tarantool's marketing team.
Clone this wiki locally