summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Kostrov <ka_ban@rambler.ru>2019-04-10 12:04:45 +0300
committerAndrey Kostrov <ka_ban@rambler.ru>2019-04-10 13:58:31 +0300
commit2bff652b03bfcf0ab272e5cd0b5092472c201f7e (patch)
treee74ccb28dbed63e9e7a5191a575e02cafca83695
parent1e24fceea191b72bd752df65982498816e0744e5 (diff)
downloadpython-jenkins-job-builder-2bff652b03bfcf0ab272e5cd0b5092472c201f7e.tar.gz
python-jenkins-job-builder-2bff652b03bfcf0ab272e5cd0b5092472c201f7e.tar.xz
python-jenkins-job-builder-2bff652b03bfcf0ab272e5cd0b5092472c201f7e.zip
Add `Specs support` for `artifactory_generic`
Add support of Artifactory Specs https://www.jfrog.com/confluence/display/RTF/Using+File+Specs As for now, JJB doesnt support of Artifactory Specs, only deprecated way is supported. This patch adds possibility for using of Specs inside Jenkins plugin https://www.jfrog.com/confluence/display/RTF/Jenkins+Artifactory+Plug-in Change-Id: I69e64202972f9f9b9147fdd65daffc2734a7d0cd
-rw-r--r--jenkins_jobs/modules/wrappers.py31
-rw-r--r--tests/wrappers/fixtures/artifactory002.xml1
-rw-r--r--tests/wrappers/fixtures/artifactory004.xml1
-rw-r--r--tests/wrappers/fixtures/artifactory005.xml34
-rw-r--r--tests/wrappers/fixtures/artifactory005.yaml7
-rw-r--r--tests/wrappers/fixtures/artifactory006.xml34
-rw-r--r--tests/wrappers/fixtures/artifactory006.yaml7
7 files changed, 115 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py
index 79fdbeed..16b2d86b 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 15ce1303..ceb3595f 100644
--- a/tests/wrappers/fixtures/artifactory002.xml
+++ b/tests/wrappers/fixtures/artifactory002.xml
@@ -8,6 +8,7 @@
<repositoryKey>release-repo</repositoryKey>
<snapshotsRepositoryKey>snapshot-repo</snapshotsRepositoryKey>
</details>
+ <useSpecs>false</useSpecs>
<deployPattern>*.zip=&gt;results</deployPattern>
<resolvePattern>libs-release-local:prod/*=&gt;prod-jars</resolvePattern>
<matrixParams>custom_prop=${PROJECT_ENV_VAR}</matrixParams>
diff --git a/tests/wrappers/fixtures/artifactory004.xml b/tests/wrappers/fixtures/artifactory004.xml
index f63afae2..af98f378 100644
--- a/tests/wrappers/fixtures/artifactory004.xml
+++ b/tests/wrappers/fixtures/artifactory004.xml
@@ -11,6 +11,7 @@
<dynamicMode/>
</deployReleaseRepository>
</details>
+ <useSpecs>false</useSpecs>
<deployPattern>*.zip=&gt;results</deployPattern>
<resolvePattern>libs-release-local:prod/*=&gt;prod-jars</resolvePattern>
<matrixParams>custom_prop=${PROJECT_ENV_VAR}</matrixParams>
diff --git a/tests/wrappers/fixtures/artifactory005.xml b/tests/wrappers/fixtures/artifactory005.xml
new file mode 100644
index 00000000..f30dd10d
--- /dev/null
+++ b/tests/wrappers/fixtures/artifactory005.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <buildWrappers>
+ <org.jfrog.hudson.generic.ArtifactoryGenericConfigurator>
+ <details>
+ <artifactoryName>test</artifactoryName>
+ <artifactoryUrl>http://artifactory.example.net/artifactory</artifactoryUrl>
+ <deployReleaseRepository>
+ <keyFromText/>
+ <keyFromSelect/>
+ <dynamicMode/>
+ </deployReleaseRepository>
+ </details>
+ <uploadSpec>
+ <spec>{ &quot;files&quot;: [ { &quot;pattern&quot;: &quot;*.jar&quot;, &quot;target&quot;: &quot;release&quot; } ] }</spec>
+ </uploadSpec>
+ <downloadSpec>
+ <spec>{ &quot;files&quot;: [ { &quot;pattern&quot;: &quot;*.jar&quot;, &quot;target&quot;: &quot;release&quot; } ] }</spec>
+ </downloadSpec>
+ <useSpecs>true</useSpecs>
+ <deployPattern/>
+ <resolvePattern/>
+ <matrixParams/>
+ <deployBuildInfo>true</deployBuildInfo>
+ <includeEnvVars>false</includeEnvVars>
+ <discardOldBuilds>false</discardOldBuilds>
+ <discardBuildArtifacts>true</discardBuildArtifacts>
+ <envVarsPatterns>
+ <includePatterns/>
+ <excludePatterns/>
+ </envVarsPatterns>
+ </org.jfrog.hudson.generic.ArtifactoryGenericConfigurator>
+ </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/artifactory005.yaml b/tests/wrappers/fixtures/artifactory005.yaml
new file mode 100644
index 00000000..1021ddae
--- /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 00000000..6ecffa96
--- /dev/null
+++ b/tests/wrappers/fixtures/artifactory006.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <buildWrappers>
+ <org.jfrog.hudson.generic.ArtifactoryGenericConfigurator>
+ <details>
+ <artifactoryName>test</artifactoryName>
+ <artifactoryUrl>http://artifactory.example.net/artifactory</artifactoryUrl>
+ <deployReleaseRepository>
+ <keyFromText/>
+ <keyFromSelect/>
+ <dynamicMode/>
+ </deployReleaseRepository>
+ </details>
+ <uploadSpec>
+ <filePath>path/to/upload-file</filePath>
+ </uploadSpec>
+ <downloadSpec>
+ <filePath>path/to/download-file</filePath>
+ </downloadSpec>
+ <useSpecs>true</useSpecs>
+ <deployPattern/>
+ <resolvePattern/>
+ <matrixParams/>
+ <deployBuildInfo>true</deployBuildInfo>
+ <includeEnvVars>false</includeEnvVars>
+ <discardOldBuilds>false</discardOldBuilds>
+ <discardBuildArtifacts>true</discardBuildArtifacts>
+ <envVarsPatterns>
+ <includePatterns/>
+ <excludePatterns/>
+ </envVarsPatterns>
+ </org.jfrog.hudson.generic.ArtifactoryGenericConfigurator>
+ </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/artifactory006.yaml b/tests/wrappers/fixtures/artifactory006.yaml
new file mode 100644
index 00000000..7a8aa003
--- /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"