diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index bd6d97204..9bba029f0 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -1448,8 +1448,11 @@ def conditional_step(registry, xml_parent, data):
(required)
================== ====================================================
- Example:
+ Examples:
+ .. literalinclude::
+ /../../tests/builders/fixtures/conditional-step-multiple-steps.yaml
+ :language: yaml
.. literalinclude::
/../../tests/builders/fixtures/conditional-step-success-failure.yaml
:language: yaml
@@ -1475,7 +1478,7 @@ def conditional_step(registry, xml_parent, data):
/../../tests/builders/fixtures/conditional-step-and.yaml
:language: yaml
"""
- def build_condition(cdata, cond_root_tag):
+ def build_condition(cdata, cond_root_tag, condition_tag):
kind = cdata['condition-kind']
ctag = XML.SubElement(cond_root_tag, condition_tag)
core_prefix = 'org.jenkins_ci.plugins.run_condition.core.'
@@ -1656,7 +1659,7 @@ def conditional_step(registry, xml_parent, data):
notcondition = cdata['condition-operand']
except KeyError:
raise MissingAttributeError('condition-operand')
- build_condition(notcondition, ctag)
+ build_condition(notcondition, ctag, "condition")
elif kind == "and" or "or":
if kind == "and":
ctag.set('class', logic_prefix + 'And')
@@ -1672,7 +1675,8 @@ def conditional_step(registry, xml_parent, data):
for condition in conditions_list:
conditions_container_tag = XML.SubElement(conditions_tag,
container_tag_text)
- build_condition(condition, conditions_container_tag)
+ build_condition(condition, conditions_container_tag,
+ "condition")
def build_step(parent, step):
for edited_node in create_builders(registry, step):
@@ -1697,7 +1701,7 @@ def conditional_step(registry, xml_parent, data):
steps_parent = root_tag
condition_tag = "condition"
- build_condition(data, root_tag)
+ build_condition(data, root_tag, condition_tag)
evaluation_classes_pkg = 'org.jenkins_ci.plugins.run_condition'
evaluation_classes = {
'fail': evaluation_classes_pkg + '.BuildStepRunner$Fail',
diff --git a/tests/builders/fixtures/conditional-step-multiple-steps-and.xml b/tests/builders/fixtures/conditional-step-multiple-steps-and.xml
new file mode 100644
index 000000000..4a008c135
--- /dev/null
+++ b/tests/builders/fixtures/conditional-step-multiple-steps-and.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ sl
+
+
+ ls
+
+
+
+
+
+
+ *abc*
+
+
+
+
+
+ 2
+ 0
+ 23
+ 40
+ true
+
+
+
+
+
+
+
+
diff --git a/tests/builders/fixtures/conditional-step-multiple-steps-and.yaml b/tests/builders/fixtures/conditional-step-multiple-steps-and.yaml
new file mode 100644
index 000000000..a9173ec23
--- /dev/null
+++ b/tests/builders/fixtures/conditional-step-multiple-steps-and.yaml
@@ -0,0 +1,16 @@
+builders:
+ - conditional-step:
+ condition-kind: and
+ condition-operands:
+ - condition-kind: regex-match
+ regex: "*abc*"
+ label: "dabcddabc"
+ - condition-kind: time
+ earliest-hour: "2"
+ earliest-min: "0"
+ latest-hour: "23"
+ latest-min: "40"
+ use-build-time: true
+ steps:
+ - shell: "sl"
+ - shell: "ls"
diff --git a/tests/builders/fixtures/conditional-step-multiple-steps.xml b/tests/builders/fixtures/conditional-step-multiple-steps.xml
new file mode 100644
index 000000000..eedbb2266
--- /dev/null
+++ b/tests/builders/fixtures/conditional-step-multiple-steps.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ first command
+
+
+ second command
+
+
+
+
+
+
+
diff --git a/tests/builders/fixtures/conditional-step-multiple-steps.yaml b/tests/builders/fixtures/conditional-step-multiple-steps.yaml
new file mode 100644
index 000000000..240aba80c
--- /dev/null
+++ b/tests/builders/fixtures/conditional-step-multiple-steps.yaml
@@ -0,0 +1,7 @@
+builders:
+ - conditional-step:
+ condition-kind: always
+ steps:
+ - shell: 'first command'
+ - shell: 'second command'
+