We create releases to bundle and deliver iterations of a project;
they are based on Gittags
, which mark a specific point in the repository’s history.
When the code on develop
branch is stable and ready for a new release:
CHANGELOG.md
and package.json
(if any, otherwise go to step 3):
package.json
only the version number changes (see Versioning)changelog
is filled by the list of all PR’s from the latest release till now, grouped by scope (fix, change, new feature)Push
this small update with no business logic directly to develop branch, without any PR (usually with a commit message like: Bump version to v0.0.1
). The dev CI/CD
pipeline won’t be triggered by this merge.develop
to master
branch, naming it as Release <tag name>
(Release v0.0.1 for example).master
branch, create a git tag
locally:
master
branch and pull changesannotated tag
with git tag -a v0.0.1 -m "Release v0.0.1"
git push origin v0.0.1
develop
and master
local branches are updated. (see the note below)develop
branch make git merge master
and then git push
to realign both branches at the same commit (local and remote). (see the note below)manual
tests pass and no other bugfix are needed, from GitHub Releases
page Create a new release
:
Auto generate release notes
to generate the release changelog from the list of PR’sPublish
the releaseNote: points 5
and 6
are needed only if in the repo develop
is set as the main
branch while master
is only the release
branch)
At this moment the
release
(the tag),master
anddevelop
point exactly at the same commit in the history
We use Semantic Versioning
Given a version number MAJOR.MINOR.PATCH
, increment the:
MAJOR
version when you make incompatible API changesMINOR
version when you add functionality in a backwards compatible mannerPATCH
version when you make backwards compatible bug fixes