Github

Deploys staged artifacts to Github Packages.

This feature is primarily intended for deploying artifacts such as JARs and POMs to a Maven compatible repository.
Publication of snapshots is not allowed.

Configuration

Legend:

  • required

  • optional

  • may use environment variable

  • accepts Name Templates

  • YAML

  • TOML

  • JSON

  • Maven

  • Gradle

# 
deploy:
  maven:
    # 
    github:
      # Deployers require a name.
      # 
      app:

        # Enables or disables the deployer.
        # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        # Defaults to `NEVER`.
        #  
        active: ALWAYS

        # URL where the Github service is enabled.
        # If left unspecified, the `JRELEASER_GITHUB_${name}_URL`
        # environment variable must be defined.
        #  
        url: https://maven.pkg.github.com/duke/app

        # Activates publication of snapshot artifacts.
        # Defaults to `false`.
        # 
        snapshotSupported: true

        # The username required for authorization.
        # If left unspecified, the `JRELEASER_GITHUB_${name}_USERNAME`
        # environment variable must be defined.
        #  
        username: __USE_ENVIRONMENT_VARIABLE__

        # Password for login into the GITHUB service.
        # If left unspecified, the `JRELEASER_GITHUB_${name}_PASSWORD`
        # environment variable must be defined.
        #  
        password: __USE_ENVIRONMENT_VARIABLE__

        # The authorization method to use.
        # Supported values are [`NONE`, `BASIC`, `BEARER`].
        # `Basic` requires both username & password.
        # `BEARER` requires a token (set as password).
        # Defaults to `BEARER`.
        # 
        authorization: BEARER

        # Signs artifacts with the configured credentials.
        # The Signing section must be configured as well.
        # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
        # 
        sign: false

        # Checksums all artifacts with `MD5`, `SHA-1`, `SHA-256`, and `SHA-512`.
        # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
        # 
        checksums: false

        # Verifies that a matching `-sources.jar` artifact is staged.
        # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
        # 
        sourceJar: false

        # Verifies that a matching `-javadoc.jar` artifact is staged.
        # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
        # 
        javadocJar: false

        # Verifies that POM files comply with the minimum requirements for publication
        # to Maven Central. Checks rules using PomChecker.
        # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
        # 
        verifyPom: false

        # Verifies pom files, signs all artifacts, verifies that matching `-sources.jar` and
        # `-javadoc.jar` artifacts are also staged.
        # Defaults to `false`.
        # 
        applyMavenCentralRules: false

        # Override artifact configuration
        # 
        artifactOverrides:
            # Match artifact by groupId
            # If undefined, will use `#{project.java.groupId}`.
            # 
          - groupId: com.acme

            # Match artifact by artifactId
            # 
            artifactId: app

            # Verifies that a matching `.jar` artifact is staged.
            # 
            jar: false

            # Verifies that a matching `-sources.jar` artifact is staged.
            # 
            sourceJar: false

            # Verifies that a matching `-javadoc.jar` artifact is staged.
            # 
            javadocJar: false

            # Verifies that POM files comply with the minimum requirements for publication
            # to Maven Central. Checks rules using PomChecker.
            # 
            verifyPom: false

        # List of directories where staged artifacts can be found.
        # 
        stagingRepositories:
          - target/staging-deploy

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

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

        # Additional properties used when evaluating templates.
        # 
        extraProperties:
          # Key will be capitalized and prefixed with `github`, i.e, `githubFoo`.
          foo: bar

        # The name of the repository.
        # If unspecified, will use `#{release.${releaser}.name}`.
        # 
        repository: app
# Deployers require a name.
# 
[deploy.maven.github.app]

  # Enables or disables the deployer.
  # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
  # Defaults to `NEVER`.
  #  
  active = "ALWAYS"

  # URL where the Github service is enabled.
  #  
  url = "https://maven.pkg.github.com/duke/app"

  # Activates publication of snapshot artifacts.
  # Defaults to `false`.
  # 
  snapshotSupported = true

  # The username required for authorization.
  #  
  username = "__USE_ENVIRONMENT_VARIABLE__"

  # Password for login into the GITHUB service.
  #  
  password = "__USE_ENVIRONMENT_VARIABLE__"

  # The authorization method to use.
  # Supported values are [`NONE`, `BASIC`, `BEARER`].
  # `Basic` requires both username & password.
  # `BEARER` requires a token (set as password).
  # Defaults to `BEARER`.
  # 
  authorization = "BEARER"

  # Signs artifacts with the configured credentials.
  # The Signing section must be configured as well.
  # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
  # 
  sign = false

  # Checksums all artifacts with `MD5`, `SHA-1`, `SHA-256`, and `SHA-512`.
  # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
  # 
  checksums = false

  # Verifies that a matching `-sources.jar` artifact is staged.
  # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
  # 
  sourceJar = false

  # Verifies that a matching `-javadoc.jar` artifact is staged.
  # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
  # 
  javadocJar = false

  # Verifies that POM files comply with the minimum requirements for publication
  # to Maven Central. Checks rules using PomChecker.
  # Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
  # 
  verifyPom = false

  # Verifies pom files, signs all artifacts, verifies that matching `-sources.jar` and
  # `-javadoc.jar` artifacts are also staged.
  # Defaults to `false`.
  # 
  applyMavenCentralRules = false

  # Override artifact configuration
  # 
  [[deploy.maven.github.app.artifactOverrides]]

    # Match artifact by groupId
    # If undefined, will use `#{project.java.groupId}`.
    # 
    groupId = "com.acme"

    # Match artifact by artifactId
    # 
    artifactId = "app"

    # Verifies that a matching `.jar` artifact is staged.
    # 
    jar = false

    # Verifies that a matching `-sources.jar` artifact is staged.
    # 
    sourceJar = false

    # Verifies that a matching `-javadoc.jar` artifact is staged.
    # 
    javadocJar = false

    # Verifies that POM files comply with the minimum requirements for publication
    # to Maven Central. Checks rules using PomChecker.
    # 
    verifyPom = false

  # List of directories where staged artifacts can be found.
  # 
  stagingRepositories = ["target/staging-deploy"]

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

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

  # Additional properties used when evaluating templates.
  # 
  extraProperties.foo = "bar"
  # Key will be capitalized and prefixed with `github`, i.e, `githubFoo`.

  # The name of the repository.
  # If unspecified, will use `#{release.${releaser}.name}`.
  # 
  repository = "app"
{
  // 
  "deploy": {
    "maven": {
      // 
      "github": {
        // Deployers require a name.
        // 
        "app": {

          // Enables or disables the deployer.
          // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
          // Defaults to `NEVER`.
          //  
          "active": "ALWAYS",

          // URL where the Github service is enabled.
          //  
          "url": "https://maven.pkg.github.com/duke/app",

          // Activates publication of snapshot artifacts.
          // Defaults to `false`.
          // 
          "snapshotSupported": true,

          // The username required for authorization.
          //  
          "username": "__USE_ENVIRONMENT_VARIABLE__",

          // Password for login into the GITHUB service.
          //  
          "password": "__USE_ENVIRONMENT_VARIABLE__",

          // The authorization method to use.
          // Supported values are [`NONE`, `BASIC`, `BEARER`].
          // `Basic` requires both username & password.
          // `BEARER` requires a token (set as password).
          // Defaults to `BEARER`.
          // 
          "authorization": "BEARER",

          // Signs artifacts with the configured credentials.
          // The Signing section must be configured as well.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          "sign": false,

          // Checksums all artifacts with `MD5`, `SHA-1`, `SHA-256`, and `SHA-512`.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          "checksums": false,

          // Verifies that a matching `-sources.jar` artifact is staged.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          "sourceJar": false,

          // Verifies that a matching `-javadoc.jar` artifact is staged.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          "javadocJar": false,

          // Verifies that POM files comply with the minimum requirements for publication
          // to Maven Central. Checks rules using PomChecker.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          "verifyPom": false,

          // Verifies pom files, signs all artifacts, verifies that matching `-sources.jar` and
          // `-javadoc.jar` artifacts are also staged.
          // Defaults to `false`.
          // 
          "applyMavenCentralRules": false,

          // Override artifact configuration
          // 
          "artifactOverrides": [
            {
              // Match artifact by groupId
              // If undefined, will use `#{project.java.groupId}`.
              // 
              "groupId": "com.acme",

              // Match artifact by artifactId
              // 
              "artifactId": "app",

              // Verifies that a matching `.jar` artifact is staged.
              // 
              "jar": false,

              // Verifies that a matching `-sources.jar` artifact is staged.
              // 
              "sourceJar": false,

              // Verifies that a matching `-javadoc.jar` artifact is staged.
              // 
              "javadocJar": false,

              // Verifies that POM files comply with the minimum requirements for publication
              // to Maven Central. Checks rules using PomChecker.
              // 
              "verifyPom": false
            }
          ]

          // List of directories where staged artifacts can be found.
          // 
          "stagingRepositories": [
            "target/staging-deploy"
          ],

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

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

          // The name of the repository.
          // If unspecified, will use `#{release.${releaser}.name}`.
          // 
          "repository": "app",

          // Additional properties used when evaluating templates.
          // 
          "extraProperties": {
            // Key will be capitalized and prefixed with `github`, i.e, `githubFoo`.
            "foo": "bar"
          }
        }
      }
    }
  }
}
<jreleaser>
  <!--
    
  -->
  <deploy>
    <maven>
      <!--
        
      -->
      <github>
        <!--
          Deployers require a name.
          
        -->
        <app>
          <!--
            Enables or disables the deployer.
            Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
            Defaults to `NEVER`.
             
          -->
          <active>ALWAYS</active>

          <!--
            URL where the Github service is enabled.
             
          -->
          <url>https://maven.pkg.github.com/duke/app</url>

          <!--
            Activates publication of snapshot artifacts.
            Defaults to `false`.
            
          -->
          <snapshotSupported>true</snapshotSupported>

          <!--
            The username required for authorization.
             
          -->
          <username>__USE_ENVIRONMENT_VARIABLE__</username>

          <!--
            Password for login into the GITHUB service.
             
          -->
          <password>__USE_ENVIRONMENT_VARIABLE__</password>

          <!--
            The authorization method to use.
            Supported values are [`NONE`, `BASIC`, `BEARER`].
            `Basic` requires both username & password.
            `BEARER` requires a token (set as password).
            Defaults to `BEARER`.
            
          -->
          <authorization>BEARER</authorization>

          <!--
            Signs artifacts with the configured credentials.
            The Signing section must be configured as well.
            Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
            
          -->
          <sign>false</sign>

          <!--
            Checksums all artifacts with `MD5`, `SHA-1`, `SHA-256`, and `SHA-512`.
            Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
            
          -->
          <checksums>false</checksums>

          <!--
            Verifies that a matching `-sources.jar` artifact is staged.
            Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
            
          -->
          <sourceJar>false</sourceJar>

          <!--
            Verifies that a matching `-javadoc.jar` artifact is staged.
            Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
            
          -->
          <javadocJar>false</javadocJar>

          <!--
            Verifies that POM files comply with the minimum requirements for publication
            to Maven Central. Checks rules using PomChecker.
            Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
            
          -->
          <verifyPom>false</verifyPom>

          <!--
            Verifies pom files, signs all artifacts, verifies that matching `-sources.jar` and
            `-javadoc.jar` artifacts are also staged.
            Defaults to `false`.
            
          -->
          <applyMavenCentralRules>false</applyMavenCentralRules>

          <!--
            Override artifact configuration
            
          -->
          <artifactOverrides>
            <artifactOverride>
              <!--
                Match artifact by groupId
                If undefined, will use `#{project.java.groupId}`.
                
              -->
              <groupId>com.acme</groupId>

              <!--
                Match artifact by artifactId
                
              -->
              <artifactId>app</artifactId>

              <!--
                Verifies that a matching `.jar` artifact is staged.
                
              -->
              <jar>false</jar>

              <!--
                Verifies that a matching `-sources.jar` artifact is staged.
                
              -->
              <sourceJar>false</sourceJar>

              <!--
                Verifies that a matching `-javadoc.jar` artifact is staged.
                
              -->
              <javadocJar>false</javadocJar>

              <!--
                Verifies that POM files comply with the minimum requirements for publication
                to Maven Central. Checks rules using PomChecker.
                
              -->
              <verifyPom>false</verifyPom>
            </artifactOverride>
          </artifactOverrides>

          <!--
            List of directories where staged artifacts can be found.
            
          -->
          <stagingRepositories>
            <stagingRepository>target/staging-deploy</stagingRepository>
          </stagingRepositories>

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

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

          <!--
            Additional properties used when evaluating templates.
            
          -->
          <extraProperties>
            <!--
              Key will be capitalized and prefixed with `github`, i.e, `githubFoo`.
            -->
            <foo>bar</foo>
          </extraProperties>

          <!--
            The name of the repository.
            If unspecified, will use `#{release.${releaser}.name}`.
            
          -->
          <repository>app</repository>
        </app>
      </github>
    </maven>
  </deploy>
</jreleaser>
jreleaser {
  // 
  deploy {
    maven {
      // 
      github {
        // Deployers require a name.
        // 
        app {

          // Enables or disables the deployer.
          // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
          // Defaults to `NEVER`.
          //  
          active = 'ALWAYS'

          // URL where the Github service is enabled.
          //  
          url = 'https://maven.pkg.github.com/duke/app'

          // Activates publication of snapshot artifacts.
          // Defaults to `false`.
          // 
          snapshotSupported = true

          // The username required for authorization.
          //  
          username = '__USE_ENVIRONMENT_VARIABLE__'

          // Password for login into the GITHUB service.
          //  
          password = '__USE_ENVIRONMENT_VARIABLE__'

          // The authorization method to use.
          // Supported values are [`NONE`, `BASIC`, `BEARER`].
          // `Basic` requires both username & password.
          // `BEARER` requires a token (set as password).
          // Defaults to `BEARER`.
          // 
          authorization = 'BEARER'

          // Signs artifacts with the configured credentials.
          // The Signing section must be configured as well.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          sign = false

          // Checksums all artifacts with `MD5`, `SHA-1`, `SHA-256`, and `SHA-512`.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          checksums = false

          // Verifies that a matching `-sources.jar` artifact is staged.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          sourceJar = false

          // Verifies that a matching `-javadoc.jar` artifact is staged.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          javadocJar = false

          // Verifies that POM files comply with the minimum requirements for publication
          // to Maven Central. Checks rules using PomChecker.
          // Defaults to `false` unless `applyMavenCentralRules` is set to `true`.
          // 
          verifyPom = false

          // Verifies pom files, signs all artifacts, verifies that matching `-sources.jar` and
          // `-javadoc.jar` artifacts are also staged.
          // Defaults to `false`.
          // 
          applyMavenCentralRules = false

          // Override artifact configuration
          // 
          artifactOverride {
            // Match artifact by groupId
            // If undefined, will use `#{project.java.groupId}`.
            // 
            groupId = 'com.acme'

            // Match artifact by artifactId
            // 
            artifactId = 'app'

            // Verifies that a matching `.jar` artifact is staged.
            // 
            jar = false

            // Verifies that a matching `-sources.jar` artifact is staged.
            // 
            sourceJar = false

            // Verifies that a matching `-javadoc.jar` artifact is staged.
            // 
            javadocJar = false

            // Verifies that POM files comply with the minimum requirements for publication
            // to Maven Central. Checks rules using PomChecker.
            // 
            verifyPom = false
          }

          // List of directories where staged artifacts can be found.
          // 
          stagingRepository('target/staging-deploy')

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

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

          // Additional properties used when evaluating templates.
          // Key will be capitalized and prefixed with `github`, i.e, `githubFoo`.
          // 
          extraProperties.put('foo', 'bar')

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

        }
      }
    }
  }
}

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

active

jreleaser.deploy.maven.github.${name}.active
jreleaser.deploy.maven.github.active

JRELEASER_DEPLOY_MAVEN_GITHUB_${name}_ACTIVE
JRELEASER_DEPLOY_MAVEN_GITHUB_ACTIVE

url

jreleaser.deploy.maven.github.${name}.url
jreleaser.deploy.maven.github.url
jreleaser.github.${name}.url
jreleaser.github.url

JRELEASER_DEPLOY_MAVEN_GITHUB_${name}_URL
JRELEASER_DEPLOY_MAVEN_GITHUB_URL
JRELEASER_GITHUB_${name}_URL
JRELEASER_GITHUB_URL

username

jreleaser.deploy.maven.github.${name}.username
jreleaser.deploy.maven.github.username
jreleaser.github.${name}.username
jreleaser.github.username

JRELEASER_DEPLOY_MAVEN_GITHUB_${name}_USERNAME
JRELEASER_DEPLOY_MAVEN_GITHUB_USERNAME
JRELEASER_GITHUB_${name}_USERNAME
JRELEASER_GITHUB_USERNAME

password

jreleaser.deploy.maven.github.${name}.password
jreleaser.deploy.maven.github.${name}.token
jreleaser.deploy.maven.github.password
jreleaser.deploy.maven.github.token
jreleaser.github.${name}.password
jreleaser.github.${name}.token
jreleaser.github.password
jreleaser.github.token

JRELEASER_DEPLOY_MAVEN_GITHUB_${name}_PASSWORD
JRELEASER_DEPLOY_MAVEN_GITHUB_${name}_TOKEN
JRELEASER_DEPLOY_MAVEN_GITHUB_PASSWORD
JRELEASER_DEPLOY_MAVEN_GITHUB_TOKEN
JRELEASER_GITHUB_${name}_PASSWORD
JRELEASER_GITHUB_${name}_TOKEN
JRELEASER_GITHUB_PASSWORD
JRELEASER_GITHUB_TOKEN

Substitute ${name} for the value of the named instance.

Space (' '), underscore (_), and dash (-) will be replaced by dot (.) to separate tokens in the System property. Space (' '), dash (-), and dot (.) will be replaced by underscore (_) to separate tokens in the environment variable, such that:

${name} System Property Environment Variable

foobar

foobar

FOOBAR

fooBar

foobar

FOOBAR

foo bar

foo.bar

FOO_BAR

foo-bar

foo.bar

FOO_BAR

foo_bar

foo.bar

FOO_BAR

foo.bar

foo.bar

FOO_BAR

Example

  • YAML

  • TOML

  • JSON

  • Maven

  • Gradle

deploy:
  maven:
    github:
      app:
        active: ALWAYS
        stagingRepositories:
          - target/staging-deploy
[deploy.maven.github.app]
  active = "ALWAYS"
  stagingRepositories = ["target/staging-deploy"]
{
  "jreleaser": {
    "deploy": {
      "maven": {
        "github": {
          "app": {
            "active": "ALWAYS",
            "stagingRepositories": [
              "target/staging-deploy"
            ]
          }
        }
      }
    }
  }
}
<jreleaser>
  <deploy>
    <maven>
      <github>
        <app>
          <active>ALWAYS</active>
          <stagingRepositories>target/staging-deploy</stagingRepositories>
        </app>
      </github>
    </maven>
  </deploy>
</jreleaser>
jreleaser {
  deploy {
    maven {
      github {
        app {
          active = 'ALWAYS'
          stagingRepository('target/staging-deploy')
        }
      }
    }
  }
}

Any of the following environment variables may be defined to supply values for username and password:

  • JRELEASER_DEPLOY_MAVEN_GITHUB_APP_USERNAME

  • JRELEASER_DEPLOY_MAVEN_GITHUB_USERNAME

  • JRELEASER_GITHUB_APP_USERNAME

  • JRELEASER_GITHUB_USERNAME

  • JRELEASER_DEPLOY_MAVEN_GITHUB_APP_PASSWORD

  • JRELEASER_DEPLOY_MAVEN_GITHUB_APP_TOKEN

  • JRELEASER_DEPLOY_MAVEN_GITHUB_PASSWORD

  • JRELEASER_DEPLOY_MAVEN_GITHUB_TOKEN

  • JRELEASER_GITHUB_APP_PASSWORD

  • JRELEASER_GITHUB_APP_TOKEN

  • JRELEASER_GITHUB_PASSWORD

  • JRELEASER_GITHUB_TOKEN