We keep our release process as straightforward as possible.
We use a bot called EVE to automate a big part of this process.
Thanks to EVE, we don't need to manage milestones and releases.
The release process follows these steps:
- Merge the changes on the main branch
- Create a tag with a version as the title and the changelog as the message.
- Push the tag, a publish build will start
- Now EVE will do the rest (Close milestone, open new milestone, create release)
The Kahpp releases adhere to semantic versioning.
So in summary:
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.
We use milestones to track the progress on groups.
Milestones are managed by EVE.
EVE is a bot that help us to automate the release process.
To generate the changelog we use a tool that generate it based on GitHub milestones, jwage/changelog-generator.
For the commit that you want to create into a release, create a signed tag that matches the milestone name and contains the changelog.
git tag -s x.y.z
Once you are ready push the tag
git push origin x.y.z
The release build runs automatically on a new tag.
After a couple o minutes a new release appears on the GitHub release page.