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' +