Artifactory

13 minute readExtensibilityDeveloper productivity

The CloudBees CD/RO EC-Artifactory plugin integrates with JFrog Artifactory providing a single place for teams to manage all their binary artifacts efficiently. For more information about JFrog Artifactory please refer to Artifactory documentation https://www.jfrog.com/open-source/#resources-projects.

The plugin integration between CloudBees CD/RO and Artifactory makes it easy to model applications in CloudBees CD/RO, referencing artifacts stored in Artifactory, with support for numerous repository layouts. When a request for deployment is made in CloudBees CD/RO, the platform seamlessly retrieves the relevant artifacts from Artifactory as part of the deploy process. Users have the flexibility to

  • Reference specific versions in Artifactory.

  • Configure the deployment to always pick up the latest version.

  • Dynamically determine which versions to deploy at runtime.

This flexibility enables different use cases, such as using the latest version to schedule automatic deployments of nightly build outputs to QA environments every morning.

In CloudBees CD/RO, versions are stored in the environment inventory, recording the exact versions of each artifact that has been deployed to an environment, so you could easily track and audit what is deployed where.  The SmartDeploy feature in CloudBees CD/RO compares that inventory with the artifact versions being deployed, and only deploys any new artifact versions to that specific environment for efficient and safe deployments. CloudBees CD/RO automatically captures a version of the entire application, including individual artifact versions pulled from Artifactory, in a snapshot.  Using a snapshot in deployments guarantees consistency across environments, so you could have the same components and configuration in the lower environment, as well as in production. These tight integrations of Artifactory versions feeding into model-driven processes and capabilities in CloudBees CD/RO provide visibility, reliable deployments and ensure repeatability and fidelity across all the environments and processes throughout the pipeline.  This ensures that teams can deploy to production with confidence.

Plugin Version 1.5.1.2020123001 Revised on Dec 24, 2020

Supported versions

Plugin has been tested with Artifactory version 5.x. Since the plugin integrates with Artifactory using Rest API, Artifactory versions that are compatible with the 5.x Rest API are expected to work, although not tested. In addition, since some features are available only in Pro version of Artifactory, it is expected that exercising those features in the plugin, would require a Pro version of Artifactory.

Configuration

Plugin configurations

Plugin configurations are sets of parameters that apply across some or all of the plugin procedures. They reduce repetition of common values, create predefined parameter sets for end users, and securely store credentials where needed. Each configuration is given a unique name that is entered in designated parameters on procedures that use them.

Creating plugin configurations

To create plugin configurations in CloudBees CD, do these steps:

  1. Go to Administration > Plugins to open the Plugin Manager.

  2. Find the EC-Artifactory row.

  3. Click Configure to open the EC-Artifactory Configurations page.

  4. Click Create Configuration.

  5. To enable CloudBees CD server to communicate with the API, enter the following information:

The EC-Artifactory Configurations page now shows the new configuration.

Editing plugin configurations

To edit plugin configurations in CloudBees CD, do these steps:

  1. Go to Administration > Plugins to open the Plugin Manager.

  2. Find the EC-Artifactory row.

  3. Click Configure to open the Configurations page.

  4. Find the configuration that you want to edit.

  5. Click Edit.

  6. Edit the parameters in the configuration.

  7. Click OK to save the modified configuration.

Procedures

IMPORTANT Note that the names of required parameters are marked in bold italics in the parameter description table for each procedure.

Retrieve artifact from artifactory

Retrieves the exact or the latest version of the artifact from the Artifactory instance. Supports NuGet, NPM, Maven, PHP and Generic repositories.

ParameterDescription

Repository package type

Type of the repository. For now NuGet, NPM, PHP, Maven and Generic are supported.

Configuration

Previously defined configuration name, e.g. "config".

Repository key

Repository key (not repository name), e.g. nuget-local, libs-snapshot-local.

Organization Path

Represents the Organization field where the levels are separated by path separators ('/'), a la Maven. For example: "org/slf4j". Required, if the path part is mandatory for the layout. (For example, in the layout "[orgPath]/[module].[ext]" organization path is mandatory and in the layout "([orgPath])/[module]" is it not mandatory.)

Module

A sequence of literals that identifies the artifact’s module, basically, the artifact’s name.

Version

Exact version to be downloaded or latest version flag (if latest version retrieval logic is available for the repository). For NuGet, NPM, PHP and Generic repositories this feature requires Artifactory Pro.

File Integration Revision

A sequence of literals that identifies the integration revision part in the artifact’s file name, excluding the base revision.

Folder Integration Revision

A sequence of literals that identifies the integration revision part used in folder names in the artifact’s path, excluding the base revision.

Type

A sequence of literals that identifies the artifact’s type. Typically used when the artifact’s extension cannot be reused as the artifact’s type.

Extension

A sequence of literals that identifies the artifact’s extension, e.g. nupkg. Required, if the path part is mandatory for the layout.

Classifier

A sequence of literals that identifies the artifact’s classifier.

Retrieve to Directory

Download the artifact version to a specific directory. If not defined, the artifact will be downloaded into the current directory. If the specified directory does not exist, it will be created. This path may be absolute or relative, e.g. /tmp/my_artifact or artifact_name.

Overwrite?

If checked, the existing package will be overwritten.

Uncompress and Extract?

If checked, the retrieved package will be extracted into the specified directory. Available for NuGet, NPM and PHP Composer. If "Retrieve to Directory" parameter is not set, the package will be extracted into the current workspace. A new folder will be created for the artifact, with the name eflow-<artifact>-<version>. For example, NPM artifact may looks like below:

- eflow-http-1.0.0/package/index.js (/opt/electriccloud/electriccommander/workspace/job_40369_20171129040418/package/index.js)
- eflow-http-1.0.0/package/package.json (/opt/electriccloud/electriccommander/workspace/job_40369_20171129040418/package/package.json)

Where http is the name of the package and 1.0.0 is the version.

For NuGet package extracted files may look like the following:

- eflow-Json-1.0.0/LICENSE.md(/opt/electriccloud/electriccommander/workspace/job_40371_20171129040755/LICENSE.md)
- eflow-Json-1.0.0/Newtonsoft.Json.nuspec(/opt/electriccloud/electriccommander/workspace/job_40371_20171129040755/Newtonsoft.Json.nuspec)
- eflow-Json-1.0.0/[Content_Types].xml(/opt/electriccloud/electriccommander/workspace/job_40371_20171129040755/[Content_Types].xml)
- eflow-Json-1.0.0/lib/net20/Newtonsoft.Json.dll(/opt/electriccloud/electriccommander/workspace/job_40371_20171129040755/lib/net20/Newtonsoft.Json.dll)

Retrieved Artifact Location Property

Name or property sheet path used by the step to create a property sheet. This property sheet stores information about the retrieved artifact version, including its location in the file system.

Properties are saved under <retrievedArtifactLocationProperty>/<artifactName>:

    url # url of the downloaded artifact
    version # artifact version
    filename # filename, relative
    fullFilename #filename, absolute
    Also, all the artifact's properties will be here
    extractionPath # path to the extraction folder (in case Uncompress and Extract was checked)
    fullExtractiobnPath # absolute path to the extraction folder

If artifact has some properties coming from Artifactory, they will also be saved under this property sheet.

Component definition

EC-Artifactory may be used to define a component in CloudBees CD. To create a component, choose EC-Artifactory in drop-down list for "Content Location" in component definition.

Samples

NuGet

In the Artifactory, the artifact looks like below:

Where "com/company" is the organization and "artifact" is the name of the module.

Procedure configuration:

After job is finished, the following summary will appear:

Job logs:

Maven

Maven artifact in the Artifactory:

Procedure configuration:

Finished procedure:

Job logs:

Using plugin EC-Artifactory-1.0.0.0
Got parameter "artifact" with value "bookstore"
Got parameter "classifier" with value ""
Got parameter "config" with value "config"
Got parameter "destination" with value ""
Got parameter "extension" with value ".war"
Got parameter "extract" with value "0"
Got parameter "fileItegRev" with value ""
Got parameter "folderItegRev" with value "SNAPSHOT"
Got parameter "latestVersion" with value "1"
Got parameter "org" with value ""
Got parameter "orgPath" with value "hello"
Got parameter "overwrite" with value "0"
Got parameter "repoType" with value "Maven"
Got parameter "repository" with value "libs-snapshot-local"
Got parameter "repositoryPath" with value ""
Got parameter "resultPropertySheet" with value "/myJob/retrievedArtifactVersions/"
Got parameter "type" with value ""
Got parameter "useRepositoryLayout" with value "1"
Got parameter "version" with value ""
Artifact path is /hello/bookstore/0.0.1-SNAPSHOT/bookstore-0.0.1-20170705.104709-2.war
Artifact URL: http://10.200.1.102:8081/artifactory/libs-snapshot-local//hello/bookstore/0.0.1-SNAPSHOT/bookstore-0.0.1-20170705.104709-2.war
Downloading http://10.200.1.102:8081/artifactory/libs-snapshot-local//hello/bookstore/0.0.1-SNAPSHOT/bookstore-0.0.1-20170705.104709-2.war into the job workspace
Set property "/myJob/retrievedArtifactVersions/bookstore/fullFilename" to value "/opt/electriccloud/electriccommander/workspace/job_37132_20171121022959/bookstore-0.0.1-20170705.104709-2.war"
Set property "/myJob/retrievedArtifactVersions/bookstore/filename" to value "bookstore-0.0.1-20170705.104709-2.war"
Set property "/myJob/retrievedArtifactVersions/bookstore/version" to value "0.0.1-SNAPSHOT"
Set property "/myJob/retrievedArtifactVersions/bookstore/url" to value "http://10.200.1.102:8081/artifactory/libs-snapshot-local//hello/bookstore/0.0.1-SNAPSHOT/bookstore-0.0.1-20170705.104709-2.war"
Set property "/myJob/retrievedArtifactVersions/bookstore/snapshotVersion" to value "0.0.1-20170705.104709-2"

NPM

In the Artifactory, the artifact look like below:

Procedure configuration:

After job is finished, the following summary will appear:

Job logs:

Using plugin EC-Artifactory-1.0.0.0
Got parameter "artifact" with value "test_package"
Got parameter "classifier" with value ""
Got parameter "config" with value "config"
Got parameter "destination" with value ""
Got parameter "extension" with value ""
Got parameter "extract" with value "1"
Got parameter "fileItegRev" with value ""
Got parameter "folderItegRev" with value ""
Got parameter "latestVersion" with value "1"
Got parameter "org" with value ""
Got parameter "orgPath" with value "myorg"
Got parameter "overwrite" with value "1"
Got parameter "repoType" with value "NPM"
Got parameter "repository" with value "npm-demo"
Got parameter "repositoryPath" with value ""
Got parameter "resultPropertySheet" with value "/myJob/retrievedArtifactVersions/"
Got parameter "type" with value ""
Got parameter "useRepositoryLayout" with value "1"
Got parameter "version" with value ""
Latest version for myorg:test_package is 1.0.0
Artifact path is myorg/test_package/test_package-1.0.0.tgz
Artifact URL: http://10.200.1.102:8081/artifactory/npm-demo/myorg/test_package/test_package-1.0.0.tgz
Downloading http://10.200.1.102:8081/artifactory/npm-demo/myorg/test_package/test_package-1.0.0.tgz into the job workspace
Extracting test_package-1.0.0.tgz
Extraction path: "test_package"
Files extracted:
  - index.js
  - package.json
Artifact properties:
{
   "artifactory.licenses" : [
      "ISC"
   ],
   "npm.version" : [
      "1.0.0"
   ],
   "npm.name" : [
      "test_package"
   ]
}


Set property "/myJob/retrievedArtifactVersions/test_package/npm.version" to value "1.0.0"
Set property "/myJob/retrievedArtifactVersions/test_package/version" to value "1.0.0"
Set property "/myJob/retrievedArtifactVersions/test_package/artifactory.licenses" to value "ISC"
Set property "/myJob/retrievedArtifactVersions/test_package/fullFilename" to value "/opt/electriccloud/electriccommander/workspace/job_37171_20171121065017/test_package-1.0.0.tgz"
Set property "/myJob/retrievedArtifactVersions/test_package/filename" to value "test_package-1.0.0.tgz"
Set property "/myJob/retrievedArtifactVersions/test_package/url" to value "http://10.200.1.102:8081/artifactory/npm-demo/myorg/test_package/test_package-1.0.0.tgz"
Set property "/myJob/retrievedArtifactVersions/test_package/npm.name" to value "test_package"

Generic

In the Artifactory, the artifact look like below:

Plugin configuration:

Procedure configuration:

After job is finished, the following summary will appear:

Job logs:

Got parameter "artifact" with value "module"
Got parameter "classifier" with value ""
Got parameter "config" with value "CustomLayout"
Got parameter "destination" with value ""
Got parameter "extension" with value "vsix"
Got parameter "extract" with value "0"
Got parameter "fileItegRev" with value ""
Got parameter "folderItegRev" with value ""
Got parameter "latestVersion" with value "1"
Got parameter "org" with value "myorg"
Got parameter "orgPath" with value "myorg"
Got parameter "overwrite" with value "1"
Got parameter "repoType" with value "Generic"
Got parameter "repository" with value "custom-local"
Got parameter "repositoryPath" with value ""
Got parameter "resultPropertySheet" with value "/myJob/retrievedArtifactVersions"
Got parameter "type" with value ""
Got parameter "useRepositoryLayout" with value "1"
Got parameter "version" with value ""
Repository layout is "[org]/[module]/[baseRev].[ext]"
Latest version for myorg:module is 10.0.1
Artifact path is myorg/module/10.0.1.vsix
Artifact URL: http://10.200.1.102:8081/artifactory/custom-local/myorg/module/10.0.1.vsix
Downloading http://10.200.1.102:8081/artifactory/custom-local/myorg/module/10.0.1.vsix into the job workspace
Artifact has no properties
Set property "/myJob/retrievedArtifactVersions/module/fullFilename" to value "/opt/electriccloud/electriccommander/workspace/job_39881_20171128060650/10.0.1.vsix"
Set property "/myJob/retrievedArtifactVersions/module/filename" to value "10.0.1.vsix"
Set property "/myJob/retrievedArtifactVersions/module/version" to value "10.0.1"
Set property "/myJob/retrievedArtifactVersions/module/url" to value "http://10.200.1.102:8081/artifactory/custom-local/myorg/module/10.0.1.vsix"

PHP composer

In the Artifactory, the artifact look like below:

Procedure configuration:

After job is finished, the following summary will appear:

Job logs:

Got parameter "artifact" with value "laravel-messenger"
Got parameter "classifier" with value ""
Got parameter "config" with value "config"
Got parameter "destination" with value ""
Got parameter "extension" with value "zip"
Got parameter "extract" with value "0"
Got parameter "fileItegRev" with value ""
Got parameter "folderItegRev" with value ""
Got parameter "latestVersion" with value "1"
Got parameter "org" with value ""
Got parameter "orgPath" with value "cmgmyr"
Got parameter "overwrite" with value "0"
Got parameter "repoType" with value "PHP"
Got parameter "repository" with value "php-local"
Got parameter "repositoryPath" with value ""
Got parameter "resultPropertySheet" with value "/myJob/retrievedArtifactVersions"
Got parameter "type" with value ""
Got parameter "useRepositoryLayout" with value "1"
Got parameter "version" with value ""
Repository layout is "[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]"
Latest version for cmgmyr:laravel-messenger is 1.0.0
Artifact path is cmgmyr/laravel-messenger/laravel-messenger-1.0.0.zip
Artifact URL: http://10.200.1.102:8081/artifactory/php-local/cmgmyr/laravel-messenger/laravel-messenger-1.0.0.zip
Downloading http://10.200.1.102:8081/artifactory/php-local/cmgmyr/laravel-messenger/laravel-messenger-1.0.0.zip into the job workspace
Artifact properties:
{
   "artifactory.licenses" : [
      "MIT"
   ],
   "composer.keywords" : [
      "laravel",
      "messenger",
      "messaging",
      "user messaging"
   ],
   "composer.name" : [
      "cmgmyr/messenger"
   ],
   "composer.description" : [
      "Simple user messaging tool for Laravel"
   ],
   "composer.author" : [
      "Chris Gmyr"
   ],
   "composer.version" : [
      "1.0.0"
   ],
   "composer.type" : [
      "library"
   ]
}

Set property "/myJob/retrievedArtifactVersions/laravel-messenger/version" to value "1.0.0"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/composer.author" to value "Chris Gmyr"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/composer.description" to value "Simple user messaging tool for Laravel"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/composer.name" to value "cmgmyr/messenger"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/composer.type" to value "library"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/artifactory.licenses" to value "MIT"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/fullFilename" to value "/opt/electriccloud/electriccommander/workspace/job_39882_20171128063554/laravel-messenger-1.0.0.zip"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/composer.keywords" to value "laravel, messenger, messaging, user messaging"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/filename" to value "laravel-messenger-1.0.0.zip"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/url" to value "http://10.200.1.102:8081/artifactory/php-local/cmgmyr/laravel-messenger/laravel-messenger-1.0.0.zip"
Set property "/myJob/retrievedArtifactVersions/laravel-messenger/composer.version" to value "1.0.0"

Get latest artifact version

Performs GAVC search in the Artifactory for the specified artifact and saves latest version to a property.

Note: This procedure requires Artifactory Pro license.

ParameterDescription

Configuration

Previously defined configuration name, e.g. "config".

Repository Package Type

Type of the repository. For now NuGet, NPM, PHP, Maven and Generic are supported.

Repository Key

Repository key, e.g. nuget-local, libs-snapshot-local.

Organization Path

Represents the Organization field where the levels are separated by path separators ('/'), a la Maven. For example: "org/slf4j". Required, if the path part is mandatory for the layout. (For example, in the layout "[orgPath]/[module].[ext]" organization path is mandatory and in the layout "([orgPath])/[module]" is it not mandatory.)

Artifact

A sequence of literals that identifies the artifact’s module, basically, the artifact’s name.

Classifier

A sequence of literals that identifies the artifact’s classifier. Required if Repository Package Type is 'Maven'

Result Property

Name or the property where latest version will be saved. Default is /myJob/ArtifactVersion

Procedure interface and example usage:

Procedure logs for successful run:

Publish artifact to artifactory

Publishes a Single artifact to the Artifactory instance. Supports all these Repository Package Types: NuGet, NPM, Maven, PHP and Generic.

ParameterDescription

Configuration

Previously defined configuration name, e.g. "config".

Repository Package Type

Repository Package Type.

Choose from one of these type : NuGet, NPM, PHP, Maven and Generic.

Repository Key

Repository key, e.g. nuget-local, libs-snapshot-local.

Use Repository Layout

Check this if you want to use Custom Repository Layouts.

Organization Path

Required if you don’t use Custom Repository Layouts.

Represents the Organization Path separated by "/" depending on the layout used. For example, the layout "[orgPath]/[module].[ext]" expects an organization path whereas the layout "([orgPath])/[module]" does not.

Example: org/slf4j

Module

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the artifact’s module.

Example: slf4j-api

Base Revision

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the base revision part of the artifact version, excluding any integration information.

Example: 1.5.10, or in case of an integration revision 1.2-SNAPSHOT the base revision is 1.2.

Folder Integration Revision

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the integration revision part used in folder names in the artifact’s path, excluding the base revision.

Example: in case of an integration revision 1.2-SNAPSHOT the folder integration revision is SNAPSHOT".

File Integration Revision

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the integration revision part in the artifact’s file name, excluding the base revision.

Example: in case of an integration revision 1.2-20110202.144533-3 the file integration revision is 20110202.144533-3.

Classifier

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the artifact’s classifier.

Example: sources

Extension

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the artifact’s extension.

Example: zip

Artifact Layout

Required if you use Custom Repository Layouts.

Layout path pattern used for artifact resolution and publication paths.

Example: [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

Artifact Tokens

Required if you use Custom Repository Layouts.

Token path pattern used for artifact resolution. Tokens can consist of a combination of string literals, path separators, parentheses, punctuation characters etc.

Example: for artifact org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190222.112918-1-sources.jar

tokens are:

orgPath=org/jfrog/testmodule=multi1baseRev=3.7folderItegRev=SNAPSHOTfileItegRev=20190222.112918-1classifier=sourcesext=jar

Artifact Path

Path to the artifact binary on the resource file system.

Example: /tmp/myartifact.zip

Artifact Properties

Artifact properties that facilitate searching them through JFrog "Smart Searches".

See more information on the official page.

Properties can be added in the following format:

**

key1=value1
key2=value2;value3;...
...
keyN=valueN

Result Property Sheet

Property sheet where procedure results should be saved.

Contains a record with the following fields in JSON-format:

  • md5_checksum - MD5 checksum of the artifact

  • sha1_checksum - SHA1 checksum of the artifact

  • sha256_checksum - SHA256 checksum of the artifact

  • path - local path in Artifactory

  • url - link for downloading the artifact

  • webapp_url - link for browsing the artifact in Artifactory

Example: ``

{
    "md5_checksum":"c61b83072527864fe7171ea99b017438",
    "sha1_checksum":"b92e9d18bdb357d98c10c8074d3b9b6f63307efa",
    "sha256_checksum":"d16c4f6e565a0831c96fe0ce1a62694caba55dd5341b8d50aebf54cdf0effdbf",
    "path":"libs-snapshot-local/org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190218.153526-1-tests.jar",
    "url":"http://localhost:8081/artifactory/libs-snapshot-local/org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190218.153526-1-tests.jar",
    "webapp_url":"http://localhost:8081/artifactory/webapp/#/artifacts/browse/tree/General/libs-snapshot-local/org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190218.153526-1-tests.jar",
}

Artifact token layout example

Suppose you want to publish a snapshot whose name is my_plugin-current-tests.jar as per the following URL

You need to supply the following fields:

FieldValue

Repository Key

libs-snapshot-local

Organization Path

com/electriccloud

Module

ec-specs-plugins-core

Base Revision

1.5.3

Folder Integration Revision

SNAPSHOT

File Integration Revision

20180919.122321-1

Classifier

tests

Extension

jar

Procedure interface and example usage for Generic:

Procedure logs for successful run:

Procedure interface and example usage for Maven:

Procedure logs for successful run:

Publish multiple artifacts to artifactory

Publishes 1 or more artifacts whose Repository Package Type is Generic to Artifactory.

ParameterDescription

Configuration

Previously defined configuration name, e.g. "config".

Repository Key

Repository key, e.g. generic-local, custom-local.

Use Repository Layout

Check this if you want to use Custom Repository Layouts.

Organization Path

Required if you don’t use Custom Repository Layouts.

Represents the Organization Path separated by "/" depending on the layout used. For example, the layout "[orgPath]/[module].[ext]" expects an organization path whereas the layout "([orgPath])/[module]" does not.

Example: org/slf4j

Example regex: .+?

Module

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the artifact’s module.

Example: slf4j-api

Example regex: [^/]+

Base Revision

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the base revision part of the artifact version, excluding any integration information.

Example: 1.5.10, or in case of an integration revision 1.2-SNAPSHOT the base revision is 1.2.

Example regex: [^/]+?

Extension

Required if you don’t use Custom Repository Layouts.

A sequence of literals that identifies the artifact’s extension.

Example: zip

Example regex: (?:(?!\d))[^-/]+|7z

Artifact Layout

Required if you use Custom Repository Layouts.

Layout path pattern used for artifact resolution and publication paths.

Example: [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

Artifact Tokens

Required if you use Custom Repository Layouts.

Token path pattern used for artifact resolution. Tokens can consist of a combination of string literals, path separators, parentheses, punctuation characters etc.

Example: for the layout [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

tokens are:

orgPath=.+?module=[/]+baseRev=[/]+?folderItegRev=SNAPSHOTfileItegRev=SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))classifier=[/]+?ext=(?:(?!\d))[-/]+|7z

Artifacts Directory

Path to the artifact binary directory on the resource file system.

Example: /tmp/myartifacts

Artifact Properties

Artifact properties that facilitate searching them through JFrog "Smart Searches".

See more information on the official page.

Properties can be added in the following format:

key1=value1
key2=value2;value3;...
...
keyN=valueN

Result Property Sheet

Property sheet where procedure results should be saved.

Contains a list of records with following fields in JSON-format:

  • md5_checksum - MD5 checksum of the artifact

  • sha1_checksum - SHA1 checksum of the artifact

  • sha256_checksum - SHA256 checksum of the artifact

  • path - local path in Artifactory

  • url - link for downloading the artifact

  • webapp_url - link for browsing the artifact in Artifactory

Example: ``

{
    "md5_checksum":"c61b83072527864fe7171ea99b017438",
    "sha1_checksum":"b92e9d18bdb357d98c10c8074d3b9b6f63307efa",
    "sha256_checksum":"d16c4f6e565a0831c96fe0ce1a62694caba55dd5341b8d50aebf54cdf0effdbf",
    "path":"libs-snapshot-local/org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190218.153526-1-tests.jar",
    "url":"http://localhost:8081/artifactory/libs-snapshot-local/org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190218.153526-1-tests.jar",
    "webapp_url":"http://localhost:8081/artifactory/webapp/#/artifacts/browse/tree/General/libs-snapshot-local/org/jfrog/test/multi1/3.7-SNAPSHOT/multi1-3.7-20190218.153526-1-tests.jar",
}

Procedure interface and example usage without Use Repository Layout:

Procedure logs for successful run:

Procedure interface and example usage with Use Repository Layout:

Procedure logs for successful run:

Release notes

EC-Artifactory 1.5.1

  • Fixed an issue when on some old setups EditConfiguration did not work properly.

EC-Artifactory 1.5.0

  • Plugin configuration has been improved to support external credentials.

EC-Artifactory 1.4.7

  • Fix reading of compressed files under Windows.

EC-Artifactory 1.4.6

  • An HTTP client was changed for the UI dropdowns to address certain security issues.

EC-Artifactory 1.4.5

  • Renaming to "CloudBees CD"

EC-Artifactory 1.4.4

  • GetLatestVersion procedure uses maven-metadata.xml to resolve the latest version for Maven repositories.

EC-Artifactory 1.4.3

  • Incorrect error message that sometimes appeared during configuration creation was removed.

EC-Artifactory 1.4.2

  • Renaming to "CloudBees"

  • Fixed help link for the "Retrieve Artifact from Artifactory" procedure.

EC-Artifactory 1.4.1

Use output parameters only for versions >= 8.3.

EC-Artifactory 1.4.0

The following new procedures have been introduced to support publishing 1 or more artifacts to Artifactory.

  • Publish Artifact to Artifactory

  • Publish Multiple Artifacts to Artifactory

EC-Artifactory 1.3.1

  • Added metadata that is required for 9.0 release.

  • The plugin icon has been updated.

EC-Artifactory 1.3.0

  • Plugin promotion time has been improved.

  • New procedure "Get Latest Artifact Version" was introduced.

EC-Artifactory 1.2.1

  • Fixed Retrieve Artifact from Artifactory procedure:

Retrieval logic for snapshots in "Retrieve Artifact from Artifactory" procedure has been fixed to use both the extension and the build number, during comparison with Maven metadata.

EC-Artifactory 1.2.0

  • Support for HTTP Proxy has been provided. Customers who use HTTP proxy can specify Proxy Information (Host, Port and Credentials at the configuration level) and all procedures will use the Proxy as second credentials for authentication.

EC-Artifactory 1.1.3

  • Improved inline plugin configurations management.

EC-Artifactory 1.1.2

  • Enabled the plugin for managing the plugin configurations in-line when defining an application process step or a pipeline stage task.

  • Hyphen in qualifier was fixed (e.g. for version like 1.2-H1-SNAPSHOT.

EC-Artifactory 1.1.1

  • ACL bug with plugin upgrade has been fixed.

EC-Artifactory 1.1.0

  • Repository package types added: PHP, Generic.

  • Access token support: access token can be used instead of password in the plugin configuration.

  • Extraction logic was changed: now the artifact is extracted into a directory named eflow-<artifact>-<version>.

EC-Artifactory 1.0.0 (beta)

  • Supported repositories: Maven, NuGet, NPM.