GitLab
Uploads artifacts, files, and signatures to a GitLab instance via its Packages option.
- NOTE
 - 
Only generic packages are supported at the moment.
 
Configuration
Legend:
- 
required
 - 
optional
 - 
may use environment variable
 - 
accepts Name Templates
 
# 
upload:
  # 
  gitlab:
    # Uploaders require a name.
    # 
    app:
      # Enables or disables the uploader.
      # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
      # Defaults to `NEVER`.
      #  
      active: ALWAYS
      # Defines the connection timeout in seconds.
      # Defaults to `20`.
      # 
      connectTimeout: 20
      # Defines the read timeout in seconds.
      # Defaults to `60`.
      # 
      readTimeout: 60
      # Upload files.
      # Defaults to `true`.
      # 
      files: true
      # Upload distribution artifacts.
      # Defaults to `true`.
      # 
      artifacts: true
      # Release checksum files.
      # Defaults to `true`.
      # 
      checksums: true
      # Upload signatures.
      # Defaults to `true`.
      # 
      signatures: true
      # Upload catalogs.
      # Defaults to `true`.
      # 
      catalogs: true
      # Additional properties used when evaluating templates.
      # 
      extraProperties:
        # Key will be capitalized and prefixed with `gitlab`, i.e, `gitlabFoo`.
        foo: bar
      # The GitLab host url.
      # 
      host: gitlab.com
      # Token with write access to the repository.
      #  
      token: __USE_ENVIRONMENT_VARIABLE__
      # The package name to use.
      # If unspecified, will use the uploader's name.
      #  
      packageName: app
      # The package version to use.
      # If unspecified, will use the project's version.
      #  
      packageVersion: '{{projectVersion}}'
      # The id of the GitLab repository.
      # 
      projectIdentifier: 12345678
# Uploaders require a name.
# 
[upload.gitlab.app]
  # Enables or disables the uploader.
  # Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
  # Defaults to `NEVER`.
  #  
  active = "ALWAYS"
  # Defines the connection timeout in seconds.
  # Defaults to `20`.
  # 
  connectTimeout = 20
  # Defines the read timeout in seconds.
  # Defaults to `60`.
  # 
  readTimeout = 60
  # Upload files.
  # Defaults to `true`.
  # 
  files = true
  # Upload distribution artifacts.
  # Defaults to `true`.
  # 
  artifacts = true
  # Release checksum files.
  # Defaults to `true`.
  # 
  checksums = true
  # Upload signatures.
  # Defaults to `true`.
  # 
  signatures = true
  # Upload catalogs.
  # Defaults to `true`.
  # 
  catalogs = true
  # Additional properties used when evaluating templates.
  # 
  extraProperties.foo = "bar"
  # Key will be capitalized and prefixed with `gitlab`, i.e, `gitlabFoo`.
  # The GitLab host url.
  # 
  host = "gitlab.com"
  # Token with write access to the repository.
  #  
  token = "__USE_ENVIRONMENT_VARIABLE__"
  # The package name to use.
  # If unspecified, will use the uploader's name.
  #  
  packageName = "app"
  # The package version to use.
  # If unspecified, will use the project's version.
  #  
  packageVersion = "{{projectVersion}}"
  # The id of the GitLab repository.
  # 
  projectIdentifier = "12345678"
{
  // 
  "upload": {
    // 
    "gitlab": {
      // Uploaders require a name.
      // 
      "app": {
        // Enables or disables the uploader.
        // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        // Defaults to `NEVER`.
        //  
        "active": "ALWAYS",
        // Defines the connection timeout in seconds.
        // Defaults to `20`.
        // 
        "connectTimeout": 20,
        // Defines the read timeout in seconds.
        // Defaults to `60`.
        // 
        "readTimeout": 60,
        // Upload files.
        // Defaults to `true`.
        // 
        "files": true,
        // Upload distribution artifacts.
        // Defaults to `true`.
        // 
        "artifacts": true,
        // Release checksum files.
        // Defaults to `true`.
        // 
        "checksums": true,
        // Upload signatures.
        // Defaults to `true`.
        // 
        "signatures": true,
        // Upload catalogs.
        // Defaults to `true`.
        // 
        "catalogs": true,
        // Additional properties used when evaluating templates.
        // 
        "extraProperties": {
          // Key will be capitalized and prefixed with `gitlab`, i.e, `gitlabFoo`.
          "foo": "bar"
        },
        // The GitLab host url.
        // 
        "host": "gitlab.com",
        // Token with write access to the repository.
        //  
        "token": "__USE_ENVIRONMENT_VARIABLE__",
        // The package name to use.
        // If unspecified, will use the uploader's name.
        //  
        "packageName": "app",
        // The package version to use.
        // If unspecified, will use the project's version.
        //  
        "packageVersion": "{{projectVersion}}",
        // The id of the GitLab repository.
        // 
        "projectIdentifier": "12345678"
      }
    }
  }
}
<jreleaser>
  <!--
    
  -->
  <upload>
    <!--
      
    -->
    <gitlab>
      <!--
        Uploaders require a name.
        
      -->
      <app>
        <!--
          Enables or disables the distribution.
          Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
          Defaults to `NEVER`.
           
        -->
        <active>ALWAYS</active>
        <!--
          Defines the connection timeout in seconds.
          Defaults to `20`.
          
        -->
        <connectTimeout>20</connectTimeout>
        <!--
          Defines the read timeout in seconds.
          Defaults to `60`.
          
        -->
        <readTimeout>60</readTimeout>
        <!--
          Upload files.
          Defaults to `true`.
          
        -->
        <files>true</files>
        <!--
          Upload distribution artifacts.
          Defaults to `true`.
          
        -->
        <artifacts>true</artifacts>
        <!--
          Release checksum files.
          Defaults to `true`.
          
        -->
        <checksums>true</checksums>
        <!--
          Upload signatures.
          Defaults to `true`.
          
        -->
        <signatures>true</signatures>
        <!--
          Upload catalogs.
          Defaults to `true`.
          
        -->
        <catalogs>true</catalogs>
        <!--
          Additional properties used when evaluating templates.
          
        -->
        <extraProperties>
          <!--
            Key will be capitalized and prefixed with `gitlab`, i.e, `gitlabFoo`.
          -->
          <foo>bar</foo>
        </extraProperties>
        <!--
           The GitLab host url.
           
        -->
        <host>gitlab.com</host>
        <!--
           Token with write access to the repository.
            
        -->
        <token>__USE_ENVIRONMENT_VARIABLE__</token>
        <!--
           The package name to use.
           If unspecified, will use the uploader's name.
            
        -->
        <packageName>app</packageName>
        <!--
           The package version to use.
           If unspecified, will use the project's version.
            
        -->
        <packageVersion>{{projectVersion}}</packageVersion>
        <!--
           The id of the GitLab repository.
           
        -->
        <projectIdentifier>12345678</projectIdentifier>
      </app>
    </gitlab>
  </upload>
</jreleaser>
jreleaser {
  // 
  upload {
    // 
    gitlab {
      // Uploaders require a name.
      // 
      app {
        // Enables or disables the uploader.
        // Supported values are [`NEVER`, `ALWAYS`, `RELEASE`, `SNAPSHOT`].
        // Defaults to `NEVER`.
        //  
        active = 'ALWAYS'
        // Defines the connection timeout in seconds.
        // Defaults to `20`.
        // 
        connectTimeout = 20
        // Defines the read timeout in seconds.
        // Defaults to `60`.
        // 
        readTimeout = 60
        // Upload files.
        // Defaults to `true`.
        // 
        files = true
        // Upload distribution artifacts.
        // Defaults to `true`.
        // 
        artifacts = true
        // Release checksum files.
        // Defaults to `true`.
        // 
        checksums = true
        // Upload signatures.
        // Defaults to `true`.
        // 
        signatures = true
        // Upload catalogs.
        // Defaults to `true`.
        // 
        catalogs = true
        // Additional properties used when evaluating templates.
        // Key will be capitalized and prefixed with `gitlab`, i.e, `gitlabFoo`.
        // 
        extraProperties.put('foo', 'bar')
        // The GitLab host url.
        // 
        host = 'gitlab.com'
        // Token with write access to the repository.
        //  
        token = '__USE_ENVIRONMENT_VARIABLE__'
        // The package name to use.
        // If unspecified, will use the uploader's name.
        //  
        packageName = 'app'
        // The package version to use.
        // If unspecified, will use the project's version.
        //  
        packageVersion = '{{projectVersion}}'
        // The id of the GitLab repository.
        // 
        projectIdentifier = '12345678'
      }
    }
  }
}
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.upload.gitlab.${name}.active  | 
JRELEASER_UPLOAD_GITLAB_${name}_ACTIVE  | 
| 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  | 
  | 
  | 
foo bar  | 
  | 
  | 
foo-bar  | 
  | 
  | 
foo_bar  | 
  | 
  | 
foo.bar  | 
  | 
  | 
UploadUrl
The uploadUrl is the URL to upload the artifacts to.
An example configuration may look like
uploadUrl: 'https://{{host}}/api/v4/projects/{{projectIdentifier}}/packages/generic/{{packageName}}/{{packageVersion}}/{{artifactFile}}'.
And will result in a final deployment like
https://gitlab.com/api/v4/projects/12345678/packages/generic/app/1.0.0/app-1.0.0.zip.
DownloadUrl
The downloadUrl is the URL used to download artifacts from.
An example configuration may look like
downloadUrl: 'https://{{host}}/api/v4/projects/{{projectIdentifier}}/packages/generic/{{packageName}}/{{packageVersion}}/{{artifactFile}}'.
And will result in a final URL like
https://gitlab.com/api/v4/projects/12345678/packages/generic/app/1.0.0/app-1.0.0.zip.
Skip Upload
Distributions and Artifacts may define extra properties that may stop them from being uploaded. These properties must conform to the following rules:
- 
skipUpload: skipped from all uploaders. - 
skipUpload<type>: skipped from the typed uploader. - 
skipUpload<type><name>: skipped from the typed and named uploader. 
Where <type> resolves to Gitlab and <name> resolves to the capitalized name of the GitLab instance, such
that:
- 
if the name is
foothe resulting property key isskipUploadGitlabFoo. - 
if the name is
fooBarthe resulting property key isskipUploadGitlabFooBar. - 
if the name is
foo-barthe resulting property key isskipUploadGitlabFooBar.