This document explains how to create releases in this project in each release scenario.
Currently there are 2 release procedures for this project:
This procedure is used when we want to create new release from the latest development edge (latest commit in the master
branch).
The steps for this procedure are the following:
- Create a new branch from the
master
branch with the following name format:pre_release/v{MAJOR}.{MINOR}.{BUILD}
. For example, if we want to release for version0.6.0
, we will first create a new branch from themaster
calledpre_release/v0.6.0
. - Update method
version.Version()
to return the target version. - Update the
CHANGELOG.md
to include all the notable changes. - Create a new PR from this branch to
master
with the title:Release v{MAJOR}.{MINOR}.{BUILD}
(e.gRelease v0.6.0
). - At least one maintainer should approve the PR. However if the PR is created by the repo owner, it doesn't need to get approval from other maintainers.
- Upon approval, the PR will be merged to
master
and the branch will be deleted. - Create new release from the
master
branch. - Set the title to
Release v{MAJOR}.{MINOR}.{BUILD}
(e.gRelease v0.6.0
). - Set the newly release tag using this format:
v{MAJOR}.{MINOR}.{BUILD}
(e.gv0.6.0
). - Set the description of the release to match with the content inside
CHANGELOG.md
. - Set the release as the latest release.
- Publish the release.
- Done.
This procedure is used when we need to create fix or patch for the older releases. Consider the following scenario:
- For example our latest release is version
0.7.1
which has the minimum go version1.18
. - Let say our user got a critical bug in version
0.6.0
which has the minimum go version1.15
. - Due to some constraints, this user cannot upgrade his/her minimum go version.
- We decided to create fix for this version by releasing
0.6.1
.
In this scenario, the procedure is the following:
- Create a new branch from the version that we want to patch.
- We name the new branch with the increment in the build value. So for example if we want to create patch for
0.6.0
, then we should create new branch with name:patch_release/v0.6.1
. - We create again new branch that will use
patch_release/v0.6.1
as base. Let sayfix/handle-cve-233
. - We will push any necessary changes to
fix/handle-cve-233
. - Create a new PR that target
patch_release/v0.6.1
. - Follow step
2-10
as described in the Latest Release. - Publish the release without setting the release as the latest release.
- Done.