About automatically generated release notes
Automatically generated release notes provide an automated alternative to manually writing release notes for your GitHub releases. With automatically generated release notes, you can quickly generate an overview of the contents of a release. Automatically generated release notes include a list of merged pull requests, a list of contributors to the release, and a link to a full changelog.
You can also customize your automated release notes, using labels to create custom categories to organize pull requests you want to include, and exclude certain labels and users from appearing in the output.
Creating automatically generated release notes for a new release
On GitHub.com, navigate to the main page of the repository.
To the right of the list of files, click Releases.
At the top of the page, click Draft a new release.
To chose a tag for the release, select the Choose a tag dropdown menu.
- To use an existing tag, click the tag.
- To create a new tag, type a version number for your release, then click Create new tag.
If you created a new tag, select the Target dropdown menu, then click the branch that contains the project you want to release.
Optionally, above the description field, select the Previous tag dropdown menu, then click the tag that identifies the previous release.
In the "Release title" field, type a title for your release.
Above the description field, click Generate release notes.
Check the generated notes to ensure they include all (and only) the information you want to include.
Optionally, to include binary files such as compiled programs in your release, drag and drop or manually select files in the binaries box.
Optionally, to notify users that the release is not ready for production and may be unstable, select This is a pre-release.
Optionally, select Set as latest release. If you do not select this option, the latest release label will automatically be assigned based on semantic versioning.
Optionally, if GitHub Discussions is enabled for the repository, create a discussion for the release.
- Select Create a discussion for this release.
- Select the Category dropdown menu, then click a category for the release discussion.
If you're ready to publicize your release, click Publish release. To work on the release later, click Save draft. You can then view your published or draft releases in the releases feed for your repository. For more information, see "Viewing your repository's releases and tags."
Configuring automatically generated release notes
- On GitHub.com, navigate to the main page of the repository.
- Above the list of files, using the Add file drop-down, click Create new file.
- In the file name field, type
.github/release.yml. This will create a new file called
- In the file, using the configuration options below, specify in YAML the pull request labels and authors you want to exclude from this release. You can also create new categories and list the pull request labels to be included in each of them.
|A list of labels that exclude a pull request from appearing in release notes.|
|A list of user or bot login handles whose pull requests are to be excluded from release notes.|
|Required. The title of a category of changes in release notes.|
|Required. Labels that qualify a pull request for this category. Use |
|A list of labels that exclude a pull request from appearing in this category.|
|A list of user or bot login handles whose pull requests are to be excluded from this category.|
A configuration for a repository that labels semver releases
# .github/release.yml changelog: exclude: labels: - ignore-for-release authors: - octocat categories: - title: Breaking Changes 🛠 labels: - Semver-Major - breaking-change - title: Exciting New Features 🎉 labels: - Semver-Minor - enhancement - title: Other Changes labels: - "*"
A configuration for a repository that doesn't tag pull requests but where we want to separate out Dependabot automated pull requests in release notes (
labels: '*' is required to display a catchall category)
# .github/release.yml changelog: categories: - title: 🏕 Features labels: - '*' exclude: labels: - dependencies - title: 👒 Dependencies labels: - dependencies