summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Nessmar <jon.nessmar@sonymobile.com>2015-02-06 13:46:02 +0100
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2015-03-03 09:01:54 +0000
commitd76fa3da74eed616e3187968fc3411b039fa1801 (patch)
tree52cdd89fe39a156994ea54afd68300b47d4d7717
parent9cbba31054386af98eaa27ed532f5a3ad5c9aa97 (diff)
downloadpython-jenkins-job-builder-d76fa3da74eed616e3187968fc3411b039fa1801.tar.gz
python-jenkins-job-builder-d76fa3da74eed616e3187968fc3411b039fa1801.tar.xz
python-jenkins-job-builder-d76fa3da74eed616e3187968fc3411b039fa1801.zip
Add support to customize trigger-builds block thresholds
Updated trigger-builds function to support customization of thresholds sub sections under block section Currently JJB only set default values to those three block thresholds. There are sometimes need to set different values than default. Change-Id: I73e7f828c6b651b87e7068d3c16362f4901ba32a
-rw-r--r--jenkins_jobs/modules/builders.py65
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds-configfactory-multi.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds001.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds002.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds003.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds004.xml3
-rw-r--r--tests/builders/fixtures/trigger-builds005.xml35
-rw-r--r--tests/builders/fixtures/trigger-builds005.yaml9
16 files changed, 126 insertions, 22 deletions
diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index b597d482..ffc56548 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -298,6 +298,16 @@ def trigger_builds(parser, xml_parent, data):
to the triggered job
:arg bool block: whether to wait for the triggered jobs
to finish or not (default false)
+ :arg dict block-thresholds: Fail builds and/or mark as failed or unstable
+ based on thresholds. Only apply if block parameter is true (optional)
+
+ * **build-step-failure-threshold** (`str`)
+ ['never', 'SUCCESS', 'UNSTABLE', 'FAILURE'] (default: 'FAILURE')
+ * **unstable-threshold** (`str`)
+ ['never', 'SUCCESS', 'UNSTABLE', 'FAILURE'] (default: 'UNSTABLE')
+ * **failure-threshold** (`str`)
+ ['never', 'SUCCESS', 'UNSTABLE', 'FAILURE'] (default: 'FAILURE')
+
: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
@@ -484,29 +494,40 @@ def trigger_builds(parser, xml_parent, data):
'buildAllNodesWithLabel')
build_all_nodes_with_label.text = 'false'
block = project_def.get('block', False)
- if(block):
+ if block:
block = XML.SubElement(tconfig, 'block')
- bsft = XML.SubElement(block, 'buildStepFailureThreshold')
- XML.SubElement(bsft, 'name').text = \
- hudson_model.FAILURE['name']
- XML.SubElement(bsft, 'ordinal').text = \
- hudson_model.FAILURE['ordinal']
- XML.SubElement(bsft, 'color').text = \
- hudson_model.FAILURE['color']
- ut = XML.SubElement(block, 'unstableThreshold')
- XML.SubElement(ut, 'name').text = \
- hudson_model.UNSTABLE['name']
- XML.SubElement(ut, 'ordinal').text = \
- hudson_model.UNSTABLE['ordinal']
- XML.SubElement(ut, 'color').text = \
- hudson_model.UNSTABLE['color']
- ft = XML.SubElement(block, 'failureThreshold')
- XML.SubElement(ft, 'name').text = \
- hudson_model.FAILURE['name']
- XML.SubElement(ft, 'ordinal').text = \
- hudson_model.FAILURE['ordinal']
- XML.SubElement(ft, 'color').text = \
- hudson_model.FAILURE['color']
+ supported_thresholds = [['build-step-failure-threshold',
+ 'buildStepFailureThreshold',
+ 'FAILURE'],
+ ['unstable-threshold',
+ 'unstableThreshold',
+ 'UNSTABLE'],
+ ['failure-threshold',
+ 'failureThreshold',
+ 'FAILURE']]
+ supported_threshold_values = ['never',
+ hudson_model.SUCCESS['name'],
+ hudson_model.UNSTABLE['name'],
+ hudson_model.FAILURE['name']]
+ thrsh = project_def.get('block-thresholds', False)
+ for toptname, txmltag, tvalue in supported_thresholds:
+ if thrsh:
+ tvalue = thrsh.get(toptname, tvalue)
+ if tvalue.lower() == supported_threshold_values[0]:
+ continue
+ if tvalue.upper() not in supported_threshold_values:
+ raise JenkinsJobsException(
+ "threshold value must be one of (%s)" %
+ ", ".join(supported_threshold_values))
+ th = XML.SubElement(block, txmltag)
+ XML.SubElement(th, 'name').text = hudson_model.THRESHOLDS[
+ tvalue.upper()]['name']
+ XML.SubElement(th, 'ordinal').text = hudson_model.THRESHOLDS[
+ tvalue.upper()]['ordinal']
+ XML.SubElement(th, 'color').text = hudson_model.THRESHOLDS[
+ tvalue.upper()]['color']
+ XML.SubElement(th, 'completeBuild').text = "true"
+
# If configs is empty, remove the entire tbuilder tree.
if(len(configs) == 0):
logger.debug("Pruning empty TriggerBuilder tree.")
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml
index f8300bcc..58421c85 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel-optionals.xml
@@ -21,16 +21,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml
index ac17062d..a5c42c80 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-allnodesforlabel.xml
@@ -21,16 +21,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml
index 278801a4..58c6e2e8 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile-optionals.xml
@@ -21,16 +21,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml
index 8858373b..1f830440 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-binaryfile.xml
@@ -21,16 +21,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml
index 985d15dc..450b799b 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild-optionals.xml
@@ -25,16 +25,19 @@ HELLO=WORLD
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml
index 07ffe060..b7acb65d 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-counterbuild.xml
@@ -23,16 +23,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml b/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml
index b089e195..9974900e 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-filebuild-optionals.xml
@@ -20,16 +20,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml b/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml
index 5fe8083c..41698e28 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-filebuild.xml
@@ -20,16 +20,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
index d95c04b3..2f272b44 100644
--- a/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
+++ b/tests/builders/fixtures/trigger-builds-configfactory-multi.xml
@@ -43,16 +43,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds001.xml b/tests/builders/fixtures/trigger-builds001.xml
index 13161d12..4331e4bf 100644
--- a/tests/builders/fixtures/trigger-builds001.xml
+++ b/tests/builders/fixtures/trigger-builds001.xml
@@ -20,16 +20,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds002.xml b/tests/builders/fixtures/trigger-builds002.xml
index 63b7caa8..b5bed715 100644
--- a/tests/builders/fixtures/trigger-builds002.xml
+++ b/tests/builders/fixtures/trigger-builds002.xml
@@ -19,16 +19,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds003.xml b/tests/builders/fixtures/trigger-builds003.xml
index ac5b7752..74278e3c 100644
--- a/tests/builders/fixtures/trigger-builds003.xml
+++ b/tests/builders/fixtures/trigger-builds003.xml
@@ -19,16 +19,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds004.xml b/tests/builders/fixtures/trigger-builds004.xml
index 0e23bab5..f7594198 100644
--- a/tests/builders/fixtures/trigger-builds004.xml
+++ b/tests/builders/fixtures/trigger-builds004.xml
@@ -19,16 +19,19 @@
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</buildStepFailureThreshold>
<unstableThreshold>
<name>UNSTABLE</name>
<ordinal>1</ordinal>
<color>YELLOW</color>
+ <completeBuild>true</completeBuild>
</unstableThreshold>
<failureThreshold>
<name>FAILURE</name>
<ordinal>2</ordinal>
<color>RED</color>
+ <completeBuild>true</completeBuild>
</failureThreshold>
</block>
</hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
diff --git a/tests/builders/fixtures/trigger-builds005.xml b/tests/builders/fixtures/trigger-builds005.xml
new file mode 100644
index 00000000..f950214b
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds005.xml
@@ -0,0 +1,35 @@
+<?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>true</failTriggerOnMissing>
+ </hudson.plugins.parameterizedtrigger.FileBuildParameters>
+ </configs>
+ <projects>build_started</projects>
+ <condition>ALWAYS</condition>
+ <triggerWithNoParameters>false</triggerWithNoParameters>
+ <buildAllNodesWithLabel>false</buildAllNodesWithLabel>
+ <block>
+ <buildStepFailureThreshold>
+ <name>UNSTABLE</name>
+ <ordinal>1</ordinal>
+ <color>YELLOW</color>
+ <completeBuild>true</completeBuild>
+ </buildStepFailureThreshold>
+ <failureThreshold>
+ <name>FAILURE</name>
+ <ordinal>2</ordinal>
+ <color>RED</color>
+ <completeBuild>true</completeBuild>
+ </failureThreshold>
+ </block>
+ </hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig>
+ </configs>
+ </hudson.plugins.parameterizedtrigger.TriggerBuilder>
+ </builders>
+</project>
diff --git a/tests/builders/fixtures/trigger-builds005.yaml b/tests/builders/fixtures/trigger-builds005.yaml
new file mode 100644
index 00000000..aa792fc5
--- /dev/null
+++ b/tests/builders/fixtures/trigger-builds005.yaml
@@ -0,0 +1,9 @@
+builders:
+ - trigger-builds:
+ - project: "build_started"
+ property-file: propfile.txt
+ block: true
+ block-thresholds:
+ build-step-failure-threshold: UNSTABLE
+ unstable-threshold: never
+ failure-threshold: FAILURE