pipeline: Pipeline failing with "invalid pipelineresults" when referencing results of skipped tasks
Expected Behavior
According to the documentation pipeline results can contain references to task results. If a task did not run because of it’s whenConditions, the pipeline result is not emitted but the pipeline succeeds. This worked with v0.37.5 of Tekton Pipelines available on OpenShift.
Actual Behavior
With the update of the RedHat OpenShift Pipelines Operator, which brings Tekton Pipeline v0.41.0, pipelines with skipped tasks and composed results now fail with the message invalid pipelineresults [result-goodbye], the referred results don't exist.
Steps to Reproduce the Problem
Run the following PipelineRun:
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: pipelinerun-test
spec:
pipelineSpec:
params:
- name: say-hello
default: 'false'
tasks:
- name: hello
taskSpec:
results:
- name: result-one
steps:
- image: alpine
script: |
#!/bin/sh
echo "Hello world!"
echo -n "RES1" > $(results.result-one.path)
- name: goodbye
runAfter:
- hello
taskSpec:
results:
- name: result-two
steps:
- image: alpine
script: |
#!/bin/sh
echo "Goodbye world!"
echo -n "RES2" > $(results.result-two.path)
when:
- input: $(params.say-hello)
operator: in
values: ["true"]
results:
- name: result-hello
description: Result one
value: '$(tasks.hello.results.result-one)'
- name: result-goodbye
description: Result two
value: '$(tasks.goodbye.results.result-two)'
Additional Info
- Kubernetes version:
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.4+a34b9e9", GitCommit:"b6d1f054747e9886f61dd85316deac3415e2726f", GitTreeState:"clean", BuildDate:"2023-01-10T15:55:28Z", GoVersion:"go1.19.4", Compiler:"gc", Platform:"linux/amd64"}
- Tekton Pipeline version:
Pipeline version: v0.41.0
Triggers version: v0.22.0
Openshift Pipelines Version: 1.9.0
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 30 (18 by maintainers)
Commits related to this issue
- don't validate skipped task resutls for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to tektoncd/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to tektoncd/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to tektoncd/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to tektoncd/pipeline by Yongxuanzhang a year ago
- don't validate skipped task results for pipeline results This commit skip the validation for skipped task results in pipeline results. This fixes #6139. The skipped task results are not emitted by de... — committed to tektoncd/pipeline by Yongxuanzhang a year ago
- don't return validation error when taskrun failed/skipped This commit aims to fix #6383, #6139 and supports #3749. This commits skip the validation if the taskrun is not successful (e.g. failed or sk... — committed to Yongxuanzhang/pipeline by Yongxuanzhang a year ago
@Yongxuanzhang Having validation is reasonable, but directly breaking the pipeline without a workaround/migration possibility is not ideal. I’d prefer to have this either be opt-in or have to have a fallback/default available at the same time.
@Yongxuanzhang apparently I read the following statement differently
For me this sounds like a case where a task specifies a result but no write to that result file was made in any of the steps. I didn’t make the connection to skipped tasks.
Anyway, you asked about my use-case: we have pipelines for building software projects such as a Java Maven application. The pipelines includes tasks for build the jar, testing it, running quality checks (sonar scan) and creating a Docker image from it. Some tasks are optional (e.g. sonar scan or docker build) and can be enabled/disabled by pipeline parameters consumed by when expressions guarding the task execution. These tasks also emit results (if executed) which are mapped into pipeline results. If for example a docker image was built, the image name and tag are visible in the pipeline results and vice versa: if the docker build was disabled by parameter, no such pipeline result exists.
Or a bit shorter: we run pipelines with optional tasks that yield optional results.
I was just surprised to suddenly see pipeline fail although all tasks have executed successfully. For possible solutions I can just copy @kyubisation’s suggestions.