summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Belikov <ibelikov@mirantis.com>2015-01-22 21:10:30 +0300
committerIgor Belikov <ibelikov@mirantis.com>2015-01-22 21:21:51 +0300
commit9039eaa09b7dd99dc6c0a5686d1d0838e572abca (patch)
treeb9c95200a5ed9c5c91aeaa3da9c608a16d2dc850
parent4bf020e07e0dd938732a32eaeb40a67d939cbd94 (diff)
downloadpython-jenkins-job-builder-9039eaa09b7dd99dc6c0a5686d1d0838e572abca.tar.gz
python-jenkins-job-builder-9039eaa09b7dd99dc6c0a5686d1d0838e572abca.tar.xz
python-jenkins-job-builder-9039eaa09b7dd99dc6c0a5686d1d0838e572abca.zip
Add support for 'All Nodes For Label Factory'
Gives ability to trigger a build of a project on all nodes with specific label. Requires NodeLabel Parameter plugin. Change-Id: I1a59c7c27591574bb1c1af0041de7cfd3775916d
-rw-r--r--jenkins_jobs/modules/builders.py31
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml40
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.yaml9
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml40
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.yaml7
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-multi.xml5
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-multi.yaml4
7 files changed, 135 insertions, 1 deletions
diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index 3d3deb07..41fefea1 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -325,6 +325,16 @@ def trigger_builds(parser, xml_parent, data):
['FAIL', 'SKIP', 'NOPARMS']
(default 'FAIL')
+ :Factory: * **factory** (`str`) **allnodesforlabel** -- Trigger a build
+ on all nodes having specific label. Requires NodeLabel
+ Parameter Plugin (optional)
+ * **name** (`str`) -- Name of the parameter to set (optional)
+ * **node-label** (`str`) -- Label of the nodes where build
+ should be triggered
+ * **ignore-offline-nodes** (`bool`) -- Don't trigger build on
+ offline nodes (optional)
+ (default true)
+
Examples:
Basic usage.
@@ -385,7 +395,10 @@ def trigger_builds(parser, xml_parent, data):
if 'parameter-factories' in project_def:
fconfigs = XML.SubElement(tconfig, 'configFactories')
- supported_factories = ['filebuild', 'binaryfile', 'counterbuild']
+ supported_factories = ['filebuild',
+ 'binaryfile',
+ 'counterbuild',
+ 'allnodesforlabel']
supported_actions = ['SKIP', 'NOPARMS', 'FAIL']
for factory in project_def['parameter-factories']:
@@ -441,6 +454,22 @@ def trigger_builds(parser, xml_parent, data):
"validation-fail action must be one of %s" %
", ".join(supported_actions))
validationFail.text = validationFailValue
+ if factory['factory'] == 'allnodesforlabel':
+ params = XML.SubElement(
+ fconfigs,
+ 'org.jvnet.jenkins.plugins.nodelabelparameter.'
+ 'parameterizedtrigger.'
+ 'AllNodesForLabelBuildParameterFactory')
+ nameProperty = XML.SubElement(params, 'name')
+ nameProperty.text = str(factory.get(
+ 'name', ''))
+ nodeLabel = XML.SubElement(params, 'nodeLabel')
+ nodeLabel.text = str(factory['node-label'])
+ ignoreOfflineNodes = XML.SubElement(
+ params,
+ 'ignoreOfflineNodes')
+ ignoreOfflineNodes.text = str(factory.get(
+ 'ignore-offline-nodes', True)).lower()
projects = XML.SubElement(tconfig, 'projects')
projects.text = project_def['project']
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml
new file mode 100644
index 00000000..f8300bcc
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <builders>
+ <hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ <configs>
+ <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ <configs class="java.util.Collections$EmptyList"/>
+ <configFactories>
+ <org.jvnet.jenkins.plugins.nodelabelparameter.parameterizedtrigger.AllNodesForLabelBuildParameterFactory>
+ <name>test-name</name>
+ <nodeLabel>test-label</nodeLabel>
+ <ignoreOfflineNodes>true</ignoreOfflineNodes>
+ </org.jvnet.jenkins.plugins.nodelabelparameter.parameterizedtrigger.AllNodesForLabelBuildParameterFactory>
+ </configFactories>
+ <projects>build_started</projects>
+ <condition>ALWAYS</condition>
+ <triggerWithNoParameters>false</triggerWithNoParameters>
+ <buildAllNodesWithLabel>false</buildAllNodesWithLabel>
+ <block>
+ <buildStepFailureThreshold>
+ <name>FAILURE</name>
+ <ordinal>2</ordinal>
+ <color>RED</color>
+ </buildStepFailureThreshold>
+ <unstableThreshold>
+ <name>UNSTABLE</name>
+ <ordinal>1</ordinal>
+ <color>YELLOW</color>
+ </unstableThreshold>
+ <failureThreshold>
+ <name>FAILURE</name>
+ <ordinal>2</ordinal>
+ <color>RED</color>
+ </failureThreshold>
+ </block>
+ </hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ </configs>
+ </hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ </builders>
+</project>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.yaml b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.yaml
new file mode 100644
index 00000000..432e257b
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.yaml
@@ -0,0 +1,9 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: allnodesforlabel
+ name: test-name
+ node-label: test-label
+ ignore-offline-nodes: true
+ block: true
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml
new file mode 100644
index 00000000..ac17062d
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <builders>
+ <hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ <configs>
+ <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ <configs class="java.util.Collections$EmptyList"/>
+ <configFactories>
+ <org.jvnet.jenkins.plugins.nodelabelparameter.parameterizedtrigger.AllNodesForLabelBuildParameterFactory>
+ <name/>
+ <nodeLabel>test-label</nodeLabel>
+ <ignoreOfflineNodes>true</ignoreOfflineNodes>
+ </org.jvnet.jenkins.plugins.nodelabelparameter.parameterizedtrigger.AllNodesForLabelBuildParameterFactory>
+ </configFactories>
+ <projects>build_started</projects>
+ <condition>ALWAYS</condition>
+ <triggerWithNoParameters>false</triggerWithNoParameters>
+ <buildAllNodesWithLabel>false</buildAllNodesWithLabel>
+ <block>
+ <buildStepFailureThreshold>
+ <name>FAILURE</name>
+ <ordinal>2</ordinal>
+ <color>RED</color>
+ </buildStepFailureThreshold>
+ <unstableThreshold>
+ <name>UNSTABLE</name>
+ <ordinal>1</ordinal>
+ <color>YELLOW</color>
+ </unstableThreshold>
+ <failureThreshold>
+ <name>FAILURE</name>
+ <ordinal>2</ordinal>
+ <color>RED</color>
+ </failureThreshold>
+ </block>
+ </hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ </configs>
+ </hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ </builders>
+</project>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.yaml b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.yaml
new file mode 100644
index 00000000..4290bac9
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.yaml
@@ -0,0 +1,7 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: allnodesforlabel
+ node-label: test-label
+ block: true
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
index 8c35c480..d95c04b3 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
@@ -28,6 +28,11 @@
<paramExpr/>
<validationFail>FAIL</validationFail>
</hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ <org.jvnet.jenkins.plugins.nodelabelparameter.parameterizedtrigger.AllNodesForLabelBuildParameterFactory>
+ <name>parametername</name>
+ <nodeLabel>labelname</nodeLabel>
+ <ignoreOfflineNodes>false</ignoreOfflineNodes>
+ </org.jvnet.jenkins.plugins.nodelabelparameter.parameterizedtrigger.AllNodesForLabelBuildParameterFactory>
</configFactories>
<projects>build_started</projects>
<condition>ALWAYS</condition>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml b/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml
index 96b04782..6daced4e 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml
@@ -15,4 +15,8 @@ builders:
from: 0
to: 5
step: 1
+ - factory: allnodesforlabel
+ name: parametername
+ node-label: labelname
+ ignore-offline-nodes: false
block: true