A .NET global tool that generates categorized release notes from git commit history using the GitHub API.
dotnet tool install -g GitReleaseNoteGenerator# Generate release notes for the latest release
git-release-notes --token <GITHUB_PAT> --owner myorg --repo myrepo --release-version v2.0.0
# Auto-detect version via NBGV, write to file
git-release-notes --token <GITHUB_PAT> --owner myorg --repo myrepo --output-file release-notes.md
# Use with GITHUB_OUTPUT in CI
git-release-notes --github-output --output-name changelog| Option | Type | Default | Description |
|---|---|---|---|
--token |
string | GITHUB_TOKEN env var |
GitHub personal access token |
--owner |
string | From GITHUB_REPOSITORY env |
Repository owner |
--repo |
string | From GITHUB_REPOSITORY env |
Repository name |
--base-ref |
string | Latest release tag | Base ref to compare from |
--head-ref |
string | Default branch | Head ref to compare to |
--release-version |
string | Auto-detect via NBGV | Version string for the heading |
--output-file |
path | (none) | Write release notes to a file |
--github-output |
flag | false |
Write to GITHUB_OUTPUT |
--output-name |
string | changelog |
Variable name for GITHUB_OUTPUT |
Commits are categorized by their conventional-commit-style prefix:
| Prefix | Category | Emoji |
|---|---|---|
break |
Breaking Changes | 💥 |
feat |
Features | ✨ |
refactor |
Refactoring | ♻️ |
fix, bug |
Fixes | 🐛 |
perf |
Performance | ⚡ |
housekeeping, chore, update |
General Changes | 🧹 |
test |
Tests | ✅ |
doc |
Documentation | 📝 |
style |
Style Changes | 💅 |
dep |
Dependencies | 📦 |
Commits from dependabot[bot] and renovate[bot] are automatically categorized as Dependencies.
name: Create Release
on:
push:
tags: ['v*']
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- run: dotnet tool install -g GitReleaseNoteGenerator
- name: Generate Release Notes
env:
GITHUB_TOKEN: ${{ github.token }}
run: git-release-notes --release-version ${{ github.ref_name }} --output-file release-notes.md
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: gh release create "${{ github.ref_name }}" --title "${{ github.ref_name }}" --notes-file release-notes.mdIf you are migrating from the ChangeLog GitHub Action:
- Replace the
glennawatson/ChangeLog@...step with the dotnet tool install and run steps shown above. - The commit prefix categories and emoji mappings are the same.
- Use
--output-filewithgh release create --notes-fileinstead of action outputs. - The
GITHUB_TOKENenvironment variable is read automatically when--tokenis not specified.
MIT