From 8df564f97c0fbe6a7158f4171a1f6e9e3c715b74 Mon Sep 17 00:00:00 2001 From: Ari LiVigni Date: Tue, 31 May 2016 12:43:33 -0400 Subject: [PATCH] Adds support multijob support to the CopyArtifact plugin Added the multijob-build keyword support to CopyArtifact helper and builder Change-Id: Id657ef072c049fa48d0e0a88bf3dec1a593f67d5 --- jenkins_jobs/modules/builders.py | 9 +++++++++ jenkins_jobs/modules/helpers.py | 16 ++++++++++++---- tests/builders/fixtures/copy-artifact004.xml | 15 +++++++++++++++ tests/builders/fixtures/copy-artifact004.yaml | 9 +++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 tests/builders/fixtures/copy-artifact004.xml create mode 100644 tests/builders/fixtures/copy-artifact004.yaml diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index d6bcac737..d7156dbe2 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -96,6 +96,9 @@ def copyartifact(parser, xml_parent, data): Copy artifact from another project. Requires the :jenkins-wiki:`Copy Artifact plugin `. + Please note using the multijob-build for which-build argument requires + the :jenkins-wiki:`Multijob plugin ` + :arg str project: Project to copy from :arg str filter: what files to copy :arg str target: Target base directory for copy, blank means use workspace @@ -118,6 +121,7 @@ def copyartifact(parser, xml_parent, data): * **workspace-latest** * **build-param** * **downstream-build** + * **multijob-build** :arg str build-number: specifies the build number to get when when specific-build is specified as which-build @@ -151,6 +155,11 @@ def copyartifact(parser, xml_parent, data): .. literalinclude:: ../../tests/builders/fixtures/copy-artifact001.yaml :language: yaml + + Multijob Example: + + .. literalinclude:: ../../tests/builders/fixtures/copy-artifact004.yaml + :language: yaml """ t = XML.SubElement(xml_parent, 'hudson.plugins.copyartifact.CopyArtifact') # Warning: this only works with copy artifact version 1.26+, diff --git a/jenkins_jobs/modules/helpers.py b/jenkins_jobs/modules/helpers.py index de00a0368..5fc3ec9a4 100644 --- a/jenkins_jobs/modules/helpers.py +++ b/jenkins_jobs/modules/helpers.py @@ -197,7 +197,8 @@ def copyartifact_build_selector(xml_parent, data, select_tag='selector'): 'permalink': 'PermalinkBuildSelector', 'workspace-latest': 'WorkspaceSelector', 'build-param': 'ParameterizedBuildSelector', - 'downstream-build': 'DownstreamBuildSelector'} + 'downstream-build': 'DownstreamBuildSelector', + 'multijob-build': 'MultiJobBuildSelector'} if select not in selectdict: raise InvalidAttributeError('which-build', select, @@ -213,9 +214,16 @@ def copyartifact_build_selector(xml_parent, data, select_tag='selector'): raise InvalidAttributeError('permalink', permalink, permalinkdict.keys()) - selector = XML.SubElement(xml_parent, select_tag, - {'class': 'hudson.plugins.copyartifact.' + - selectdict[select]}) + if select == 'multijob-build': + selector = XML.SubElement(xml_parent, select_tag, + {'class': + 'com.tikal.jenkins.plugins.multijob.' + + selectdict[select]}) + else: + selector = XML.SubElement(xml_parent, select_tag, + {'class': + 'hudson.plugins.copyartifact.' + + selectdict[select]}) if select == 'specific-build': XML.SubElement(selector, 'buildNumber').text = data['build-number'] if select == 'last-successful': diff --git a/tests/builders/fixtures/copy-artifact004.xml b/tests/builders/fixtures/copy-artifact004.xml new file mode 100644 index 000000000..13b2c6dbe --- /dev/null +++ b/tests/builders/fixtures/copy-artifact004.xml @@ -0,0 +1,15 @@ + + + + + foo + *.json + /home/foo + true + true + false + PUBLISH=true + + + + diff --git a/tests/builders/fixtures/copy-artifact004.yaml b/tests/builders/fixtures/copy-artifact004.yaml new file mode 100644 index 000000000..a9b8284cb --- /dev/null +++ b/tests/builders/fixtures/copy-artifact004.yaml @@ -0,0 +1,9 @@ +builders: + - copyartifact: + project: foo + filter: "*.json" + target: /home/foo + which-build: multijob-build + optional: true + flatten: true + parameter-filters: PUBLISH=true