Conditional Artifacts and Parameters¶
v3.1 and after
The Conditional Artifacts and Parameters feature enables to assign the Step/DAG level artifacts or parameters based on
expression. This introduces a new field fromExpression: ... under Step/DAG level output artifact and expression: ...
under step/DAG level output parameter. Both use the
expr syntax.
Conditional Artifacts¶
- name: coinflip
  steps:
    - - name: flip-coin
        template: flip-coin
    - - name: heads
        template: heads
        when: "{{steps.flip-coin.outputs.result}} == heads"
      - name: tails
        template: tails
        when: "{{steps.flip-coin.outputs.result}} == tails"
  outputs:
    artifacts:
      - name: result
        fromExpression: "steps['flip-coin'].outputs.result == 'heads' ? steps.heads.outputs.artifacts.headsresult : steps.tails.outputs.artifacts.tailsresult"
Conditional Parameters¶
    - name: coinflip
      steps:
        - - name: flip-coin
            template: flip-coin
        - - name: heads
            template: heads
            when: "{{steps.flipcoin.outputs.result}} == heads"
          - name: tails
            template: tails
            when: "{{steps.flipcoin.outputs.result}} == tails"
      outputs:
        parameters:
          - name: stepresult
            valueFrom:
              expression: "steps.flipcoin.outputs.result == 'heads' ? steps.heads.outputs.result : steps.tails.outputs.result"
Built-In Functions¶
Convenient functions added to support more use cases:
- asInt- convert the string to integer (e.g:- asInt('1'))
- asFloat- convert the string to Float (e.g:- asFloat('1.23'))
- string- convert the int/float to string (e.g:- string(1))
- jsonpath- Extract the element from JSON using JSON Path ( e.g:- jsonpath('{"employee":{"name":"sonoo","salary":56000,"married":true}}", "$.employee.name" ))
- 
Sprig - Support all sprigfunctions
Note
Expressions will decode the - as operator if template name has -, it will fail the expression. So here solution
for template name which has - in its name. step['one-two-three'].outputs.artifacts