Automatically generated release notes

You can automatically generate release notes for your GitHub releases

Repository collaborators and people with write access to a repository can generate and customize automated release notes for a release.

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. 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

  1. On GitHub.com, navigate to the main page of the repository.

  2. To the right of the list of files, click Releases. Releases section in right-hand sidebar

  3. Click Draft a new release. Releases draft button

  4. Click Choose a tag and type a version number for your release. Alternatively, select an existing tag.

    Enter a tag

  5. If you are creating a new tag, click Create new tag. Confirm you want to create a new tag

  6. If you have created a new tag, use the drop-down menu to select the branch that contains the project you want to release. Choose a branch

  7. To the top right of the description text box, click Auto-generate release notes. Auto-generate release notes

  8. Check the generated notes to ensure they include all (and only) the information you want to include.

  9. Optionally, to include binary files such as compiled programs in your release, drag and drop or manually select files in the binaries box. Providing a DMG with the Release

  10. To notify users that the release is not ready for production and may be unstable, select This is a pre-release. Checkbox to mark a release as prerelease

  11. Optionally, select Create a discussion for this release, then select the Category drop-down menu and click a category for the release discussion. Checkbox to create a release discussion and drop-down menu to choose a category

  12. If you're ready to publicize your release, click Publish release. To work on the release later, click Save draft. Publish release and Draft release buttons

Creating a template for automatically generated release notes

  1. On GitHub.com, navigate to the main page of the repository.
  2. Above the list of files, using the Add file drop-down, click Create new file. "Create new file" in the "Add file" dropdown
  3. In the file name field, type .github/release.yml to create the release.yml file in the .github directory. Create new file
  4. In the file, specify 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. For more information, see "Managing labels."

Example configuration

release.yml

YAML
# 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:
        - "*"

Release template syntax

ParameterDescriptionRequiredValue
changelogDefines the contents within it as the custom template for your release notes.Required.No value accepted.
excludeCreates a category of pull requests to be excluded from the release. Can be set at the top-level of the changelog to apply to all categories or applied on a per-category basis.OptionalNo value accepted.
authorsSpecifies authors to be excluded from the release.Optional for exclude category.Accepts usernames and bots as values.
categoriesDefines the nested contents as custom categories to be included in the template.OptionalNo value accepted.
titleCreates an individual category.Required if categories parameter exists.Takes the category name as its value.
labelsSpecifies labels to be used by the enclosing category.Required if categories parameter exists, optional for exclude parameter.Accepts any labels, whether currently existing or planned for the future.
"*"Catchall for any pull request not included within a category above. If used, it must be added at the end of the file.OptionalNo value accepted.

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Or, learn how to contribute.