Generic

Use this releaser if no specific releaser is available.

The generic releaser does not support all features.

The following features are not available when the generic Git releaser is configured:

  • packaging tools: Homebrew, Chocolatey, JBang, Scoop, Snap.

  • announcers: Sdkman.

  • auto-config is not supported.

Only the release tag will be created. If you’d like to upload artifacts to a particular destination then configure an uploader.

Legend:

  • required

  • optional

  • may use environment variable

  • accepts Name Templates

  • YAML

  • TOML

  • JSON

  • Maven

  • Gradle

# 
release:
  # Repo in which the release will be created.
  # 
  generic:
    # Disables or enables publication to the remote Git repository.
    # defaults to `true`.
    # 
    enabled: true

    # Defines the connection timeout in seconds.
    # Defaults to `20`.
    # 
    connectTimeout: 20

    # Defines the read timeout in seconds.
    # Defaults to `60`.
    # 
    readTimeout: 60

    # The user or organization that owns the repository.
    # If unspecified, will read it from the 'origin' git remote.
    # 
    owner: duke

    # The name of the repository.
    # If unspecified, will read it from the 'origin' git remote.
    # 
    name: app

    # The remote Git host url.
    # 
    host: https://my.githost.com

    # Username used for authoring commits. Must have write access to the repository.
    # 
    username: duke

    # Password or OAuth token with write access to the repository.
    # If left unspecified, the `JRELEASER_GENERIC_TOKEN`
    # environment variable must be defined.
    #  
    token: __DO_NOT_SET_HERE__

    # The tag associated with the release.
    # May define a `JRELEASER_TAG_NAME` environment variable instead.
    # If left unspecified, will use `v{{projectVersion}}`.
    #   
    tagName: v1.0.0

    # Drops and creates an existing release with matching tag.
    # May define a `JRELEASER_OVERWRITE` environment variable instead.
    # Defaults to `false`.
    #  
    overwrite: true

    # Skips creating a tag.
    # Useful when the tag was created externally.
    # May define a `JRELEASER_SKIP_TAG` environment variable instead.
    # Defaults to `false`.
    #  
    skipTag: false

    # Git author used to commit to the repository.
    # 
    commitAuthor:
      # Name used when authoring commits.
      # Defaults to `jreleaserbot`.
      # 
      name: jreleaserbot

      # E-mail used when authoring commits.
      # Defaults to `jreleaser@kordamp.org`.
      # 
      email: jreleaser@kordamp.org

    # Signs commits with the configured credentials.
    # The Signing section must be configured as well.
    # Defaults to `false`.
    # 
    sign: false

    # Changelog customization.
    # 
    changelog:
      # Disables or enables the changelog.
      # defaults to `true`.
      # 
      enabled: true

      # Sorts commits in ascending (oldest first) or descending (newer first).
      # Valid values are: `ASC`, `DESC`.
      # Defaults to `DESC`.
      # 
      sort: DESC

      # Path to an external file that contains the changelog, read as is.
      # May be a relative path to the configuration file or an absolute path.
      # If unspecified, JReleaser will automatically calculate the changelog.
      # 
      external: path/to/changelog.md

      # Create explicit markdown links for commit hashes.
      # Defaults to `false`.
      # 
      links: false

      # Enables or disables formatting options.
      # Valid values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
      # Defaults to `NEVER`.
      # 
      formatted: ALWAYS

      # The template to use for each change.
      # Defaults to `- {{commitShortHash}} {{commitTitle}} ({{commitAuthor}})`.
      #  
      change: '- {{commitShortHash}} {{commitTitle}}'

      # The template to use for the whole changelog.
      # Defaults is shown.
      #  
      content: |
        # Changelog

        {{changelogChanges}
        {{changelogContributors}}

      # Path to a template file that defines the contents.
      # Review the available Name Templates.
      # Defaults to `src/jreleaser/templates/changelog.tpl`.
      # 
      contentTemplate: path/to/template/changelog.tpl

      # Hide uncategorized commits.
      # Defaults to `false`.
      # 
      hideUncategorized: true

      # A list of labels to be included.
      # Only changes matching this list will be included.
      # Defaults to empty.
      # 
      includeLabels:
        - 'issue'

      # A list of labels to be excluded.
      # Changes matching this list will be excluded.
      # Defaults to empty.
      # 
      excludeLabels:
        - 'issue'

      # Defines rules that apply labels to changes.
      # Matchers are evaluated independently; the label will
      # be set if at least one of the matchers meets the criteria.
      # 
      labelers:
          # The label to be applied.
          # 
        - label: 'issue'

          # Matches the text of the first commit line.
          # 
          title: '^fix:'

          # Matches the full text of the commit.
          # 
          body: 'Fixes #'

      # Groups changes by category.
      # Defaults are shown.
      # 
      categories:
        - title: '🚀 Features'
          labels:
            - 'feature'
            - 'enhancement'
        - title: '🐛 Bug Fixes'
          labels:
            - 'bug'
            - 'fix'

      # Defines rules for replacing the generated content.
      # Each replacer is applied in order.
      # 
      replacers:
        - search: '\[chore\]\s'
          replace: ''
        - search: '/CVE-(\d{4})-(\d+)/g'
          replace: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2'

    # The target branch to use.
    # May define a `JRELEASER_BRANCH` environment variable instead.
    # Defaults to the branch pointed by HEAD.
    #  
    branch: main
# Repo in which the release will be created.
# 
[release.generic]
  # Disables or enables publication to the remote Git repository.
  # defaults to `true`.
  # 
  enabled = true

  # Defines the connection timeout in seconds.
  # Defaults to `20`.
  # 
  connectTimeout = 20

  # Defines the read timeout in seconds.
  # Defaults to `60`.
  # 
  readTimeout = 60

  # The user or organization that owns the repository.
  # 
  owner = "duke"

  # The name of the repository.
  # If unspecified, will use ${project.name}.
  # 
  name = "app"

  # The remote Git host url.
  # 
  host = "https://my.githost.com"

  # Username used for authoring commits. Must have write access to the repository.
  # 
  username = "duke"

  # Password or OAuth token with write access to the repository.
  # If left unspecified, the `JRELEASER_GENERIC_TOKEN`
  # environment variable must be defined.
  #  
  token = "__DO_NOT_SET_HERE__"

  # The tag associated with the release.
  # May define a `JRELEASER_TAG_NAME` environment variable instead.
  # If left unspecified, will use `v{{projectVersion}}`.
  #   
  tagName = "v1.0.0"

  # Drops and creates an existing release with matching tag.
  # May define a `JRELEASER_OVERWRITE` environment variable instead.
  # Defaults to `false`.
  #  
  overwrite = true

  # Skips creating a tag.
  # Useful when the tag was created externally.
  # May define a `JRELEASER_SKIP_TAG` environment variable instead.
  # Defaults to `false`.
  #  
  skipTag = false

  # Git author used to commit to the repository.

  # Name used when authoring commits.
  # Defaults to `jreleaserbot`.
  # 
  commitAuthor.name = "jreleaserbot"

  # E-mail used when authoring commits.
  # Defaults to `jreleaser@kordamp.org`.
  # 
  commitAuthor.email = "jreleaser@kordamp.org"

  # Signs commits with the configured credentials.
  # The Signing section must be configured as well.
  # Defaults to `false`.
  # 
  sign = false

  # Changelog customization.

  # Disables or enables the changelog.
  # defaults to `true`.
  # 
  changelog.enabled = true

  # Sorts commits in ascending (oldest first) or descending (newer first).
  # Valid values are: `ASC`, `DESC`.
  # Defaults to `DESC`.
  # 
  changelog.sort = "DESC"

  # Path to an external file that contains the changelog, read as is.
  # May be a relative path to the configuration file or an absolute path.
  # If unspecified, JReleaser will automatically calculate the changelog.
  # 
  changelog.external = "path/to/changelog.md"

  # Create explicit markdown links for commit hashes.
  # Defaults to `false`.
  # 
  changelog.links = false

  # Enables or disables formatting options.
  # Valid values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
  # Defaults to `NEVER`.
  # 
  changelog.formatted = "ALWAYS"

  # The template to use for each change.
  # Defaults to `- {{commitShortHash}} {{commitTitle}} ({{commitAuthor}})`.
  #  
  changelog.change = "- {{commitShortHash}} {{commitTitle}}"

  # The template to use for the whole changelog.
  # Defaults is shown.
  #  
  changelog.content = """
    # Changelog

    {{changelogChanges}
    {{changelogContributors}}"""

  # Path to a template file that defines the contents.
  # Review the available Name Templates.
  # Defaults to `src/jreleaser/templates/changelog.tpl`.
  # 
  changelog.contentTemplate = "path/to/template/changelog.tpl"

  # Hide uncategorized commits.
  # Defaults to `false`.
  # 
  changelog.hideUncategorized = true

  # A list of labels to be included.
  # Only changes matching this list will be included.
  # Defaults to empty.
  # 
  changelog.includeLabels = ["issue"]

  # A list of labels to be excluded.
  # Changes matching this list will be excluded.
  # Defaults to empty.
  # 
  changelog.excludeLabels = ["issue"]

  # Defines rules that apply labels to changes.
  # Matchers are evaluated independently; the label will
  # be set if at least one of the matchers meets the criteria.
  # 
  [[release.generic.changelog.labelers]]
    # The label to be applied.
    # 
    label = "issue"

    # Matches the text of the first commit line.
    # 
    title = "^fix:"

    # Matches the full text of the commit.
    # 
    body = "Fixes #"

  # Groups changes by category.
  # Defaults are shown.
  # 
  [[release.generic.changelog.categories]]
    title = "🚀 Features"
    labels = ["feature", "enhancement"]

  [[release.generic.changelog.categories]]
    title = "🐛 Bug Fixes"
    labels = ["bug", "fix"]

  # Defines rules for replacing the generated content.
  # Each replacer is applied in order.
  # 
  [[release.generic.changelog.replacers]]
    search = "\[chore\]\s"
    replace = ""

  [[release.generic.changelog.replacers]]
    search = "/CVE-(\d{4})-(\d+)/g"
    replace = "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2"

  # The target branch to use.
  # May define a `JRELEASER_BRANCH` environment variable instead.
  # Defaults to the branch pointed by HEAD.
  #  
  branch = "main"
{
  // 
  "release": {
    // Repo in which the release will be created.
    // 
    "generic": {
      // Disables or enables publication to the remote Git repository.
      // defaults to `true`.
      // 
      "enabled": true,

      // Defines the connection timeout in seconds.
      // Defaults to `20`.
      // 
      "connectTimeout": 20,

      // Defines the read timeout in seconds.
      // Defaults to `60`.
      // 
      "readTimeout": 60,

      // The user or organization that owns the repository.
      // If unspecified, will read it from the 'origin' git remote.
      // 
      "owner": "duke",

      // The name of the repository.
      // If unspecified, will read it from the 'origin' git remote.
      // 
      "name": "app",

      // The remote Git host url.
      // 
      "host": "https://my.githost.com",

      // Username used for authoring commits. Must have write access to the repository.
      // 
      "username": "duke",

      // Password or OAuth token with write access to the repository.
      // If left unspecified, the `JRELEASER_GENERIC_TOKEN`
      // environment variable must be defined.
      //  
      "token": "__DO_NOT_SET_HERE__",

      // The tag associated with the release.
      // May define a `JRELEASER_TAG_NAME` environment variable instead.
      // If left unspecified, will use `v{{projectVersion}}`.
      //   
      "tagName": "v1.0.0",

      // Drops and creates an existing release with matching tag.
      // May define a `JRELEASER_OVERWRITE` environment variable instead.
      // Defaults to `false`.
      //  
      "overwrite": true,

      // Skips creating a tag.
      // Useful when the tag was created externally.
      // May define a `JRELEASER_SKIP_TAG` environment variable instead.
      // Defaults to `false`.
      //  
      "skipTag": false,

      // Git author used to commit to the repository.
      // 
      "commitAuthor": {
        // Name used when authoring commits.
        // Defaults to `jreleaserbot`.
        // 
        "name": "jreleaserbot",

        // E-mail used when authoring commits.
        // Defaults to `jreleaser@kordamp.org`.
        // 
        "email": "jreleaser@kordamp.org"
      },

      // Signs commits with the configured credentials.
      // The Signing section must be configured as well.
      // Defaults to `false`.
      // 
      "sign": false,

      // Changelog customization.
      // 
      "changelog": {
        // Disables or enables the changelog.
        // defaults to `true`.
        // 
        "enabled": true,

        // Sorts commits in ascending (oldest first) or descending (newer first).
        // Valid values are: `ASC`, `DESC`.
        // Defaults to `DESC`.
        // 
        "sort": "DESC",

        // Path to an external file that contains the changelog, read as is.
        // May be a relative path to the configuration file or an absolute path.
        // If unspecified, JReleaser will automatically calculate the changelog.
        // 
        "external": "path/to/changelog.md",

        // Create explicit markdown links for commit hashes.
        // Defaults to `false`.
        // 
        "links": false,

        // Enables or disables formatting options.
        // Valid values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        // Defaults to `NEVER`.
        // 
        "formatted": "ALWAYS",

        // The template to use for each change.
        // Defaults to `- {{commitShortHash}} {{commitTitle}} ({{commitAuthor}})`.
        //  
        "change": "- {{commitShortHash}} {{commitTitle}}",

        // The template to use for the whole changelog.
        // Defaults is shown.
        //  
        "content": "#Changelog\n\n{{changelogChanges}}\n{{changelogContributors}}",

        // Path to a template file that defines the contents.
        // Review the available Name Templates.
        // Defaults to `src/jreleaser/templates/changelog.tpl`.
        // 
        "contentTemplate": "path/to/template/changelog.tpl",

        // Hide uncategorized commits.
        // Defaults to `false`.
        // 
        "hideUncategorized": true,

        // A list of labels to be included.
        // Only changes matching this list will be included.
        // Defaults to empty.
        // 
        "includeLabels": [
           "issue"
        ],

        // A list of labels to be excluded.
        // Changes matching this list will be excluded.
        // Defaults to empty.
        // 
        "excludeLabels": [
           "issue"
        ],

        // Defines rules that apply labels to changes.
        // Matchers are evaluated independently; the label will
        // be set if at least one of the matchers meets the criteria.
        // 
        "labelers": [
          {
            // The label to be applied.
            // 
            "label": "issue",

            // Matches the text of the first commit line.
            // 
            "title": "^fix:",

            // Matches the full text of the commit.
            // 
            "body": "Fixes #"
          }
        ],

        // Groups changes by category.
        // Defaults are shown.
        // 
        "categories": [
          {
            "title": "🚀 Features",
            "labels": [
              "feature",
              "enhancement"
            ]
          },
          {
            "title": "🐛 Bug Fixes",
            "labels": [
              "bug",
              "fix"
            ]
          }
        ],

        // Defines rules for replacing the generated content.
        // Each replacer is applied in order.
        // 
        "replacers": [
          {
            "search": "\[chore\]\s",
            "replace": ""
          },
          {
            "search": "/CVE-(\d{4})-(\d+)/g",
            "replace": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2"
          }
        ]
      },

      // The target branch to use.
      // May define a `JRELEASER_BRANCH` environment variable instead.
      // Defaults to the branch pointed by HEAD.
      //  
      "branch": "main"
     }
  }
}
<jreleaser>
  <!--
    
  -->
  <release>
    <!--
      Repo in which the release will be created.
      
    -->
    <generic>

      <!--
        Disables or enables publication to the remote Git repository.
        defaults to `true`.
        
      -->
      <enabled>true</enabled>

      <!--
        Defines the connection timeout in seconds.
        Defaults to `20`.
        
      -->
      <connectTimeout>20</connectTimeout>

      <!--
        Defines the read timeout in seconds.
        Defaults to `60`.
        
      -->
      <readTimeout>60</readTimeout>

      <!--
        The user or organization that owns the repository.
        If unspecified, will read it from the 'origin' git remote.
        
      -->
      <owner>duke</owner>

      <!--
        The name of the repository.
        If unspecified, will read it from the 'origin' git remote.
        
      -->
      <name>app</name>

      <!--
        The remote Git host url.
        
      -->
      <host>https://my.githost.com</host>

      <!--
        Username used for authoring commits. Must have write access to the repository.
        
      -->
      <username>duke</username>

      <!--
        Password or OAuth token with write access to the repository.
        If left unspecified, the `JRELEASER_GENERIC_TOKEN`
        environment variable must be defined.
         
      -->
      <token>__DO_NOT_SET_HERE__</token>

      <!--
        The tag associated with the release.
        May define a `JRELEASER_TAG_NAME` environment variable instead.
        If left unspecified, will use `v{{projectVersion}}`.
          
      -->
      <tagName>v1.0.0</tagName>

      <!--
        Drops and creates an existing release with matching tag.
        May define a `JRELEASER_OVERWRITE` environment variable instead.
        Defaults to `false`.
         
      -->
      <overwrite>true</overwrite>

      <!--
        Skips creating a tag.
        Useful when the tag was created externally.
        May define a `JRELEASER_SKIP_TAG` environment variable instead.
        Defaults to `false`.
         
      -->
      <skipTag>false</skipTag>

      <!--
        Git author used to commit to the repository.
        
      -->
      <commitAuthor>

        <!--
           Name used when authoring commits.
          Defaults to `jreleaserbot`.
          
        -->
        <name>jreleaserbot</name>

        <!--
          E-mail used when authoring commits.
          Defaults to `jreleaser@kordamp.org`.
          
        -->
        <email>jreleaser@kordamp.org</email>
      </commitAuthor>

      <!--
        Signs commits with the configured credentials.
        The Signing section must be configured as well.
        Defaults to `false`.
        
      -->
      <sign>false</sign>

      <!--
        Changelog customization.
        
      -->
      <changelog>

        <!--
           Disables or enables the changelog.
          defaults to `true`.
          
        -->
        <enabled>true</enabled>

        <!--
          Sorts commits in ascending (oldest first) or descending (newer first).
          Valid values are>`ASC`, `DESC`.
          Defaults to `DESC`.
          
        -->
        <sort>DESC</sort>

        <!--
          Path to an external file that contains the changelog, read as is.
          May be a relative path to the configuration file or an absolute path.
          If unspecified, JReleaser will automatically calculate the changelog.
          
        -->
        <external>path/to/changelog.md</external>

        <!--
          Create explicit markdown links for commit hashes.
          Defaults to `false`.
          
        -->
        <links>false</links>

        <!--
          Enables or disables formatting options.
          Valid values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
          Defaults to `NEVER`.
          
        -->
        <formatted>ALWAYS</formatted>

        <!--
          The template to use for each change.
          Defaults to `- {{commitShortHash}} {{commitTitle}} ({{commitAuthor}})`.
           
        -->
        <change>- {{commitShortHash}} {{commitTitle}}</change>

        <!--
          The template to use for the whole changelog.
          Defaults is shown.
           
        -->
        <content>
          # Changelog

          {{changelogChanges}
          {{changelogContributors}}
        </content>

        <!--
          Path to a template file that defines the contents.
          Review the available Name Templates.
          Defaults to `src/jreleaser/templates/changelog.tpl`.
          
        -->
        <contentTemplate>path/to/template/changelog.tpl</contentTemplate>

        <!--
          Hide uncategorized commits.
          Defaults to `false`.
          
        -->
        <hideUncategorized>true</hideUncategorized>

        <!--
          A list of labels to be included.
          Only changes matching this list will be included.
          Defaults to empty.
          
        -->
        <includeLabels>
          <includeLabel>issue</includeLabel>
        </includeLabels>

        <!--
          A list of labels to be excluded.
          Changes matching this list will be excluded.
          Defaults to empty.
          
        -->
        <excludeLabels>
          <excludeLabel>issue</excludeLabel>
        </excludeLabels>

        <!--
          Defines rules that apply labels to changes.
          Matchers are evaluated independently; the label will
          be set if at least one of the matchers meets the criteria.
          
        -->
        <labelers>
          <labeler>
            <!--
              The label to be applied.
              
            -->
            <label>issue</label>

            <!--
              Matches the text of the first commit line.
              
            -->
            <title>^fix:</title>

            <!--
              Matches the full text of the commit.
              
            -->
            <body>Fixes #</body>
          </labeler>
        </labelers>

        <!--
          Groups changes by category.
          Defaults are shown.
          
        -->
        <categories>
          <category>
            <title>🚀 Features</title>
            <labelsAsString>feature,enhancement</labelsAsString>
          </category>
          <category>
            <title>🐛 Bug Fixes</title>
            <labelsAsString>bug,fix</labelsAsString>
          </category>
        </categories>

        <!--
          Defines rules for replacing the generated content.
          Each replacer is applied in order.
          
        -->
        <replacers>
          <replacer>
            <search>\[chore\]\s</search>
          </replacer>
          <replacer>
            <search>/CVE-(\d{4})-(\d+)/g</search>
            <replace>https: cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2</replace>
          </replacer>
        </replacers>
      </changelog>

      <!--
        The target branch to use.
        May define a `JRELEASER_BRANCH` environment variable instead.
        Defaults to the branch pointed by HEAD.
         
      -->
      <branch>main</branch>
    </generic>
  </release>
</jreleaser>
jreleaser {
  // 
  release {
    // Repo in which the release will be created.
    // 
    generic {
      // Disables or enables publication to the remote Git repository.
      // defaults to `true`.
      // 
      enabled = true

      // Defines the connection timeout in seconds.
      // Defaults to `20`.
      // 
      connectTimeout = 20

      // Defines the read timeout in seconds.
      // Defaults to `60`.
      // 
      readTimeout = 60

      // The user or organization that owns the repository.
      // If unspecified, will read it from the 'origin' git remote.
      // 
      owner = 'duke'

      // The name of the repository.
      // If unspecified, will read it from the 'origin' git remote.
      // 
      name = 'app'

      // The remote Git host url.
      // 
      host = 'https://my.githost.com'

      // Username used for authoring commits. Must have write access to the repository.
      // 
      username = 'duke'

      // Password or OAuth token with write access to the repository.
      // If left unspecified, the `JRELEASER_GENERIC_TOKEN`
      // environment variable must be defined.
      //  
      token = '__DO_NOT_SET_HERE__'

      // The tag associated with the release.
      // May define a `JRELEASER_TAG_NAME` environment variable instead.
      // If left unspecified, will use `v{{projectVersion}}`.
      //   
      tagName = 'v1.0.0'

      // Drops and creates an existing release with matching tag.
      // May define a `JRELEASER_OVERWRITE` environment variable instead.
      // Defaults to `false`.
      //  
      overwrite = true

      // Skips creating a tag.
      // Useful when the tag was created externally.
      // May define a `JRELEASER_SKIP_TAG` environment variable instead.
      // Defaults to `false`.
      //  
      skipTag = false

      // Git author used to commit to the repository.
      // 
      commitAuthor {
        // Name used when authoring commits.
        // Defaults to `jreleaserbot`.
        // 
        name = 'jreleaserbot'

        // E-mail used when authoring commits.
        // Defaults to `jreleaser@kordamp.org`.
        // 
        email = 'jreleaser@kordamp.org'
      }

      // Signs commits with the configured credentials.
      // The Signing section must be configured as well.
      // Defaults to `false`.
      // 
      sign = false

      // Changelog customization.
      // 
      changelog {
        // Disables or enables the changelog.
        // defaults to `true`.
        // 
        enabled = true

        // Sorts commits in ascending (oldest first) or descending (newer first).
        // Valid values are = `ASC`, `DESC`.
        // Defaults to `DESC`.
        // 
        sort = 'DESC'

        // Path to an external file that contains the changelog, read as is.
        // May be a relative path to the configuration file or an absolute path.
        // If unspecified, JReleaser will automatically calculate the changelog.
        // 
        external = 'path/to/changelog.md'

        // Create explicit markdown links for commit hashes.
        // Defaults to `false`.
        // 
        links = false

        // Enables or disables formatting options.
        // Valid values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        // Defaults to `NEVER`.
        // 
        formatted = 'ALWAYS'

        // The template to use for each change.
        // Defaults to `- {{commitShortHash}} {{commitTitle}} ({{commitAuthor}})`.
        //  
        change = '- {{commitShortHash}} {{commitTitle}}'

        // The template to use for the whole changelog.
        // Defaults is shown.
        //  
        content = '#Changelog\n\n{{changelogChanges}}\n{{changelogContributors}}'

        // Path to a template file that defines the contents.
        // Review the available Name Templates.
        // Defaults to `src/jreleaser/templates/changelog.tpl`.
        // 
        contentTemplate = 'path/to/template/changelog.tpl'

        // Hide uncategorized commits.
        // Defaults to `false`.
        // 
        hideUncategorized = true

        // A list of labels to be included.
        // Only changes matching this list will be included.
        // Defaults to empty.
        // 
        includeLabels = [
           'issue'
        ]

        // A list of labels to be excluded.
        // Changes matching this list will be excluded.
        // Defaults to empty.
        // 
        excludeLabels = [
           'issue'
        ]

        // Defines rules that apply labels to changes.
        // Matchers are evaluated independently; the label will
        // be set if at least one of the matchers meets the criteria.
        // 
        labeler {
          // The label to be applied.
          // 
          label = 'issue'

          // Matches the text of the first commit line.
          // 
          title = '^fix:'

          // Matches the full text of the commit.
          // 
          body = 'Fixes #'
        }

        // Groups changes by category.
        // Defaults are shown.
        // 
        category  {
          title = '🚀 Features'
          labels = [
            'feature',
            'enhancement'
          ]
        }
        category {
          title = '🐛 Bug Fixes'
          labels = [
            'bug',
            'fix'
          ]
        }

        // Defines rules for replacing the generated content.
        // Each replacer is applied in order.
        // 
        replacer {
          search = '\[chore\]\s'
          replace = ''
        }
        replacer {
          search = '/CVE-(\d{4})-(\d+)/g'
          replace = 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2'
        }
      }

      // The target branch to use.
      // May define a `JRELEASER_BRANCH` environment variable instead.
      // Defaults to the branch pointed by HEAD.
      // v
      branch = 'main'
    }
  }
}

Changelog

You may define either content or contentTemplate, with the latter taking precedence over the former.

Changelog format applies only to the automatically generated changelog, that is, formatting wo’t occur if the external property is set. Format applies only to local commits at the moment, the use of labelers is highly encouraged.

The change property only accepts the following name templates:

Key Description

commitShortHash

head commit hash abbreviated to 7 characters

commitFullHash

head commit hash

commitTitle

first line of the commit message

commitAuthor

full name of the commit author

commitsUrl

commits URl as provided by the Git host

The content and contentTemplate accept all Name Templates, take special consideration on {{changelogChanges}} and {{changelogContributors}} as they define the parsed commits.

The following configuration

release:
  generic:
    host: https://git-codecommit.us-east-2.amazonaws.com/v1/repos
    username: aalmiray
    overwrite: true
    sign: true
    changelog:
      formatted: ALWAYS
      change: '- {{commitShortHash}} {{commitTitle}}'
      labelers:
        - label: 'feature'
          title: 'Resolves #'
          body: 'Resolves #'
        - label: 'issue'
          title: 'Fixes #'
          body: 'Fixes #'
        - label: 'issue'
          title: 'Relates to #'
          body: 'Relates to #'
        - label: 'task'
          title: '[chore]'
      categories:
        - title: '🚀 Features'
          labels:
            - 'feature'
        - title: '✅ Issues'
          labels:
            - 'issue'
        - title: '🧰 Tasks'
          labels:
            - 'task'
      replacers:
        - search: '\[chore\] '
          replace: ''

Generates a changelog similar to

jreleaser changelog render