From d76fa3da74eed616e3187968fc3411b039fa1801 Mon Sep 17 00:00:00 2001 From: Jon Nessmar Date: Fri, 6 Feb 2015 13:46:02 +0100 Subject: 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 --- jenkins_jobs/modules/builders.py | 65 ++++++++++++++-------- ...ds-configfactory-allnodesforlabel-optionals.xml | 3 + ...igger-builds-configfactory-allnodesforlabel.xml | 3 + ...r-builds-configfactory-binaryfile-optionals.xml | 3 + .../trigger-builds-configfactory-binaryfile.xml | 3 + ...builds-configfactory-counterbuild-optionals.xml | 3 + .../trigger-builds-configfactory-counterbuild.xml | 3 + ...er-builds-configfactory-filebuild-optionals.xml | 3 + .../trigger-builds-configfactory-filebuild.xml | 3 + .../trigger-builds-configfactory-multi.xml | 3 + tests/builders/fixtures/trigger-builds001.xml | 3 + tests/builders/fixtures/trigger-builds002.xml | 3 + tests/builders/fixtures/trigger-builds003.xml | 3 + tests/builders/fixtures/trigger-builds004.xml | 3 + tests/builders/fixtures/trigger-builds005.xml | 35 ++++++++++++ tests/builders/fixtures/trigger-builds005.yaml | 9 +++ 16 files changed, 126 insertions(+), 22 deletions(-) create mode 100644 tests/builders/fixtures/trigger-builds005.xml create mode 100644 tests/builders/fixtures/trigger-builds005.yaml 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ FAILURE 2 RED + true UNSTABLE 1 YELLOW + true FAILURE 2 RED + true 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 @@ + + + + + + + + + propfile.txt + true + + + build_started + ALWAYS + false + false + + + UNSTABLE + 1 + YELLOW + true + + + FAILURE + 2 + RED + true + + + + + + + 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 -- cgit