From 2bff652b03bfcf0ab272e5cd0b5092472c201f7e Mon Sep 17 00:00:00 2001 From: Andrey Kostrov Date: Wed, 10 Apr 2019 12:04:45 +0300 Subject: [PATCH] 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 --- jenkins_jobs/modules/wrappers.py | 31 +++++++++++++++++++ tests/wrappers/fixtures/artifactory002.xml | 1 + tests/wrappers/fixtures/artifactory004.xml | 1 + tests/wrappers/fixtures/artifactory005.xml | 34 +++++++++++++++++++++ tests/wrappers/fixtures/artifactory005.yaml | 7 +++++ tests/wrappers/fixtures/artifactory006.xml | 34 +++++++++++++++++++++ tests/wrappers/fixtures/artifactory006.yaml | 7 +++++ 7 files changed, 115 insertions(+) create mode 100644 tests/wrappers/fixtures/artifactory005.xml create mode 100644 tests/wrappers/fixtures/artifactory005.yaml create mode 100644 tests/wrappers/fixtures/artifactory006.xml create mode 100644 tests/wrappers/fixtures/artifactory006.yaml 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"