pipeline
                                
                                 pipeline copied to clipboard
                                
                                    pipeline copied to clipboard
                            
                            
                            
                        Finally tasks not triggered in case of task failing due to missing results
Expected Behavior
I have a pipeline with two tasks - first one producing a result, second one using the result and finally task not using the result at all. Finally task should always run.
Actual Behavior
When first task doesn't produce the result, second one correctly fails. Finally task is skipped.
Steps to Reproduce the Problem
- Run the below pipeline
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: finally-pipeline
spec:
  tasks:
  - name: task-a
    taskSpec:
      steps:
      - name: hello
        image: registry.access.redhat.com/ubi8/ubi-minimal
        script: |
          #!/usr/bin/env bash
          echo "Hello from task A"
          # uncomment to fix the issue
          #echo "foo" > $(results.foo.path)
          sleep 5
      results:
        - name: foo
  - name: task-b
    params:
      - name: input
        value: $(tasks.task-a.results.foo)
    taskSpec:
      params:
        - name: input
      steps:
      - name: hello
        image: registry.access.redhat.com/ubi8/ubi-minimal
        script: |
          #!/usr/bin/env bash
          echo "Hello from task B"
          echo "Content of param: $(params.input)"
          sleep 5
  finally:
  - name: final-task
    taskSpec:
      steps:
      - name: finally
        image: registry.access.redhat.com/ubi8/ubi-minimal
        script: |
          #!/usr/bin/env bash
          echo "Hello from finally"
          sleep 5
Additional Info
- 
Kubernetes version: Output of kubectl version:
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.9", GitCommit:"d1483fdf7a0578c83523bc1e2212a606a44fd71d", GitTreeState:"archive", BuildDate:"2023-09-16T00:00:00Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.9+636f2be", GitCommit:"e782f8ba0e57d260867ea108b671c94844780ef2", GitTreeState:"clean", BuildDate:"2023-10-20T19:28:29Z", GoVersion:"go1.19.13 X:strictfipsruntime", Compiler:"gc", Platform:"linux/arm64"}
- 
Tekton Pipeline version: Output of tkn versionorkubectl get pods -n tekton-pipelines -l app=tekton-pipelines-controller -o=jsonpath='{.items[0].metadata.labels.version}'
Client version: 0.32.2
Chains version: v0.17.1
Pipeline version: v0.50.3
Triggers version: v0.25.2
Operator version: v0.68.1
Similar to https://github.com/tektoncd/pipeline/issues/4438
Thanks! I will take a look
/assign
I think this is caused by this pr https://github.com/tektoncd/pipeline/pull/6792
using tekton v0.54.0.
Same issue. In my case failed task had no image digest pushed in the result, because the build failed. Pipelinerun finished on the build-buildpack task.
buildpack-pipeline-build-buildpack-pod   0/3     Init:0/3            0          2s
buildpack-pipeline-build-buildpack-pod   0/3     Init:1/3            0          3s
buildpack-pipeline-build-buildpack-pod   0/3     Init:2/3            0          4s
buildpack-pipeline-build-buildpack-pod   0/3     PodInitializing     0          5s
buildpack-pipeline-build-buildpack-pod   3/3     Running             0          6s
buildpack-pipeline-build-buildpack-pod   3/3     Running             0          6s
buildpack-pipeline-build-buildpack-pod   2/3     NotReady            0          8s
buildpack-pipeline-build-buildpack-pod   0/3     Error               0          46s
affinity-assistant-a5f6edee78-0          1/1     Terminating         0          65s
affinity-assistant-a5f6edee78-0          0/1     Terminating         0          66s
affinity-assistant-a5f6edee78-0          0/1     Terminating         0          66s
affinity-assistant-a5f6edee78-0          0/1     Terminating         0          66s
affinity-assistant-a5f6edee78-0          0/1     Terminating         0          66s
buildpack-pipeline-build-buildpack-pod   0/3     Error               0          47s
buildpack-pipeline-build-buildpack-pod   0/3     Error               0          48s
output of the build-buildpack task:
[build-buildpack : build] Adding label 'org.opencontainers.image.source'
[build-buildpack : build] Adding label 'org.opencontainers.image.vendor'
[build-buildpack : build] Adding label 'org.opencontainers.image.version'
[build-buildpack : build] Setting default process type 'web'
[build-buildpack : build] Saving 11111111.dkr.ecr.us-east-1.amazonaws.com/project/prod/backend:fca18e...
[build-buildpack : build] *** Images (sha256:3a8aac28491b40f6709be20995013ec4dd2647643ec51d7116b54424326f4d01):
[build-buildpack : build]       11111111.dkr.ecr.us-east-1.amazonaws.com/project/prod/backend:fca18e - PUT https://11111111.dkr.ecr.us-east-1.amazonaws.com/v2/project/prod/backend/manifests/fca18e: TAG_INVALID: The image tag 'fca18e' already exists in the 'project/prod/backend' repository and cannot be overwritten because the repository is immutable.
[build-buildpack : build] ERROR: failed to export: failed to write image to the following tags: [11111111.dkr.ecr.us-east-1.amazonaws.com/project/prod/backend:fca18e: PUT https://11111111.dkr.ecr.us-east-1.amazonaws.com/v2/project/prod/backend/manifests/fca18e: TAG_INVALID: The image tag 'fca18e' already exists in the 'project/prod/backend' repository and cannot be overwritten because the repository is immutable.]
[build-buildpack : results] 2023/12/29 01:29:14 Skipping step because a previous step failed
the final task is not executed
  finally:
    # ┌─────────────────────────────────────────────────────────────────────
    # │ ⚫ Final Notify                                                     
    # └─────────────────────────────────────────────────────────────────────
    - name: notify
      displayName: "Notification from $(context.pipeline.name)"
      when:
        - input: $(params.workflow.notify)
          operator: in
          values: ['true']
      taskRef:
        name: notify
      workspaces:
        - name: source
          workspace: source
      params:
        - name:  working_directory
          value: $(params.git.checkout_directory)
        - name:  environment
          value: $(params.environment)
        - name:  application
          value:
            project:           $(params.application.project)
            component:         $(params.application.component)
            url:               $(params.application.url)
            argocd_app:        $(params.application.argocd_app)
            argocd_url:        $(params.application.argocd_url)
            tekton_url:        $(params.application.tekton_url)
            jira_url:          $(params.application.jira_url)
            jira_prefix:       $(params.application.jira_prefix)
            grafana_url:       $(params.application.grafana_url)
            karma_url:         $(params.application.karma_url)
            alertmanager_url:  $(params.application.alertmanager_url)
            sentry_url:        $(params.application.sentry_url)
            documentation_url: $(params.application.documentation_url)
            devops_team:       $(params.application.devops_team)
            pm_team:           $(params.application.pm_team)
            tm_team:           $(params.application.tm_team)
            lead_developers:   $(params.application.lead_developers)
        - name:  git
          value:
            repository_url:      $(params.git.repository_url)
            checkout_branch:     $(params.git.checkout_branch)
            checkout_revision:   $(params.git.checkout_revision)
            commit_author:       $(params.git.commit_author)
            commit_author_url:   $(params.git.commit_author_url)
            commit_message:      $(params.git.commit_message)
        - name:  status
          value: $(tasks.status)
        - name:  pipelinerun
          value:
            name:      $(context.pipelineRun.name)
            namespace: $(context.pipelineRun.namespace)
            uid:       $(context.pipelineRun.uid)
        - name: image_digest
          value: $(tasks.build-$(params.build.use).results.app_image_digest)
Thanks! Just come back from holidays, will work on this issue
@Yongxuanzhang any updates?
@Yongxuanzhang any updates?
Sorry I'm kinda busy recently, 😢 , don't have enough time to come up with a solution yet.
Is there any chance that anybody would work on this?
@Yongxuanzhang If you are not working, shall I assign this issue to myself?
@Yongxuanzhang is on leave for now so please go ahead @divyansh42. I don't think he will mind 😄
Does anybody plan to work on this?
/assign I will work on this