# Changelog You can customize how the changelog is generated using the `changelog` section in the config file: ```yaml # .goreleaser.yml changelog: # Set this to true if you don't want any changelog at all. # # Warning: this will also ignore any changelog files passed via `--release-notes`, # and will render an empty changelog. # # This may result in an empty release notes on GitHub/GitLab/Gitea. # # Templates: allowed skip: "{{ .Env.CREATE_CHANGELOG }}" # Changelog generation implementation to use. # # Valid options are: # - `git`: uses `git log`; # - `github`: uses the compare GitHub API, appending the author login to the changelog. # - `gitlab`: uses the compare GitLab API, appending the author name and email to the changelog. # - `github-native`: uses the GitHub release notes generation API, disables the groups feature. # # Default: 'git' use: github # Sorts the changelog by the commit's messages. # Could either be asc, desc or empty sort: asc # Max commit hash length to use in the changelog. # # 0: use whatever the changelog implementation gives you # -1: remove the commit hash from the changelog # any other number: max length. # # Since: v1.11.2 abbrev: -1 # Paths to filter the commits for. # Only works when `use: git`, otherwise ignored. # # Default: monorepo.dir value, or empty if no monorepo # Since: v1.12 (pro) # This feature is only available in GoReleaser Pro. paths: - foo/ - bar/ # Group commits messages by given regex and title. # Order value defines the order of the groups. # Providing no regex means all commits will be grouped under the default group. # Groups are disabled when using github-native, as it already groups things by itself. # Matches are performed against strings of the form: "[:] ". # Regex use RE2 syntax as defined here: https://github.com/google/re2/wiki/Syntax. groups: - title: Features regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$' order: 0 - title: "Bug fixes" regexp: '^.*?bug(\([[:word:]]+\))??!?:.+$' order: 1 - title: Others order: 999 # A group can have subgroups. # If you use this, all the commits that match the parent group will also # be checked against its subgroups. If some of them matches, it'll be # grouped there, otherwise they'll remain ungrouped. # # The title is optional - you can think of groups as a way to order # commits within a group. # # There can only be one level of subgroups, i.e. a subgroup cannot have # subgroups. # # This feature is only available in GoReleaser Pro. # # Since: v1.15 (pro) # This feature is only available in GoReleaser Pro. subgroups: - title: "Docs" regex: ".*docs.*" order: 1 - title: "CI" regex: ".*build.*" order: 2 # Divider to use between groups. # # Since: v1.16 (pro) # This feature is only available in GoReleaser Pro. divider: "---" filters: # Commit messages matching the regexp listed here will be removed from # the changelog exclude: - "^docs:" - typo - (?i)foo # Commit messages matching the regexp listed here will be the only ones # added to the changelog # # If include is not-empty, exclude will be ignored. # # Since: v1.19 include: - "^feat:" ``` !!! warning Some things to keep an eye on: * The `github-native` changelog does not support `sort` and `filter`. * When releasing a [nightly][], `use` will fallback to `git`. [nightly]: /customization/nightly