summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Loa Odin <carlodin@gmail.com>2014-04-28 17:32:59 +0200
committerCarl Loa Odin <carlodin@gmail.com>2014-09-16 09:26:42 +0200
commitd78d0329f6c112330e07c0420ba7279b3f68e9d2 (patch)
tree02c93a5f1ee6726171f165e418cbe9a76cd07fea
parent04139e0f5e8f25d974526b619783eb1dfd3d83f3 (diff)
downloadpython-jenkins-job-builder-d78d0329f6c112330e07c0420ba7279b3f68e9d2.tar.gz
python-jenkins-job-builder-d78d0329f6c112330e07c0420ba7279b3f68e9d2.tar.xz
python-jenkins-job-builder-d78d0329f6c112330e07c0420ba7279b3f68e9d2.zip
Extend trigger_builds functionality
To support fan-out and conditional trigger behaviour with Jenkins Parameterized Trigger Plugin add following attributes: * Config for failTriggerOnMissing * Parameter factories Change-Id: I3755ed32779e64e7aee7a55a00c683edff6bbbd8
-rw-r--r--jenkins_jobs/modules/builders.py107
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml40
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.yaml9
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml40
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-binaryfile.yaml8
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml44
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.yaml13
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml42
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-counterbuild.yaml9
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml39
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.yaml8
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml39
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-filebuild.yaml7
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-multi.xml57
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-multi.yaml18
-rw-r--r--tests/builders/fixtures/trigger-builds004.xml38
-rw-r--r--tests/builders/fixtures/trigger-builds004.yaml6
17 files changed, 521 insertions, 3 deletions
diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index dd58eddf..f2c1e394 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -262,6 +262,9 @@ def trigger_builds(parser, xml_parent, data):
key/value pairs to be passed to the job (optional)
:arg str property-file:
Pass properties from file to the other job (optional)
+ :arg bool property-file-fail-on-missing:
+ Don't trigger if any files are missing (optional)
+ (default true)
:arg bool current-parameters: Whether to include the
parameters passed to the current build to the
triggered job.
@@ -271,11 +274,45 @@ def trigger_builds(parser, xml_parent, data):
to finish or not (default false)
:arg bool same-node: Use the same node for the triggered builds that was
used for this build (optional)
+ :arg list parameter-factories: list of parameter factories
+
+ :Factory: * **factory** (`str`) **filebuild** -- For every property file,
+ invoke one build
+ * **file-pattern** (`str`) -- File wildcard pattern
+ * **no-files-found-action** (`str`) -- Action to perform when
+ no files found (optional) ['FAIL', 'SKIP', 'NOPARMS']
+ (default 'SKIP')
+
+ :Factory: * **factory** (`str`) **binaryfile** -- For every matching
+ file, invoke one build
+ * **file-pattern** (`str`) -- Artifact ID of the artifact
+ * **no-files-found-action** (`str`) -- Action to perform when
+ no files found (optional) ['FAIL', 'SKIP', 'NOPARMS']
+ (default 'SKIP')
+
+ :Factory: * **factory** (`str`) **counterbuild** -- Invoke i=0...N builds
+ * **from** (`int`) -- Artifact ID of the artifact
+ * **to** (`int`) -- Version of the artifact
+ * **step** (`int`) -- Classifier of the artifact
+ * **parameters** (`str`) -- KEY=value pairs, one per line
+ (default '')
+ * **validation-fail** (`str`) -- Action to perform when
+ stepping validation fails (optional)
+ ['FAIL', 'SKIP', 'NOPARMS']
+ (default 'FAIL')
- Example:
+ Examples:
+
+ Basic usage.
.. literalinclude:: /../../tests/builders/fixtures/trigger-builds001.yaml
:language: yaml
+
+ Example with all supported parameter factories.
+
+ .. literalinclude:: \
+ /../../tests/builders/fixtures/trigger-builds-configfactory-multi.yaml
+ :language: yaml
"""
tbuilder = XML.SubElement(xml_parent,
'hudson.plugins.parameterizedtrigger.'
@@ -307,8 +344,11 @@ def trigger_builds(parser, xml_parent, data):
'FileBuildParameters')
propertiesFile = XML.SubElement(params, 'propertiesFile')
propertiesFile.text = project_def['property-file']
- failOnMissing = XML.SubElement(params, 'failTriggerOnMissing')
- failOnMissing.text = 'true'
+ failTriggerOnMissing = XML.SubElement(params,
+ 'failTriggerOnMissing')
+ failTriggerOnMissing.text = str(project_def.get(
+ 'property-file-fail-on-missing', True)).lower()
+
if 'predefined-parameters' in project_def:
params = XML.SubElement(tconfigs,
'hudson.plugins.parameterizedtrigger.'
@@ -317,6 +357,67 @@ def trigger_builds(parser, xml_parent, data):
properties.text = project_def['predefined-parameters']
if(len(list(tconfigs)) == 0):
tconfigs.set('class', 'java.util.Collections$EmptyList')
+
+ if 'parameter-factories' in project_def:
+ fconfigs = XML.SubElement(tconfig, 'configFactories')
+
+ supported_factories = ['filebuild', 'binaryfile', 'counterbuild']
+ supported_actions = ['SKIP', 'NOPARMS', 'FAIL']
+ for factory in project_def['parameter-factories']:
+
+ if factory['factory'] not in supported_factories:
+ raise JenkinsJobsException("factory must be one of %s" %
+ ", ".join(supported_factories))
+
+ if factory['factory'] == 'filebuild':
+ params = XML.SubElement(
+ fconfigs,
+ 'hudson.plugins.parameterizedtrigger.'
+ 'FileBuildParameterFactory')
+ if factory['factory'] == 'binaryfile':
+ params = XML.SubElement(
+ fconfigs,
+ 'hudson.plugins.parameterizedtrigger.'
+ 'BinaryFileParameterFactory')
+ parameterName = XML.SubElement(params, 'parameterName')
+ parameterName.text = factory['parameter-name']
+ if (factory['factory'] == 'filebuild' or
+ factory['factory'] == 'binaryfile'):
+ filePattern = XML.SubElement(params, 'filePattern')
+ filePattern.text = factory['file-pattern']
+ noFilesFoundAction = XML.SubElement(
+ params,
+ 'noFilesFoundAction')
+ noFilesFoundActionValue = str(factory.get(
+ 'no-files-found-action', 'SKIP'))
+ if noFilesFoundActionValue not in supported_actions:
+ raise JenkinsJobsException(
+ "no-files-found-action must be one of %s" %
+ ", ".join(supported_actions))
+ noFilesFoundAction.text = noFilesFoundActionValue
+ if factory['factory'] == 'counterbuild':
+ params = XML.SubElement(
+ fconfigs,
+ 'hudson.plugins.parameterizedtrigger.'
+ 'CounterBuildParameterFactory')
+ fromProperty = XML.SubElement(params, 'from')
+ fromProperty.text = str(factory['from'])
+ toProperty = XML.SubElement(params, 'to')
+ toProperty.text = str(factory['to'])
+ stepProperty = XML.SubElement(params, 'step')
+ stepProperty.text = str(factory['step'])
+ paramExpr = XML.SubElement(params, 'paramExpr')
+ paramExpr.text = str(factory.get(
+ 'parameters', ''))
+ validationFail = XML.SubElement(params, 'validationFail')
+ validationFailValue = str(factory.get(
+ 'validation-fail', 'FAIL'))
+ if validationFailValue not in supported_actions:
+ raise JenkinsJobsException(
+ "validation-fail action must be one of %s" %
+ ", ".join(supported_actions))
+ validationFail.text = validationFailValue
+
projects = XML.SubElement(tconfig, 'projects')
projects.text = project_def['project']
condition = XML.SubElement(tconfig, 'condition')
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml
new file mode 100644
index 00000000..278801a4
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-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>
+ <hudson.plugins.parameterizedtrigger.BinaryFileParameterFactory>
+ <parameterName>filename</parameterName>
+ <filePattern>propfile*.txt</filePattern>
+ <noFilesFoundAction>FAIL</noFilesFoundAction>
+ </hudson.plugins.parameterizedtrigger.BinaryFileParameterFactory>
+ </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-binaryfile-optionals.yaml b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.yaml
new file mode 100644
index 00000000..81b3a35c
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.yaml
@@ -0,0 +1,9 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: binaryfile
+ parameter-name: filename
+ file-pattern: propfile*.txt
+ no-files-found-action: FAIL
+ block: true \ No newline at end of file
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml
new file mode 100644
index 00000000..8858373b
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.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>
+ <hudson.plugins.parameterizedtrigger.BinaryFileParameterFactory>
+ <parameterName>filename</parameterName>
+ <filePattern>propfile*.txt</filePattern>
+ <noFilesFoundAction>SKIP</noFilesFoundAction>
+ </hudson.plugins.parameterizedtrigger.BinaryFileParameterFactory>
+ </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-binaryfile.yaml b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.yaml
new file mode 100644
index 00000000..a1efd0d2
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.yaml
@@ -0,0 +1,8 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: binaryfile
+ parameter-name: filename
+ file-pattern: propfile*.txt
+ block: true \ No newline at end of file
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml
new file mode 100644
index 00000000..985d15dc
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml
@@ -0,0 +1,44 @@
+<?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>
+ <hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ <from>0</from>
+ <to>5</to>
+ <step>1</step>
+ <paramExpr>EXAMPLE=NICE
+HELLO=WORLD
+</paramExpr>
+ <validationFail>SKIP</validationFail>
+ </hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ </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-counterbuild-optionals.yaml b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.yaml
new file mode 100644
index 00000000..871df9ac
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.yaml
@@ -0,0 +1,13 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: counterbuild
+ from: 0
+ to: 5
+ step: 1
+ validation-fail: SKIP
+ parameters: |
+ EXAMPLE=NICE
+ HELLO=WORLD
+ block: true \ No newline at end of file
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml
new file mode 100644
index 00000000..07ffe060
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml
@@ -0,0 +1,42 @@
+<?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>
+ <hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ <from>0</from>
+ <to>5</to>
+ <step>1</step>
+ <paramExpr/>
+ <validationFail>FAIL</validationFail>
+ </hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ </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-counterbuild.yaml b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.yaml
new file mode 100644
index 00000000..ab885ef4
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.yaml
@@ -0,0 +1,9 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: counterbuild
+ from: 0
+ to: 5
+ step: 1
+ block: true \ No newline at end of file
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml
new file mode 100644
index 00000000..b089e195
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml
@@ -0,0 +1,39 @@
+<?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>
+ <hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
+ <filePattern>propfile*.txt</filePattern>
+ <noFilesFoundAction>NOPARMS</noFilesFoundAction>
+ </hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
+ </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-filebuild-optionals.yaml b/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.yaml
new file mode 100644
index 00000000..09286d24
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.yaml
@@ -0,0 +1,8 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: filebuild
+ file-pattern: propfile*.txt
+ no-files-found-action: NOPARMS
+ block: true \ No newline at end of file
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml b/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml
new file mode 100644
index 00000000..5fe8083c
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml
@@ -0,0 +1,39 @@
+<?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>
+ <hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
+ <filePattern>propfile*.txt</filePattern>
+ <noFilesFoundAction>SKIP</noFilesFoundAction>
+ </hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
+ </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-filebuild.yaml b/tests/builders/fixtures/trigger-builds-configfactory-filebuild.yaml
new file mode 100644
index 00000000..738ec4c4
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-filebuild.yaml
@@ -0,0 +1,7 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ parameter-factories:
+ - factory: filebuild
+ file-pattern: propfile*.txt
+ block: true \ No newline at end of file
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
new file mode 100644
index 00000000..8c35c480
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <builders>
+ <hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ <configs>
+ <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ <configs>
+ <hudson.plugins.parameterizedtrigger.CurrentBuildParameters/>
+ <hudson.plugins.parameterizedtrigger.SubversionRevisionBuildParameters/>
+ <hudson.plugins.parameterizedtrigger.PredefinedBuildParameters>
+ <properties>FOO=&quot;bar&quot;</properties>
+ </hudson.plugins.parameterizedtrigger.PredefinedBuildParameters>
+ </configs>
+ <configFactories>
+ <hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
+ <filePattern>propfile*.txt</filePattern>
+ <noFilesFoundAction>SKIP</noFilesFoundAction>
+ </hudson.plugins.parameterizedtrigger.FileBuildParameterFactory>
+ <hudson.plugins.parameterizedtrigger.BinaryFileParameterFactory>
+ <parameterName>filename</parameterName>
+ <filePattern>otherpropfile*.txt</filePattern>
+ <noFilesFoundAction>SKIP</noFilesFoundAction>
+ </hudson.plugins.parameterizedtrigger.BinaryFileParameterFactory>
+ <hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ <from>0</from>
+ <to>5</to>
+ <step>1</step>
+ <paramExpr/>
+ <validationFail>FAIL</validationFail>
+ </hudson.plugins.parameterizedtrigger.CounterBuildParameterFactory>
+ </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-multi.yaml b/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml
new file mode 100644
index 00000000..96b04782
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.yaml
@@ -0,0 +1,18 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ predefined-parameters:
+ FOO="bar"
+ current-parameters: true
+ svn-revision: true
+ parameter-factories:
+ - factory: filebuild
+ file-pattern: propfile*.txt
+ - factory: binaryfile
+ parameter-name: filename
+ file-pattern: otherpropfile*.txt
+ - factory: counterbuild
+ from: 0
+ to: 5
+ step: 1
+ block: true
diff --git a/tests/builders/fixtures/trigger-builds004.xml b/tests/builders/fixtures/trigger-builds004.xml
new file mode 100644
index 00000000..0e23bab5
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds004.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <builders>
+ <hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ <configs>
+ <hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ <configs>
+ <hudson.plugins.parameterizedtrigger.FileBuildParameters>
+ <propertiesFile>propfile.txt</propertiesFile>
+ <failTriggerOnMissing>false</failTriggerOnMissing>
+ </hudson.plugins.parameterizedtrigger.FileBuildParameters>
+ </configs>
+ <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-builds004.yaml b/tests/builders/fixtures/trigger-builds004.yaml
new file mode 100644
index 00000000..d9da643b
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds004.yaml
@@ -0,0 +1,6 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ property-file: propfile.txt
+ property-file-fail-on-missing: false
+ block: true