Skip to content

Commit

Permalink
fix: add outputs.parameters scope to script/containerSet templates. F…
Browse files Browse the repository at this point in the history
…ixes #6439 (#7045)

Signed-off-by: ziv-codefresh <ziv@codefresh.io>
  • Loading branch information
ziv-codefresh committed Oct 26, 2021
1 parent 60f2ae9 commit 201ba55
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
1 change: 1 addition & 0 deletions workflow/validate/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -894,6 +894,7 @@ func (ctx *templateValidationCtx) addOutputsToScope(tmpl *wfv1.Template, prefix
case wfv1.TemplateTypeScript, wfv1.TemplateTypeContainerSet:
scope[fmt.Sprintf("%s.outputs.result", prefix)] = true
scope[fmt.Sprintf("%s.exitCode", prefix)] = true
scope[fmt.Sprintf("%s.outputs.parameters", prefix)] = true
default:
scope[fmt.Sprintf("%s.outputs.parameters", prefix)] = true
}
Expand Down
97 changes: 97 additions & 0 deletions workflow/validate/validate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3025,3 +3025,100 @@ func TestTemplateReferenceWorkflowConfigMapRefArgument(t *testing.T) {
_, err := validate(templateReferenceWorkflowConfigMapRefArgument)
assert.NoError(t, err)
}

var stepsOutputParametersForScript = `
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: parameter-aggregation-
spec:
entrypoint: parameter-aggregation
templates:
- name: parameter-aggregation
steps:
- - name: echo-num
template: echo-num
arguments:
parameters:
- name: num
value: "{{item}}"
withItems: [1, 2, 3, 4]
- - name: echo-num-from-param
template: echo-num
arguments:
parameters:
- name: num
value: "{{item.num}}"
withParam: "{{steps.echo-num.outputs.parameters}}"
- name: echo-num
inputs:
parameters:
- name: num
script:
image: argoproj/argosay:v1
command: [sh, -x]
source: |
sleep 1
echo {{inputs.parameters.num}} > /tmp/num
outputs:
parameters:
- name: num
valueFrom:
path: /tmp/num
`

func TestStepsOutputParametersForScript(t *testing.T) {
_, err := validate(stepsOutputParametersForScript)
assert.NoError(t, err)
}

var stepsOutputParametersForContainerSet = `
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: parameter-aggregation-
spec:
entrypoint: parameter-aggregation
templates:
- name: parameter-aggregation
steps:
- - name: echo-num
template: echo-num
arguments:
parameters:
- name: num
value: "{{item}}"
withItems: [1, 2, 3, 4]
- - name: echo-num-from-param
template: echo-num
arguments:
parameters:
- name: num
value: "{{item.num}}"
withParam: "{{steps.echo-num.outputs.parameters}}"
- name: echo-num
inputs:
parameters:
- name: num
containerSet:
containers:
- name: main
image: 'docker/whalesay:latest'
command:
- sh
- '-c'
args:
- 'sleep 1; echo {{inputs.parameters.num}} > /tmp/num'
outputs:
parameters:
- name: num
valueFrom:
path: /tmp/num
`

func TestStepsOutputParametersForContainerSet(t *testing.T) {
_, err := validate(stepsOutputParametersForContainerSet)
assert.NoError(t, err)
}

0 comments on commit 201ba55

Please sign in to comment.