-
Notifications
You must be signed in to change notification settings - Fork 125
Release Workflow
Versions should follow semantic versioning format. Version tags must always use full format: v<MAJOR>.<MINOR>.<PATCH>
(e.g. v2.3.0
).
All new development is done on development branch (dev
) by merging GitHub PRs into dev
branch. When starting new release cycle, the development branch should be tagged with an alpha version of the next release.
New releases are releases that increase major or minor number for the version. New releases are prepared on release branches, e.g. release 2.3.0
would be prepared in branch release/2.3.x
.
Release process consists of following steps:
- create new release branch
release/<MAJOR>.<MINOR>.x
based ondev
branch (e.g. release2.3.0
would haverelease/2.3.x
) - update
CHANGELOG.md
with changes since alpha (e.g. release2.3.0
would list changes since tagv2.3.0-alpha
) - create new beta tag representing pre-release version (e.g.
v2.3.0-beta
) - add/cherry-pick only fixes to the release branch
- when release is ready, switch to
master
branch and merge the release branch intomaster
- create new annotated release tag for the final release version (e.g.
v2.3.0
, do not omit last zero!) - merge the release branch into the
dev
branch
When the master branch is ready, it is tagged using annotated tag in this format:
- tag name:
v2.0.0
- message:
Release 2.0.0
Git command:
git tag -m 'Release 2.0.0' v2.0.0`
Then the tag is pushed to the upstream repository (git push --tags upstream
). After the tag is pushed to the upstream, new GitHub release is created, using this format:
- release title:
Release 2.0.0
- description:
See [Release notes](https://github.com/ligato/vpp-agent/blob/master/CHANGELOG.md#v2.0.0)
Patch releases are , new release branch is created (if doesn't exist yet) based on the last release from same minor version. The release branch has name in following format: release/2.0.x
.
Then all the necessary fixes are cherry-picked to this release branch, after that the CHANGELOG.md
file is updated with relevant information and new tag is created for the respective patch version. After that the release branch can be merged into dev
branch (used to sync CHANGELOG).