Concept
Motivation
Everyone loves neat, transparent, informative release notes.
Everyone would also rather avoid maintaining them. What a hassle to have to evaluate what issues have been solved between two points in projectâs timeline, what types of problems they were, are they important to inform the users about, what issues solved them etc.
Wouldnât it be great to get fantastic release notes compiled for you automaticaly based on all the hard work you put into your GitHub issues and pull requests.
OK, what can gren
do for me?
gren
is a small helpful robot that will do for you just that! To put simply, it can create a release from a tag and compile the release notes using issues or commits.
It also can generate a CHANGELOG.md
file based on the release notes (or generate a brand new).
The Concept
The main motivation for bringing gren
to life was the need for auto generating release notes for every tag in a project.
The process, as explained here, requires to go to your projectâs releases page in GitHub, draft that tag as a new release and manually add what I remembered has changed.
Let gren
take care of that for you. It automates this process and also writes release notes for you, creating something like this:
v0.6.0 (14/03/2017)
Framework Enhancements:
- #32 Unwrap github-api promises
- #26 Use external config file
- #23 Introduce templates for the issues
- #19 Add an âignore labelâ flag
- #12 Add the chance to rebuild the history of release notes
Bug Fixes:
(yes, this is one of đ¤ âs actual releases)
Feed gren
đ¤
Where is the data coming from? There are two options:
issues
(â)
If you manage your project with issues, thatâs where all the information about a change are.
Issue labels increase the level of depth of what the release notes should show, helping gren
to group the notes.
e.g. if you see the example above, the issues are grouped by the two labels enhancement
and bug
, then customised via a config file.
gren
generates those notes by collecting all the issues closed between a tag (defaults to latest) and the tag before it (or a tag that you specify).
If you want to be more accurate on the issues that belong to a release, you can group them in milestones and use only the issues that belong to that Milestone.
The output above is a result of release notes built from issues.
Help đ¤ to write wonderful stuff (issues)
In order to have splendidly generated release notes, we reccomend to follow these convensions:
- Start the title with a verb (e.g. Change header styles)
- Use the imperative mood in the title (e.g. Fix, not Fixed or Fixes header styles)
- Use labels wisely and assign one label per issue.
gren
has the option to ignore issues that have more than one of the specified labels.
commits
The simplest way of getting data is from the commits you write. Even though it doesnât require a machine-readable commit, still would be better to have them in a nice format.
The output would then use commit messages (title + description) to look something like:
v0.9.0 (17/05/2017)
- Filter milestones (#75)
- Create milestones data-source option
- Add documentation for the milestones option
- Support GitHub enterprise (#73)
- Support GitHub enterprise
- Add api-url to options documentation
- Update CHANGELOG.md
Help đ¤ to write wondeful stuff (commits)
In order to have splendidly generated release notes, we reccomend to follow these convensions:
- Start the subject line with a verb (e.g. Change header styles)
- Use the imperative mood in the subject line (e.g. Fix, not Fixed or Fixes header styles)
- Limit the subject line to about 50 characters
- Do not end the subject line with a period
- Separate subject from body with a blank line
- Wrap the body at 72 characters
- Use the body to explain what and why not how