diff options
author | Igor Belikov <ibelikov@mirantis.com> | 2015-01-22 21:10:30 +0300 |
---|---|---|
committer | Igor Belikov <ibelikov@mirantis.com> | 2015-01-22 21:21:51 +0300 |
commit | 9039eaa09b7dd99dc6c0a5686d1d0838e572abca (patch) | |
tree | b9c95200a5ed9c5c91aeaa3da9c608a16d2dc850 | |
parent | 4bf020e07e0dd938732a32eaeb40a67d939cbd94 (diff) | |
download | python-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
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 |