Πάντα ῥεῖ - everything flows, and release notes can help keep track of what has changed.
Pantarhei is a sbt plugin that can create release notes from the
pull requests and git commits in github. Read more about Github's support for
releases and release notes here.
Include the plugin:
addSbtPlugin("com.akolov" % "sbt-pantarhei" % "0.2.1")
This makes the following sbt tasks available:
Command | Description |
---|---|
printNotesForLatestTag |
Prints release notes usable for the latest remote tag - that is, form all pull requests after the previous tag, if any, and before the last tag |
pushNotesForLatestTag |
Creates or updates release notes for the latest remote tag on github. -Dpantarhei.release.name= will define a release name. |
printNotesForNextTag |
Prints release notes from the pull requests after the latest tag. These notes will be usable for the next tag |
The output of the print
tasks is in markdown, ready to be copy/pasted as github release notes. Example:
$ sbt printNotesForLatest
Preparing release notes from pull requests before tag 0.0.1
[PR #2](https://github.com/kolov/sbt-pantarhei/pull/2) Config token
* [autoPlugin, credentials](https://github.com/kolov/sbt-pantarhei/commit/449a89324b3293db10dcade85a89ed9849b94548)
* [github token from credentials](https://github.com/kolov/sbt-pantarhei/commit/d990f551fcc2f23f53a677741bd162dd509277f0)
[PR #1](https://github.com/kolov/sbt-pantarhei/pull/1) test PR to use for retreiving PRs
* [parses github remote url](https://github.com/kolov/sbt-pantarhei/commit/e1e35f924ae7b242c92670fd0676063fe7b96423)
$ sbt printNotesAfterLatest
Preparing release notes from pull requests after tag 0.0.1
No pull requests were found since last tag
To access the Github API, a an access token is needed. It must be defined as sbt Credentials, with realm=github
and
password={token}
. The plugin will always try ~/.github/credentials
, if no good credantials were found. Sample content:
realm=Github
password=... the real token here ...
user=whatever
host=whatever
To get sensible release notes, provide sensible Pull Request titles and commit messages. Consider squashing your commits.
You can install this plugin as a global plugin to avoid configuring the Github access token for every project.
- publish:
sbt publishSigned
- test
sbt scripted