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