CEL support in PipelineRun Task params values
Feature request
Support CEL in PipelineRun Task params values (and matrix values).
Use case
Imagine we have a Pipeline cel-use-case with one task payload, this Pipeline has 3 params: a, b and c. Task payload has only one param - destination. Now, depending on value of a we should supply b or c to payload task. Currently it can be done like this:
Option A - using when:
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: cel-use-case
spec:
params:
- a
- b
- c
tasks:
- name: payload-b
params:
- name: destination
value: $(params.b)
when:
- input: "$(params.a)"
operator: in
values: ["b"]
- name: payload-c
params:
- name: destination
value: $(params.c)
when:
- input: "$(params.a)"
operator: in
values: ["c"]
Option B - using mutation pre-task:
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: cel-use-case
spec:
params:
- a
- b
- c
tasks:
- name: mutation
taskSpec:
results:
- name: destination
type: string
steps:
- name: mutate
image: bash
command: ["bash", "-c"]
args:
- |
if [ "$(params.a)" = "b" ]; then
echo -n "$(params.b)" > $(results.destination.path)
else
echo -n "$(params.c)" > $(results.destination.path)
fi
- name: payload
runAfter:
- mutation
params:
- name: destination
value: $(tasks.mutation.results.destination)
Now, if we have CEL support it can be done like this:
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: cel-use-case
spec:
params:
- a
- b
- c
tasks:
- name: payload
params:
- name: destination
cel: "'$(params.a)' == 'b' ? '$(params.b)' : '$(params.c)'"
Feature request
Support
CELin PipelineRun Task params values (and matrix values).Use case
Imagine we have a Pipeline
cel-use-casewith one taskpayload, this Pipeline has 3 params:a,bandc. Taskpayloadhas only one param -destination. Now, depending on value ofawe should supplyborctopayloadtask. Currently it can be done like this:Option A - using
when:apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: cel-use-case spec: params: - a - b - c tasks: - name: payload-b params: - name: destination value: $(params.b) when: - input: "$(params.a)" operator: in values: ["b"] - name: payload-c params: - name: destination value: $(params.c) when: - input: "$(params.a)" operator: in values: ["c"]Option B - using mutation pre-task:
apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: cel-use-case spec: params: - a - b - c tasks: - name: mutation taskSpec: results: - name: destination type: string steps: - name: mutate image: bash command: ["bash", "-c"] args: - | if [ "$(params.a)" = "b" ]; then echo -n "$(params.b)" > $(results.destination.path) else echo -n "$(params.c)" > $(results.destination.path) fi - name: payload runAfter: - mutation params: - name: destination value: $(tasks.mutation.results.destination)Now, if we have
CELsupport it can be done like this:apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: cel-use-case spec: params: - a - b - c tasks: - name: payload params: - name: destination cel: "'$(params.a)' == 'b' ? '$(params.b)' : '$(params.c)'"
-
- @
____
- [ ] - > ____