Gitea

Configure releases to a Gitea instance.

Refer to Changelog for full options on changelog customizations.

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.
  # 
  gitea:

    # Disables or enables publication to Gitea.
    # 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 Gitea host url.
    # 
    host: my.gitea.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 Gitea API endpoint to use.
    # You can skip `/api/v1` as it will be added by default.
    # 
    apiEndpoint: https://my.gitea.com

    # 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

    # 
    update:
      # Appends artifacts to an existing release with matching tag,
      # useful if `overwrite` is set to `false`.
      # Defaults to `false`.
      #  
      enabled: true

      # Release sections to be updated.
      # Supported values are [`TITLE`, `BODY`, `ASSETS`].
      # Defaults to `ASSETS`.
      # 
      sections:
        - ASSETS

    # 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}}'

    # Enables or disables asset upload.
    # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`, `PRERELEASE`, `RELEASE_PRERELEASE`].
    # Defaults to `ALWAYS`.
    # 
    uploadAssets: ALWAYS

    # Release files.
    # Defaults to `true`.
    # 
    files: true

    # Release distribution artifacts.
    # Defaults to `true`.
    # 
    artifacts: true

    # Release checksum files.
    # Defaults to `true`.
    # 
    checksums: true

    # Release signature files.
    # Defaults to `true`.
    # 
    signatures: true

    # Release catalog files.
    # Defaults to `true`.
    # 
    catalogs: true

    # Marks the release as a draft.
    # Defaults to `false`.
    #  
    draft: false

    # 
    prerelease:
      # Marks the release as prerelease.
      # Defaults to `false`.
      # 
      enabled: false

      # A regex to determine if the project version is a prerelease
      #  
      pattern: .*-pre

    # 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

    # A milestone associated with the release
    # 
    milestone:
      # Close the milestone (if it exists and still open) upon release.
      # Defaults to `true`.
      # 
      close: true

      # The name/title of the milestone.
      # May define a `JRELEASER_MILESTONE_NAME` environment variable instead.
      # Defaults to `{{tagName}}`.
      #   
      name: '{{tagName}}'

    # Update issues upon release.
    # Adds a label and post a comment to every issue found in the changelog.
    # 
    issues:
      # Enables this feature.
      # Defaults to `false`.
      # 
      enabled: true

      # Comment to post on matching issues.
      #  
      comment: '🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))'

      # Applies the current milestone to issues
      # Valid values are: [`NEVER`, `ALWAYS`, `WARN`, `FORCE`].
      # 
      applyMilestone: ALWAYS

      # Describes the label to be applied.
      # Defaults are shown.
      # 
      label:
        # 
        name: released
        # 
        color: '#FF0000'
        # 
        description: Issue has been released

    # The following properties define  URL formats.
    # Defaults are shown.
    # Review the available Name Templates.

    #  
    repoUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}

    #  
    repoCloneUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git

    #  
    commitUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits

    #  
    srcUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/{gitservice_blob}/{{repoBranch}}

    #  
    downloadUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}

    #  
    releaseNotesUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}

    #  
    latestReleaseUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest

    #  
    issueTrackerUrl: https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues
# Repo in which the release will be created.
# 
[release.gitea]

  # Disables or enables publication to Gitea.
  # 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 Gitea host url.
  # 
  host = "my.gitea.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 Gitea API endpoint to use.
  # You can skip `/api/v1` as it will be added by default.
  # 
  apiEndpoint = "https://my.gitea.com"

  # 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

  # 
  [release.gitea.update]
    # Appends artifacts to an existing release with matching tag,
    # useful if `overwrite` is set to `false`.
    # Defaults to `false`.
    #  
    enabled = true

    # Release sections to be updated.
    # Supported values are [`TITLE`, `BODY`, `ASSETS`].
    # Defaults to `ASSETS`.
    # 
    sections = ["ASSETS"]

  # 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}}"

  # Enables or disables asset upload.
  # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`, `PRERELEASE`, `RELEASE_PRERELEASE`].
  # Defaults to `ALWAYS`.
  # 
  uploadAssets = "ALWAYS"

  # Release files.
  # Defaults to `true`.
  # 
  files = true

  # Release distribution artifacts.
  # Defaults to `true`.
  # 
  artifacts = true

  # Release checksum files.
  # Defaults to `true`.
  # 
  checksums = true

  # Release signature files.
  # Defaults to `true`.
  # 
  signatures = true

  # Release catalog files.
  # Defaults to `true`.
  # 
  catalogs = true

  # Marks the release as a draft.
  # Defaults to `false`.
  #  
  draft = false

  # Marks the release as prerelease.
  # Defaults to `false`.
  # 
  prerelease.enabled = false

  # A regex to determine if the project version is a prerelease
  #  
  prerelease.pattern = .*-pre

  # 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"

  # A milestone associated with the release

  # Close the milestone (if it exists and still open) upon release.
  # Defaults to `true`.
  # 
  milestone.close = true

  # The name/title of the milestone.
  # May define a `JRELEASER_MILESTONE_NAME` environment variable instead.
  # Defaults to `{{tagName}}`.
  #   
  milestone.name = "{{tagName}}"

  # Update issues upon release.
  # Adds a label and post a comment to every issue found in the changelog.

  # Enables this feature.
  # Defaults to `false`.
  # 
  issues.enabled = true

  # Comment to post on matching issues.
  #  
  issues.comment = "🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))"

  # Applies the current milestone to issues
  # Valid values are: [`NEVER`, `ALWAYS`, `WARN`, `FORCE`].
  # 
  issues.applyMilestone = "ALWAYS"

  # Describes the label to be applied.
  # Defaults are shown.
  # 
  issues.label.name = "released"
  # 
  issues.label.namecolor = "#FF0000"
  # 
  issues.label.description = "Issue has been released"

  # The following properties define  URL formats.
  # Defaults are shown.
  # Review the available Name Templates.

  #  
  repoUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}"

  #  
  repoCloneUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git"

  #  
  commitUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits"

  #  
  srcUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/{gitservice_blob}/{{repoBranch}}"

  #  
  downloadUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}"

  #  
  releaseNotesUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}"

  #  
  latestReleaseUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest"

  #  
  issueTrackerUrl = "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues"
{
  // 
  "release": {
    // Repo in which the release will be created.
    // 
    "gitea": {
      // Disables or enables publication to Gitea.
      // 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 Gitea host url.
      // 
      "host": "my.gitea.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 Gitea API endpoint to use.
      // You can skip `/api/v1` as it will be added by default.
      // 
      "apiEndpoint": "https://my.gitea.com",

      // 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,

      // 
      "update": {
        // Appends artifacts to an existing release with matching tag,
        // useful if `overwrite` is set to `false`.
        // Defaults to `false`.
        //  
        "enabled": true,

        // Release sections to be updated.
        // Supported values are [`TITLE`, `BODY`, `ASSETS`].
        // Defaults to `ASSETS`.
        // 
        "sections": ["ASSETS"]
      },

      // 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}}",

      // Enables or disables asset upload.
      // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`, `PRERELEASE`, `RELEASE_PRERELEASE`].
      // Defaults to `ALWAYS`.
      // 
      "uploadAssets": "ALWAYS",

      // Release files.
      // Defaults to `true`.
      // 
      "files": true,

      // Release distribution artifacts.
      // Defaults to `true`.
      // 
      "artifacts": true,

      // Release checksum files.
      // Defaults to `true`.
      // 
      "checksums": true,

      // Release signature files.
      // Defaults to `true`.
      // 
      "signatures": true,

      // Release catalog files.
      // Defaults to `true`.
      // 
      "catalogs": true,

      // Marks the release as a draft.
      // Defaults to `false`.
      //  
      "draft": false,

      // 
      "prerelease": {
        // Marks the release as prerelease.
        // Defaults to `false`.
        // 
        "enabled": false,

        // A regex to determine if the project version is a prerelease
        //  
        "pattern": ".*-pre"
      },

include::partial$release/json/commitauthor.adoc[

      // A milestone associated with the release
      // 
      "milestone": {
        // Close the milestone (if it exists and still open) upon release.
        // Defaults to `true`.
        // 
        "close": true,

        // The name/title of the milestone.
        // May define a `JRELEASER_MILESTONE_NAME` environment variable instead.
        // Defaults to `{{tagName}}`.
        //   
        "name": "{{tagName}}"
      },

      // Update issues upon release.
      // Adds a label and post a comment to every issue found in the changelog.
      // 
      "issues": {
        // Enables this feature.
        // Defaults to `false`.
        // 
        "enabled": true,

        // Comment to post on matching issues.
        //  
        "comment": "🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))",

        // Applies the current milestone to issues
        // Valid values are: [`NEVER`, `ALWAYS`, `WARN`, `FORCE`].
        // 
        "applyMilestone": "ALWAYS",

        // Describes the label to be applied.
        // Defaults are shown.
        // 
        "label": {
          # 
          "name": "released",
          # 
          "color": "#FF0000",
          # 
          "description": "Issue has been released"
        }
      },

      // The following properties define  URL formats.
      // Defaults are shown.
      // Review the available Name Templates.

      //  
      "repoUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}",

      //  
      "repoCloneUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git",

      //  
      "commitUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits",

      //  
      "srcUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/{gitservice_blob}/{{repoBranch}}",

      //  
      "downloadUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}",

      //  
      "releaseNotesUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}",

      //  
      "latestReleaseUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest",

      //  
      "issueTrackerUrl": "https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues"
    }
  }
}
<jreleaser>
  <!--
    
  -->
  <release>
    <!--
      Repo in which the release will be created.
      
    -->
    <gitea>

      <!--
        Disables or enables publication to Gitea.
        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 Gitea host url.
        
      -->
      <host>my.gitea.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 Gitea API endpoint to use.
        You can skip `/api/v1` as it will be added by default.
        
      -->
      <apiEndpoint>https://my.gitea.com</apiEndpoint>

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

      <!--
        
      -->
      <update>
        <!--
          Appends artifacts to an existing release with matching tag,
          useful if `overwrite` is set to `false`.
          Defaults to `false`.
           
        -->
        <enabled>true</enabled>

        <!--
          Release sections to be updated.
          Supported values are [`TITLE`, `BODY`, `ASSETS`].
          Defaults to `ASSETS`.
          
        -->
        <sections>
            <section>ASSETS</section>
        </sections>
      </update>

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

      <!--
        Enables or disables asset upload.
        Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`, `PRERELEASE`, `RELEASE_PRERELEASE`].
        Defaults to `ALWAYS`.
        
      -->
      <uploadAssets>ALWAYS</uploadAssets>

      <!--
        Release files.
        Defaults to `true`.
        
      -->
      <files>true</files>

      <!--
        Release distribution artifacts.
        Defaults to `true`.
        
      -->
      <artifacts>true</artifacts>

      <!--
        Release checksum files.
        Defaults to `true`.
        
      -->
      <checksums>true</checksums>

      <!--
        Release signature files.
        Defaults to `true`.
        
      -->
      <signatures>true</signatures>

      <!--
        Release catalog files.
        Defaults to `true`.
        
      -->
      <catalogs>true</catalogs>

      <!--
        Marks the release as a draft.
        Defaults to `false`.
         
      -->
      <draft>false</draft>

      <!--
        
      -->
      <prerelease>
        <!--
          Marks the release as prerelease.
          Defaults to `false`.
          
        -->
        <enabled>false</enabled>

        <!--
          A regex to determine if the project version is a prerelease
           
        -->
        <pattern>.*-pre</enabled>
      </prerelease>

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

      <!--
        A milestone associated with the release
        
      -->
      <milestone>

        <!--
          Close the milestone (if it exists and still open) upon release.
          Defaults to `true`.
          
         -->
        <close>true</close>

        <!--
          The name/title of the milestone.
          May define a `JRELEASER_MILESTONE_NAME` environment variable instead.
          Defaults to `{{tagName}}`.
            
         -->
        <name>{{tagName}}</name>
      </milestone>

      <!--
        Update issues upon release.
        Adds a label and post a comment to every issue found in the changelog.
        
      --->
      <issues>
        <!--
          Enables this feature.
          Defaults to `false`.
          
        -->
        <enabled>true</enabled>

        <!--
          Comment to post on matching issues.
           
        -->
        <comment>🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))</comment>

        <!--
          Applies the current milestone to issues
          Valid values are: [`NEVER`, `ALWAYS`, `WARN`, `FORCE`].
          
        -->
        <applyMilestone>ALWAYS</applyMilestone>

        <!--
          Describes the label to be applied.
          Defaults are shown.
          
        -->
        <label>
          # 
          <name>released</name>
          # 
          <color>#FF0000</color>
          # 
          <description>Issue has been released</description>
        </label>
      </issues>

      <!--
        The following properties define  URL formats.
        Defaults are shown.
        Review the available Name Templates.
      -->

      <!--
         
      -->
      <repoUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}</repoUrl>

      <!--
         
      -->
      <repoCloneUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git</repoCloneUrl>

      <!--
         
      -->
      <commitUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits</commitUrl>

      <!--
         
      -->
      <srcUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/{gitservice_blob}/{{repoBranch}}</srcUrl>

      <!--
         
      -->
      <downloadUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}</downloadUrl>

      <!--
         
      -->
      <releaseNotesUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}</releaseNotesUrl>

      <!--
         
      -->
      <latestReleaseUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest</latestReleaseUrl>

      <!--
         
      -->
      <issueTrackerUrl>https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues</issueTrackerUrl>
    </gitea>
  </release>
</jreleaser>
jreleaser {
  // 
  release {
    // Repo in which the release will be created.
    // 
    gitea {
      // Disables or enables publication to Gitea.
      // 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 Gitea host url.
      // 
      host = 'my.gitea.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 Gitea API endpoint to use.
      // You can skip `/api/v1` as it will be added by default.
      // 
      apiEndpoint = 'https://my.gitea.com'

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

      // 
      update {
        // Appends artifacts to an existing release with matching tag,
        // useful if `overwrite` is set to `false`.
        // Defaults to `false`.
        //  
        enabled = true

        // Release sections to be updated.
        // Supported values are [`TITLE`, `BODY`, `ASSETS`].
        // Defaults to `ASSETS`.
        // 
        section('ASSETS')
      }

      // 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}}'

      // Enables or disables asset upload.
      // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`, `PRERELEASE`, `RELEASE_PRERELEASE`].
      // Defaults to `ALWAYS`.
      // 
      uploadAssets = 'ALWAYS'

      // Release files.
      // Defaults to `true`.
      // 
      files = true

      // Release distribution artifacts.
      // Defaults to `true`.
      // 
      artifacts = true

      // Release checksum files.
      // Defaults to `true`.
      // 
      checksums = true

      // Release signature files.
      // Defaults to `true`.
      // 
      signatures = true

      // Release catalog files.
      // Defaults to `true`.
      // 
      catalogs = true

      // Marks the release as a draft.
      // Defaults to `false`.
      //  
      draft = false

      // 
      prerelease {
        // Marks the release as prerelease.
        // Defaults to `false`.
        // 
        enabled = false

        // A regex to determine if the project version is a prerelease
        //  
        pattern = '.*-pre'
      }

      // 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'
      }

      // A milestone associated with the release
      // 
      milestone {
        // Close the milestone (if it exists and still open) upon release.
        // Defaults to `true`.
        // 
        close = true

        // The name/title of the milestone.
        // May define a `JRELEASER_MILESTONE_NAME` environment variable instead.
        // Defaults to `{{tagName}}`.
        //   
        name = '{{tagName}}'
      }

      // Update issues upon release.
      // Adds a label and post a comment to every issue found in the changelog.
      // 
      issues {
        // Enables this feature.
        // Defaults to `false`.
        // 
        enabled = true

        // Comment to post on matching issues.
        //  
        comment = '🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))'

        // Applies the current milestone to issues
        // Valid values are: [`NEVER`, `ALWAYS`, `WARN`, `FORCE`].
        // 
        applyMilestone = 'ALWAYS'

        // Describes the label to be applied.
        // Defaults are shown.
        // 
        label {
          # 
          name = 'released'
          # 
          color = '#FF0000'
          # 
          description = 'Issue has been released'
        }
      }

      // The following properties define  URL formats.
      // Defaults are shown.
      // Review the available Name Templates.

      //  
      repoUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}'

      //  
      repoCloneUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git'

      //  
      commitUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits'

      //  
      srcUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/{gitservice_blob}/{{repoBranch}}'

      //  
      downloadUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}'

      //  
      releaseNotesUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}'

      //  
      latestReleaseUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest'

      //  
      issueTrackerUrl = 'https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues'
    }
  }
}

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

JRELEASER_GITEA_USERNAME

token

jreleaser.gitea.token

JRELEASER_GITEA_TOKEN

tagName

jreleaser.tag.name

JRELEASER_TAG_NAME

previousTagName

jreleaser.previous.tag.name

JRELEASER_PREVIOUS_TAG_NAME

releaseName

jreleaser.release.name

JRELEASER_RELEASE_NAME

milestone.name

jreleaser.milestone.name

JRELEASER_MILESTONE_NAME

branch

jreleaser.branch

JRELEASER_BRANCH

branchPush

jreleaser.branch.push

JRELEASER_BRANCH_PUSH

overwrite

jreleaser.overwrite

JRELEASER_OVERWRITE

update.enabled

jreleaser.update

JRELEASER_UPDATE

skipTag

jreleaser.skip.tag

JRELEASER_SKIP_TAG

skipRelease

jreleaser.skip.release

JRELEASER_SKIP_RELEASE

draft

jreleaser.draft

JRELEASER_DRAFT

prerelease.pattern

jreleaser.prelease.pattern

JRELEASER_PRERELEASE_PATTERN

Git Remote

JReleaser assumes the default Git remote to be named origin however not everyone uses that name. Should you need to use a different name you may define an environment variable named JRELEASER_DEFAULT_GIT_REMOTE whose value is the name of the remote.

You must use an environment variable, can not use external properties as explained in Environment.

Skip Release

You have the option to skip artifacts and files from a release using these fields:

  • files. Affects files defined by Files.

  • artifacts. Affects files defined by the artifacts section of a Distribution.

  • checksums. Affects the calculated checksums for artifacts and files.

  • signatures. Affects the generated signature files for artifacts, files, and checksums.

Additionally you may decide to skip artifacts by defining the skipRelease extra property as true. The associated signature file may be skipped as well by defining skipReleaseSignatures as an extra property on the artifact. You may also define either of this two properties on the owning distribution in which case the settings apply to all artifacts found in the distribution.

Issues

Upon release, JReleaser may attach a label and post a comment on every matching issue found in the changelog. The following regular expressions will be used to find matching issues:

  • {{issueTrackerUrl}}/(\d+)

  • {{repoOwner}}/{{repoName}}#(\d+)

  • #(\d+)

Examples
  • https://my.gitea.com/duke/app/issues/123

  • duke/app#123

  • #123

The release process applies the following rules to mark issues:

  1. Create the target label if it does not exist.

  2. Lookup every matching issue. Skip if not closed or if it already has the label applied.

  3. Apply the label and post a comment.

Additionally, the matching milestone may also be applied to issues. You may set the applyMilestone property with any of the following values:

  • NEVER. Do not apply the milestone.

  • ALWAYS. Apply the milestone if the issue has no milestone.

  • WARN. Do not apply the milestone but warn if there’s an existing milestone that does not match the current one.

  • FORCE. Apply the milestone even if the issue had a different milestone.