GitHub release notes generator
This tool generates release notes for a GitHub repository consisting of a summary of merged PRs and closed issues since the last release. With a release tag argument, it will generate release notes for an existing release so that you can backfill this information for previous releases.
Example:
./gen_release_notes.pl \
-d dolthub/go-mysql-server \
-d dolthub/vitess \
dolthub/dolt v0.22.9
This tells the tool to generate release notes for
dolthub/dolt for the release tagged
v0.22.9
, and to include any changes to the dependencies
dolthub/go-mysql-server
and dolthub/vitess that were
built into this release. The end of this README contains an example of
the output it produces.
Pre-requisites
This script requires several CPAN modules. Run install-deps.sh
to
install them. Depending on your perl installation, you may need to run
this with sudo
.
Alternately, install them yourself with cpan
:
cpan> install DateTime::Format::ISO8601
cpan> install Getopt::Long
cpan> install JSON::Parse
Usage
The tool will clone the repo given unless a directory with the same name exists in the working directory. Therefore, if you intend to generate release notes for a project you already have checked out locally, it's recommended that you clone this repo alongside the one you want to generate release notes for. E.g.:
% find . -maxdepth 1
.
./dolt
./release-notes-generator
./my-other-project
% ./release-notes-generator/gen_release_notes.pl \
-d dolthub/go-mysql-server \
dolthub/dolt v0.22.9
Since dolt
exists in the current working directory, the tool will
assume that's the repository dolthub/dolt
and not bother cloning
it. It should be up to date with the GitHub remote or tag resolution
may fail.
Requirements
- Perl 5.14 or higher (tested only with 5.26 but should work with 14 or higher)
- DateTime::Format::ISO8601
- JSON::Parse
git
,curl
Limitations
Dependencies are only supported for golang projects with a go.mod file. And dependency parsing in general is very limited.
GitHub Auth
GitHub limits anonymous RPCs to 60 per hour, and this could change in the future. If you hit the rate limit, you will need to provide a personal API token. Details and instructions for obtaining a token can be found in the file comment in the script.
Example output
The tool produces markdown output like the below that you can paste directly into your GitHub release.
Merged PRs
- 1170: Updating to latest go-mysql-server
- 1169: go/libraries/doltcore/sqle: Keyless tables don't have PK index -- fix describe panic
- 1168: /.github/{scripts,workflows}: fix, pod to job, handle pod errors
- 1167: C# test for alternate MySQL connector library, upgraded existing to u… …se dotnet 5 (up from 3)
- 1165: /.github/workflows/ci-performance-benchmarks.yaml: fix id
- 1163: Db/ci performance
- 1162: unrolled decode varint decode loop 30% faster on the benchmark in this PR. BenchmarkUnrolledDecodeUVarint/binary.UVarint-8 1000000000 0.0372 ns/op BenchmarkUnrolledDecodeUVarint/unrolled-8 1000000000 0.0258 ns/op
- 1147: Fixed indentiation in YAML syntax for Discord notifications
- 1143: First cut of Discrod notifications
This implements the following policy:
- notify on cancellation or failure of any job
- notify on release, including success
Currently release notifications are broken by a shortcoming in GitHub Actions, namely that one workflow cannot kick of another when using
GITHUB_TOKEN
. We will devise a workaround.
- 256: added describe queries for keyless tables
- 255: This function implement an Naryfunction type. Allows you to define sqle functions that have multiple children.
- 254: Fixed UNHEX/HEX roundtrip
Simple fix but I ended up completely reevaluating our binary type implementation. Fixed a bug found in the
cast
package we were using to convert strings, and also changedUNHEX
to return the proper SQL type. - 252: Added hash functions
- 249: Alias bug fixes Fixes a number of buggy behaviors involving column indexes and table name resolution.
- 248: additional tests add a table with multiple keys an index that has a subset of those keys in a different order a couple queries