ggshield
ggshield copied to clipboard
Setup changie to manage release notes
The problem
Automatically generating release notes from git logs does not produce a useful document for end users.
Not so good solutions
One solution is to write the release notes manually when it's time to prepare a release. This is done by going through the commits, picking the interesting ones, and formatting them into a cohesive whole. This process is error prone and can take a lot of time. This is what I did for 1.12.0 and 1.13.0.
Another approach is to update a CHANGELOG.md file has we develop. This ensures changes are documented when they are fresh in the mind of their author. But this often leads to annoying merge conflicts when multiple changes are developed concurrently.
Proposed solution
Changie is a command-line tool to help writing the release notes as we go. It works by creating individual files for each changes, which can be assembled together at release time. This makes it possible to write-down release-notes-worthy changes as we develop, without generating merge conflicts.
I propose the following:
- [ ] Setup Changie
- [ ] Add a CI check to accept a PR only if it contains a Changie entry or a special keyword in the PR message to skip the need for a Changie entry (for changes which do not need a changelog entry)
- [ ] Document / script the process to update the CHANGELOG.md at release time. The process would be something like this:
- Assemble the changes with
changie batch
. This creates a .changes/$VERSION.md file. Review / rewrite content. - Update CHANGELOG.md with
changie merge
. This merges .changes/$VERSION.md inCHANGELOG.md
. - Commit, tag & push.
- Make the
create-release
action use the content of .changes/$VERSION.md for the GitHub release notes.
- Assemble the changes with
@agateau-gg We already implemented something internally to generate changelog for other projects. I doubt it was with changie.
Can you please verify that internally before recreating something from scratch?
Thx
I know we have some internal thing to do this, but I don't think it's adapted here. This is why I am suggesting using Changie. We can discuss this offline if you want.