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