Generic

Use this releaser if no specific releaser is available.

Refer to Changelog for full options on changelog customizations.

The generic releaser does not support all features.

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

  • packaging tools: AppImage, Asdf, Flatpak, Homebrew, Chocolatey, JBang, Scoop, Snap, Spec.

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

Configuration

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 Generic.
    # 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 Generic host url.
    # 
    host: https://my.githost.com

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

    # Password or OAuth token with write access to the repository.
    #  
    token: __DO_NOT_SET_HERE__
    # The tag associated with the release.
    # If left unspecified, will use `v{{projectVersion}}`.
    #   
    tagName: v1.0.0

    # The tag to compare against the release tag. Is used to fetch all commits between those tags.
    # If left unspecified, will use the previous logical tag of `tagName`.
    #  
    previousTagName: v0.9.0

    # The name of the release.
    # If left unspecified, will use `Release {{tagName}}`.
    #   
    releaseName: Release v1.0.0

    # Drops and creates an existing release with matching tag.
    # Defaults to `false`.
    #  
    overwrite: true
    # Skips creating a tag.
    # Useful when the tag was created externally.
    # Defaults to `false`.
    #  
    skipTag: false

    # Skips creating a release.
    # Useful when release assets will be handled with an uploader.
    # Defaults to `false`.
    #  
    skipRelease: false

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

    # The target branch to pull from.
    # Defaults to the branch pointed by HEAD.
    #  
    branch: main

    # The target branch to push to.
    # Defaults to the branch pointed by `#{branch}`.
    #   
    branchPush: '{{projectName}}-{{tagName}}'
    # 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
# Repo in which the release will be created.
# 
[release.generic]

  # Disables or enables publication to Generic.
  # 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 Generic host url.
  # 
  host = "https://my.githost.com"

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

  # Password or OAuth token with write access to the repository.
  #  
  token = "__DO_NOT_SET_HERE__"
  # The tag associated with the release.
  # If left unspecified, will use `v{{projectVersion}}`.
  #   
  tagName = "v1.0.0"

  # The tag to compare against the release tag. Is used to fetch all commits between those tags.
  # If left unspecified, will use the previous logical tag of `tagName`.
  #  
  previousTagName = "v0.9.0"

  # The name of the release.
  # If left unspecified, will use `Release {{tagName}}`.
  #   
  releaseName = "Release v1.0.0"

  # Drops and creates an existing release with matching tag.
  # Defaults to `false`.
  #  
  overwrite = true
  # Skips creating a tag.
  # Useful when the tag was created externally.
  # Defaults to `false`.
  #  
  skipTag = false

  # Skips creating a release.
  # Useful when release assets will be handled with an uploader.
  # Defaults to `false`.
  #  
  skipRelease = false

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

  # The target branch to pull from.
  # Defaults to the branch pointed by HEAD.
  #  
  branch = "main"

  # The target branch to push to.
  # Defaults to the branch pointed by `#{branch}`.
  #    
  branchPush = "{{projectName}}-{{tagName}}"
  # 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"
{
  // 
  "release": {
    // Repo in which the release will be created.
    // 
    "generic": {
      // Disables or enables publication to Generic.
      // 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 Generic host url.
      // 
      "host": "https://my.githost.com",

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

      // Password or OAuth token with write access to the repository.
      //  
      "token": "__DO_NOT_SET_HERE__",
      // The tag associated with the release.
      // If left unspecified, will use `v{{projectVersion}}`.
      //   
      "tagName": "v1.0.0",

      // The tag to compare against the release tag. Is used to fetch all commits between those tags.
      // If left unspecified, will use the previous logical tag of `tagName`.
      //  
      "previousTagName": "v0.9.0",

      // The name of the release.
      // If left unspecified, will use `Release {{tagName}}`.
      //   
      "releaseName": "Release v1.0.0",

      // Drops and creates an existing release with matching tag.
      // Defaults to `false`.
      //  
      "overwrite": true,
      // Skips creating a tag.
      // Useful when the tag was created externally.
      // Defaults to `false`.
      //  
      "skipTag": false,

      // Skips creating a release.
      // Useful when release assets will be handled with an uploader.
      // Defaults to `false`.
      //  
      "skipRelease": false,

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

      // The target branch to pull from.
      // Defaults to the branch pointed by HEAD.
      //  
      "branch": "main",

      // The target branch to push to.
      // Defaults to the branch pointed by `#{branch}`.
      //   
      "branchPush": "{{projectName}}-{{tagName}}",
      // 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"
      },
    }
  }
}
<jreleaser>
  <!--
    
  -->
  <release>
    <!--
      Repo in which the release will be created.
      
    -->
    <generic>

      <!--
        Disables or enables publication to Generic.
        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.
        
      -->
      <owner>duke</owner>

      <!--
        The name of the repository.
        If unspecified, will use `#{project.name}`.
        
      -->
      <name>app</name>

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

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

      <!--
        Password or OAuth token with write access to the repository.
         
      -->
      <token>__DO_NOT_SET_HERE__</token>
      <!--
        The tag associated with the release.
        If left unspecified, will use `v{{projectVersion}}`.
          
      -->
      <tagName>v1.0.0</tagName>

      <!--
        The tag to compare against the release tag. Is used to fetch all commits between those tags.
        If left unspecified, will use the previous logical tag of `tagName`.
         
      -->
      <previousTagName>v0.9.0</previousTagName>

      <!--
        The name of the release.
        If left unspecified, will use `Release {{tagName}}`.
          
      -->
      <releaseName>Release v1.0.0</releaseName>

      <!--
        Drops and creates an existing release with matching tag.
        Defaults to `false`.
         
      -->
      <overwrite>true</overwrite>
      <!--
        Skips creating a tag.
        Useful when the tag was created externally.
        Defaults to `false`.
         
      -->
      <skipTag>false</skipTag>

      <!--
        Skips creating a release.
        Useful when release assets will be handled with an uploader.
        Defaults to `false`.
         
      -->
      <skipRelease>false</skipRelease>

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

      <!--
        The target branch to pull from.
        Defaults to the branch pointed by HEAD.
         
      -->
      <branch>main</branch>

      <!--
        The target branch to push to.
        Defaults to the branch pointed by `#{branch}`.
          
      -->
      <branchPush>{{projectName}}-{{tagName}}</branchPush>
      <!--
        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>
    </generic>
  </release>
</jreleaser>
jreleaser {
  // 
  release {
    // Repo in which the release will be created.
    // 
    generic {
      // Disables or enables publication to Generic.
      // 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.
      // 
      repoOwner = 'duke'

      // The name of the repository.
      // If unspecified, will use `#{project.name}`.
      // 
      name = 'app'

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

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

      // Password or OAuth token with write access to the repository.
      //  
      token = '__DO_NOT_SET_HERE__'
      // The tag associated with the release.
      // If left unspecified, will use `v{{projectVersion}}`.
      //   
      tagName = 'v1.0.0'

      // The tag to compare against the release tag. Is used to fetch all commits between those tags.
      // If left unspecified, will use the previous logical tag of `tagName`.
      //  
      previousTagName = 'v0.9.0'

      // The name of the release.
      // If left unspecified, will use `Release {{tagName}}`.
      //   
      releaseName = 'Release v1.0.0'

      // Drops and creates an existing release with matching tag.
      // Defaults to `false`.
      //  
      overwrite = true
      // Skips creating a tag.
      // Useful when the tag was created externally.
      // Defaults to `false`.
      //  
      skipTag = false

      // Skips creating a release.
      // Useful when release assets will be handled with an uploader.
      // Defaults to `false`.
      //  
      skipRelease = false

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

      // The target branch to pull from.
      // Defaults to the branch pointed by HEAD.
      // 
      branch = 'main'

      // The target branch to push to.
      // Defaults to the branch pointed by `#{branch}`.
      //   
      branchPush = '{{projectName}}-{{tagName}}'
      // 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'
      }
    }
  }
}

Environment

When not explicitly set, the value of the following properties may be resolved from an environment variable or a system property as shown in the table. The system property takes precedence over the environment variable.

System Property Environment Variable

username

jreleaser.generic.username

JRELEASER_GENERIC_USERNAME

token

jreleaser.generic.token

JRELEASER_GENERIC_TOKEN

tagName

jreleaser.tag.name

JRELEASER_TAG_NAME

previousTagName

jreleaser.previous.tag.name

JRELEASER_PREVIOUS_TAG_NAME

branch

jreleaser.branch

JRELEASER_BRANCH

skipTag

jreleaser.skip.tag

JRELEASER_SKIP_TAG