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:
parent
7447292b57
commit
af5b5f7bf4
@ -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',
|
||||
|
17
tests/builders/fixtures/conditional-step-not-file-exists.xml
Normal file
17
tests/builders/fixtures/conditional-step-not-file-exists.xml
Normal 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>
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user