A CHANGELOG rotator and Github release automator.
The file is based on: http://keepachangelog.com/en/1.0.0/
NOTE: Change release notes structure is based on istio/test-infra.
With the GOPATH variable setted, download the project
go get github.com/knabben/chrn
Install the dependencies
make install-dep
Generate the binary project
make build
-
changelog - You need to populate the CHANGELOG.md file, you can skip this step, and populate your file by hand OR you can follow the pattern and get the file done.
-
rotate - Rotate your CHANGELOG with your new release (automatic discovery), create a PR with the bump version.
-
note - Create a Github Release with the description of your last released tag.
You will need to set some labels on your PRs, the first one is release-note, this is the main label, and is used to populate the changelog (you can change it via -l).
The second label you need to add is the grouper, so you can categorize PRs by bugfix and feature for example. The title of the PR will be used to populate the changelog.
The steps can be skipped or followed. Suppose you have followed the keepachangelog pattern.
After filling the PRs with correct labels, pass as arguments the name of user, the repository and the local CHANGELOG.md file.
$ ./chrn changelog --user knabben --repo repo-test --file ~/Project/CHANGELOG.md --token token
>>> Start fetching unreleased release note from knabben/repo-test
>>> Getting PRs for [repo:knabben/repo-test label:release-note is:merged type:pr base:master merged:...]
>>> Modifying changelog file
You have a local modified CHANGELOG.md with the latest merged PRs title from the last release until now:
## [Unreleased]
## Bug
- Some PR title
## Enhancement
- Another good PR title
## [3.0.0] - 2018-02-11
So lets say the latest Github release is tagged as v3.0.0, you have already modified your master and wants to release a minor version, in this case v3.1.0:
$ ./chrn rotate --file ~/Projects/CHANGELOG.md --org knabben --repo repo-test --token token --bump minor
You can see a new PR opened with the titles update. After merge or rebase on master you are ready to:
As the last step create a new release with notes as the body:
$ ./chrn note --file ~/Projects/CHANGELOG.md --org knabben --repo repo-test --token token
>>> Creating a new release using tag 3.1.0 and notes:
## Bug
- Some PR title
## Enhancement
- Another good PR title