README.adoc

March 1, 2026 ยท View on GitHub

= JReleaser :linkattrs: :project-owner: jreleaser :project-name: release-action

image:https://github.com/{project-owner}/{project-name}/workflows/Test/badge.svg["Build Status", link="https://github.com/{project-owner}/{project-name}/actions"] image:https://img.shields.io/github/v/release/{project-owner}/{project-name}["GitHub release", link="https://github.com/jreleaser/release-action/releases"] image:https://img.shields.io/twitter/follow/{project-owner}?style=social["Twitter Follow", link="https://twitter.com/jreleaser"]

This action executes a link:https://jreleaser.org[JReleaser] workflow.

== Usage

=== Workflow

[source,yaml]

name: Release

on: workflow_dispatch:

jobs: release: name: Release runs-on: ubuntu-latest

steps:
  - name: Checkout
    uses: actions/checkout@v6
    with:
      fetch-depth: 0

  # Configure build steps as you'd normally do

  - name: Setup Java
    uses: actions/setup-java@v5
    with:
      java-version: 21
      distribution: 'zulu'
      cache: maven

  # Build the artifacts

  - name: Build
    run: ./mvnw -B -ntp verify

  # Create a release

  - name: Run JReleaser
    uses: jreleaser/release-action@v2
    env:
      JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  # Persist logs

  - name: JReleaser release output
    if: always()
    uses: actions/upload-artifact@v4
    with:
      name: jreleaser-release
      path: |
        out/jreleaser/trace.log
        out/jreleaser/output.properties

WARNING: Note the fetch-depth: 0 option on the Checkout workflow step. It is required for JReleaser to work properly. Without that, JReleaser might fail or behave incorrectly.

The last step executes a full-release with the default jreleaser.yml configuration that's expected to be located at the root of the repository.

IMPORTANT: This action requires Java 11+ to download and execute JReleaser. The action will setup a suitable Java runtime automatically. If you would like to use a different Java version/distribution then set the value of setup-java to false and make sure you have a previous step with actions/setup-java setup as needed.

== Customizing

== Inputs

Following inputs can be used as step.with keys

[%header,cols="<2,<,<2,<3",width="100%"] |=== | Name | Type | Default | Description | version | String | latest | The JReleaser version to use. + Should match any of the link:https://github.com/jreleaser/jreleaser/releases[published releases]. + You may use latest to pull the latest stable release or + early-access to pull the latest snapshot. | arguments | String | full-release | The JReleaser command to run. | working-directory | String | ${{ github.workspace }} | The directory to change into. + Defaults to the directory the calling workflow runs in. | setup-java | boolean | true | Automatically setup a Java runtime. + Java runtime defaults to Zulu 17. | java-opts | boolean | | Additional JVM parameters for running JReleaser |===

== Environment Variables

Following environment variables can be used as step.env keys

[%header,width="100%"] |=== | Name | Description | JRELEASER_GITHUB_TOKEN | link:https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token[GITHUB_TOKEN] as provided by secrets |===

== Caution

The default GITHUB_TOKEN from secrets is link:https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token#about-the-github_token-secret[limited] to the repository that contains your workflow.

Pushing to other repositories such as Homebrew tap requires additional permissions, you must create a custom link:https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/[Personal Access Token] with repo permissions and link:https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets[add it as a secret in the repository]. If you create a secret named GH_PAT, the step will look like this

[source,yaml]

  - name: Run JReleaser
    uses: jreleaser/release-action@v2
    env:
      JRELEASER_GITHUB_TOKEN: ${{ secrets.GH_PAT }}

If you'd rather have separate tokens for each additional repository and keep the original GITHUB_TOKEN intact then you may apply the GH_PAT token as follows

[source,yaml]

  - name: Run JReleaser
    uses: jreleaser/release-action@v2
    env:
      JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      JRELEASER_HOMEBREW_GITHUB_TOKEN: ${{ secrets.GH_PAT }}

Additional environment variables may be needed depending on your specific setup, such as those needed for signing files with GPG or announcing a release via Twitter. Review the docs at link:https://jreleaser.org[] to find more about these variables and how to set them up.