Doing a proper version release requires documenting all the things you've changed. Frequently
CHANGELOG.md is used for these purposes.
Unless you are maintaining that file throughout the changes it can become a hassle. Luckily you can leverage GitHub's issue tracking and PR system to manage that for you. If you use GitHub's milestones like you would versions then you have all the data there for you. However, you're stil left with the collection and formatting of the changes.
The script below automatically grabs that data for you and creates a markdown output. I've been successfully using it for our Kingpin project for several releases. Here's the sample use:
$ ./get_changelog Nextdoor/kingpin 0.2.0
## Version 0.2.0
* #174: Add actor 'initialization context' support. ([@diranged])