Skip to content

madpoly-studio/PullRequestReleaseNotes

 
 

Repository files navigation

Icon

Pull Request Release Notes

Test Deploy Release Docker License Gitter

Pull Request Release Notes utility generates release notes for all merged pull requests that have not been released relying on pull request titles and labels to generate and publish release notes.

Supported Pull Request providers are GitHub, GitLab, Azure DevOps Services / Server, BitBucket Cloud and Bitbucket Server.

You can run this as part of CI process and generate notes automatically as part of every release. You can also publish notes to a markdown file, Atlassian Confluence page or a Slack post.

Command line, YAML file parameters and Environment variables

See HELP.md for details on parameters.

Docker Image

You can run jasminsehic/pullrequestreleasenotes Linux Docker image on Windows WSL2, Linux or MacOS. While inside the root of a working git directory run the Docker image using below command examples. GitHubToken used in the example is just an example.

To run on Windows run this from Command Prompt:

docker run --rm -it -v "%cd%:/repo" jasminsehic/pullrequestreleasenotes:latest -grp /repo -GitHubToken c03b77a4982d48f0af328312a9b99455

or run this from PowerShell:

docker run --rm -it -v "${pwd}:/repo" jasminsehic/pullrequestreleasenotes:latest -grp /repo -GitHubToken c03b77a4982d48f0af328312a9b99455

To run on Linux or MacOS:

docker run --rm -it -v "$(pwd):/repo" jasminsehic/pullrequestreleasenotes:latest -grp /repo -GitHubToken c03b77a4982d48f0af328312a9b99455

Release Notes Format

Utility outputs release notes following the Semantic Release Notes format hiararchy and extracts semantic release note sections, categories and summaries from the pull request title and labels.

For example all pull requests with Bug label can be grouped under Fixes section and pull requests with Enhancement label can be grouped under Enhancements section. Category grouping is possible through use of the #Label where # character is used to denote a category label as opposed to a section label. BitBucket Cloud / Server pull request providers do not have a label concept yet so for those providers you can type [#section] and [##category] either in the title or the description of the pull request as a pseudo-label.

Release note formatting can be further customised where you can turn off grouping by section and category, order the release notes based on merged or created time of pull request and the format of the release note itself. Version number can be supplied via GitVersion tool.

You can also define a label to exclude pull request from release notes. Also you can define a label that when not added to a pull request will add a release note highlighted as code. This can be useful for scenarios such as QA team adding a QC label to a pull request so then it is easy to spot which items haven't gone through QC.

See HELP.md for all the details on how perform these customisations.

PullRequestReleaseNotes in action

Sample Markdown Output

# 1.2.5 (MASTER) - XX XXX 2016
## Enhancements
### Category A
- Awesome new feature [\#1854](https://github.com/org/repo/pull/1854)

### Undefined
- Special feature for Acme Co [\#1855](https://github.com/org/repo/pull/1855)

## Fixes
### Category Z
- Fixed problem with widget [\#1792](https://github.com/org/repo/pull/1792)

### Category Y
- Fixed exception with view layout [\#1848](https://github.com/org/repo/pull/1848)

### Undefined
- Fixed spelling mistake [\#1833](https://github.com/org/repo/pull/1833)

## Unclassified
### Undefined
- Added new Category H [\#1843](https://github.com/org/repo/pull/1843)

Sample Actual Markdown

1.2.5 (MASTER) - XX XXX 2016

Enhancements

Category A

  • Awesome new feature #1854

Undefined

  • Special feature for Acme Co #1855

Fixes

Category Z

  • Fixed problem with widget #1792

Category Y

  • Fixed exception with view layout #1848

Undefined

  • Fixed spelling mistake #1833

Unclassified

Undefined

  • Added new Category H #1843

Sample GitHub Input

GITHUB

Other pull request provider samples

GitLab

BitBucket Cloud

BitBucket Server

Azure DevOps Services & Server

Sample Confluence Output

CONFLUENCE

Sample Slack Output

SLACK

Thanks

Big thanks to Jake Ginnivan for inspiring this tool with his work on GitReleaseNotes and GitVersion

Also many thanks to:

  • Edward Thomson for Infinity.NET that made it super-easy to connect to TFS.
  • Adam Abdelhamed for PowerArgs that made command line argument parsing so easy it hurts.
  • Mitja Bezenšek for SharpBucket that provided a pain-free way to connect to BitBucket.
  • Antoine Aubry for YamlDotNet which made use of YAML format for the application configuration file as trivial as a yawn.
  • Anthony van der Hoorn & Nik Molnar for creating Semantic Release Notes
  • All contributors of RestSharp which is a swiss-army knife of REST clients and life without it would be meaningless. (bows)
  • All contributors of LibGit2Sharp which made it possible to traverse a Git repo history to find all unreleased commits
  • JetBrains for supporting this open source project by donating a free ReSharper license

About

A lightweight way to generate semantic release notes from unreleased pull requests and publish them to Confluence and Slack

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 99.4%
  • Dockerfile 0.6%