diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index d6bcac737..f82336dd5 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -446,6 +446,10 @@ def trigger_builds(parser, xml_parent, data): * **ignore-offline-nodes** (`bool`) -- Don't trigger build on offline nodes (default true) + :Factory: + * **factory** (`str`) **allonlinenodes** -- Trigger a build on + every online node. Requires NodeLabel Parameter Plugin (optional) + Examples: Basic usage with yaml list of projects. @@ -545,7 +549,8 @@ def trigger_builds(parser, xml_parent, data): supported_factories = ['filebuild', 'binaryfile', 'counterbuild', - 'allnodesforlabel'] + 'allnodesforlabel', + 'allonlinenodes'] supported_actions = ['SKIP', 'NOPARMS', 'FAIL'] for factory in project_def['parameter-factories']: @@ -618,6 +623,12 @@ def trigger_builds(parser, xml_parent, data): 'ignoreOfflineNodes') ignoreOfflineNodes.text = str(factory.get( 'ignore-offline-nodes', True)).lower() + if factory['factory'] == 'allonlinenodes': + params = XML.SubElement( + fconfigs, + 'org.jvnet.jenkins.plugins.nodelabelparameter.' + 'parameterizedtrigger.' + 'AllNodesBuildParameterFactory') projects = XML.SubElement(tconfig, 'projects') if isinstance(project_def['project'], list): diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allonlinenodes.xml b/tests/builders/fixtures/trigger-builds-configfactory-allonlinenodes.xml new file mode 100644 index 000000000..0ab9dd615 --- /dev/null +++ b/tests/builders/fixtures/trigger-builds-configfactory-allonlinenodes.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + every-node + ALWAYS + false + false + + + FAILURE + 2 + RED + true + + + UNSTABLE + 1 + YELLOW + true + + + FAILURE + 2 + RED + true + + + + + + + diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allonlinenodes.yaml b/tests/builders/fixtures/trigger-builds-configfactory-allonlinenodes.yaml new file mode 100644 index 000000000..7625882bb --- /dev/null +++ b/tests/builders/fixtures/trigger-builds-configfactory-allonlinenodes.yaml @@ -0,0 +1,6 @@ +builders: + - trigger-builds: + - project: "every-node" + parameter-factories: + - factory: allonlinenodes + block: true diff --git a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml index 2f272b44b..e4ef3e31f 100644 --- a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml +++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml @@ -33,6 +33,7 @@ labelname false + build_started ALWAYS diff --git a/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml b/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml index 6daced4ef..7a0492315 100644 --- a/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml +++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml @@ -19,4 +19,5 @@ builders: name: parametername node-label: labelname ignore-offline-nodes: false + - factory: allonlinenodes block: true