diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py
index 79fdbeed0..16b2d86b0 100644
--- a/jenkins_jobs/modules/wrappers.py
+++ b/jenkins_jobs/modules/wrappers.py
@@ -2437,6 +2437,14 @@ def artifactory_generic(registry, xml_parent, data):
(default '')
:arg str key-from-text: Repository key to use that can be configured
dynamically using Jenkins variables (plugin >= 2.3.0) (default '')
+ :arg str upload-spec: File Spec schema for uploading files is as follows
+ (default '')
+ :arg str download-spec: File Spec schema for downloading
+ files is as follows (default '')
+ :arg str upload-spec-file: File location for uploading Spec schema
+ (default '')
+ :arg str download-spec-file: File location for downloading Spec schema
+ (default '')
:arg list deploy-pattern: List of patterns for mappings
build artifacts to published artifacts. Supports Ant-style wildcards
mapping to target directories. E.g.: */*.zip=>dir (default [])
@@ -2470,6 +2478,7 @@ def artifactory_generic(registry, xml_parent, data):
"""
+ use_specs = False
artifactory = XML.SubElement(
xml_parent,
'org.jfrog.hudson.generic.ArtifactoryGenericConfigurator')
@@ -2502,6 +2511,28 @@ def artifactory_generic(registry, xml_parent, data):
helpers.convert_mapping_to_xml(
details, data, mapping, fail_required=False)
+ if 'upload-spec' in data or 'download-spec' in data:
+ upload_spec = data.get('upload-spec', '')
+ upl_spec_xml = XML.SubElement(artifactory, 'uploadSpec')
+ XML.SubElement(upl_spec_xml, 'spec').text = upload_spec
+
+ download_spec = data.get('download-spec', '')
+ dnl_spec_xml = XML.SubElement(artifactory, 'downloadSpec')
+ XML.SubElement(dnl_spec_xml, 'spec').text = download_spec
+ use_specs = True
+
+ if 'upload-spec-file' in data or 'download-spec-file' in data:
+ upload_spec_file = data.get('upload-spec-file', '')
+ upl_spec_xml = XML.SubElement(artifactory, 'uploadSpec')
+ XML.SubElement(upl_spec_xml, 'filePath').text = upload_spec_file
+
+ download_spec_file = data.get('download-spec-file', '')
+ dnl_spec_xml = XML.SubElement(artifactory, 'downloadSpec')
+ XML.SubElement(dnl_spec_xml, 'filePath').text = download_spec_file
+ use_specs = True
+
+ XML.SubElement(artifactory, 'useSpecs').text = str(use_specs).lower()
+
XML.SubElement(artifactory, 'deployPattern').text = ','.join(data.get(
'deploy-pattern', []))
XML.SubElement(artifactory, 'resolvePattern').text = ','.join(
diff --git a/tests/wrappers/fixtures/artifactory002.xml b/tests/wrappers/fixtures/artifactory002.xml
index 15ce1303b..ceb3595fc 100644
--- a/tests/wrappers/fixtures/artifactory002.xml
+++ b/tests/wrappers/fixtures/artifactory002.xml
@@ -8,6 +8,7 @@
release-repo
snapshot-repo
+ false
*.zip=>results
libs-release-local:prod/*=>prod-jars
custom_prop=${PROJECT_ENV_VAR}
diff --git a/tests/wrappers/fixtures/artifactory004.xml b/tests/wrappers/fixtures/artifactory004.xml
index f63afae25..af98f378f 100644
--- a/tests/wrappers/fixtures/artifactory004.xml
+++ b/tests/wrappers/fixtures/artifactory004.xml
@@ -11,6 +11,7 @@
+ false
*.zip=>results
libs-release-local:prod/*=>prod-jars
custom_prop=${PROJECT_ENV_VAR}
diff --git a/tests/wrappers/fixtures/artifactory005.xml b/tests/wrappers/fixtures/artifactory005.xml
new file mode 100644
index 000000000..f30dd10d7
--- /dev/null
+++ b/tests/wrappers/fixtures/artifactory005.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+ test
+ http://artifactory.example.net/artifactory
+
+
+
+
+
+
+
+ { "files": [ { "pattern": "*.jar", "target": "release" } ] }
+
+
+ { "files": [ { "pattern": "*.jar", "target": "release" } ] }
+
+ true
+
+
+
+ true
+ false
+ false
+ true
+
+
+
+
+
+
+
diff --git a/tests/wrappers/fixtures/artifactory005.yaml b/tests/wrappers/fixtures/artifactory005.yaml
new file mode 100644
index 000000000..1021ddae6
--- /dev/null
+++ b/tests/wrappers/fixtures/artifactory005.yaml
@@ -0,0 +1,7 @@
+wrappers:
+ - artifactory-generic:
+ url: http://artifactory.example.net/artifactory
+ name: 'test'
+ deploy-build-info: true
+ upload-spec: '{ "files": [ { "pattern": "*.jar", "target": "release" } ] }'
+ download-spec: '{ "files": [ { "pattern": "*.jar", "target": "release" } ] }'
diff --git a/tests/wrappers/fixtures/artifactory006.xml b/tests/wrappers/fixtures/artifactory006.xml
new file mode 100644
index 000000000..6ecffa964
--- /dev/null
+++ b/tests/wrappers/fixtures/artifactory006.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+ test
+ http://artifactory.example.net/artifactory
+
+
+
+
+
+
+
+ path/to/upload-file
+
+
+ path/to/download-file
+
+ true
+
+
+
+ true
+ false
+ false
+ true
+
+
+
+
+
+
+
diff --git a/tests/wrappers/fixtures/artifactory006.yaml b/tests/wrappers/fixtures/artifactory006.yaml
new file mode 100644
index 000000000..7a8aa003e
--- /dev/null
+++ b/tests/wrappers/fixtures/artifactory006.yaml
@@ -0,0 +1,7 @@
+wrappers:
+ - artifactory-generic:
+ url: http://artifactory.example.net/artifactory
+ name: 'test'
+ deploy-build-info: true
+ upload-spec-file: "path/to/upload-file"
+ download-spec-file: "path/to/download-file"