adds support for not condition in conditional_step

updated builders.py to support not condition for conditional_step

Change-Id: Icf6f07ab4a53655d8f52c8793478afd6d93ae75c
This commit is contained in:
Jaime Flynn 2015-02-12 11:41:40 -06:00
parent 7447292b57
commit af5b5f7bf4
3 changed files with 43 additions and 3 deletions

View File

@ -850,6 +850,11 @@ def conditional_step(parser, xml_parent, data):
relative, it will be considered relative to
either `workspace`, `artifact-directory`,
or `jenkins-home`. Default is `workspace`.
not Run the step if the inverse of the condition-operand
is true
:condition-operand: Condition to evaluate. Can be
any supported conditional-step condition.
================== ====================================================
Example:
@ -857,10 +862,13 @@ def conditional_step(parser, xml_parent, data):
.. literalinclude:: \
/../../tests/builders/fixtures/conditional-step-success-failure.yaml
:language: yaml
.. literalinclude:: \
/../../tests/builders/fixtures/conditional-step-not-file-exists.yaml
:language: yaml
"""
def build_condition(cdata):
def build_condition(cdata, cond_root_tag):
kind = cdata['condition-kind']
ctag = XML.SubElement(root_tag, condition_tag)
ctag = XML.SubElement(cond_root_tag, condition_tag)
if kind == "always":
ctag.set('class',
'org.jenkins_ci.plugins.run_condition.core.AlwaysRun')
@ -938,6 +946,11 @@ def conditional_step(parser, xml_parent, data):
basedir_tag.set('class',
'org.jenkins_ci.plugins.run_condition.common.'
'BaseDirectory$JenkinsHome')
elif kind == "not":
ctag.set('class',
'org.jenkins_ci.plugins.run_condition.logic.Not')
notcondition = cdata['condition-operand']
build_condition(notcondition, ctag)
def build_step(parent, step):
for edited_node in create_builders(parser, step):
@ -962,7 +975,7 @@ def conditional_step(parser, xml_parent, data):
steps_parent = root_tag
condition_tag = "condition"
build_condition(data)
build_condition(data, root_tag)
evaluation_classes_pkg = 'org.jenkins_ci.plugins.run_condition'
evaluation_classes = {
'fail': evaluation_classes_pkg + '.BuildStepRunner$Fail',

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<builders>
<org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
<condition class="org.jenkins_ci.plugins.run_condition.logic.Not">
<condition class="org.jenkins_ci.plugins.run_condition.core.FileExistsCondition">
<file>mytestfile</file>
<baseDir class="org.jenkins_ci.plugins.run_condition.common.BaseDirectory$Workspace"/>
</condition>
</condition>
<runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Fail"/>
<buildStep class="hudson.tasks.Shell">
<command>touch $WORKSPACE/mytestfile</command>
</buildStep>
</org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder>
</builders>
</project>

View File

@ -0,0 +1,10 @@
builders:
- conditional-step:
condition-kind: not
condition-operand:
condition-kind: file-exists
condition-filename: mytestfile
condition-basedir: workspace
steps:
- shell: "touch $WORKSPACE/mytestfile"