tektoncd/pipeline

`taskrunCancelled` sets the `startedAt` and `finishedAt` times for steps that were not executed

开放

#8,479 创建于 2025年1月10日

 (3 条评论) (0 个反应) (1 位负责人)Go (1,943 个派生)auto 404
area/apigood first issuehelp wantedkind/bug

仓库指标

星标
 (9,013 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

Expected Behavior

When a taskRun is cancelled due to a timeout, I expect the steps that were not executed to have no timings attached to them. It is misleading to set the same time for all steps, as steps are generally executed in sequence. Additionally, the startedAt time is set to the start time of the taskRun. Meaning, if a taskRun is canceled while executing the second step of a task, that step may have a startedAt time earlier than the first step, which is inaccurate.

Actual Behavior

Steps to Reproduce the Problem

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: task
spec:
  steps:
    - image: mirror.gcr.io/busybox
      name: step-1
      command: ['/bin/sh']
      args: ['-c', 'sleep 1']
    - image: mirror.gcr.io/busybox
      name: step-2
      command: ['/bin/sh']
      args: ['-c', 'sleep 10']
    - image: mirror.gcr.io/busybox
      name: step-3
      command: ['/bin/sh']
      args: ['-c', 'sleep 10']
    - image: mirror.gcr.io/busybox
      name: step-4
      command: ['/bin/sh']
      args: ['-c', 'sleep 10']
---

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: pipeline
spec:
  tasks:
    - name: foo
      taskRef:
        name: task
---

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: pipelinerun
spec:
  pipelineRef:
    name: pipeline
  timeouts:
    pipeline: 10s

Apply this pipelineRun:

k create -f pipelinerun-timeout.yaml

Analyze the taskRun:

 tkn taskrun describe pipelinerun-foo                    
Name:              pipelinerun-foo
Namespace:         default
Task Ref:          task
Service Account:   default
Timeout:           24h0m0s
Labels:
 app.kubernetes.io/managed-by=tekton-pipelines
 tekton.dev/memberOf=tasks
 tekton.dev/pipeline=pipeline
 tekton.dev/pipelineRun=pipelinerun
 tekton.dev/pipelineTask=foo
 tekton.dev/task=task
Annotations:
 pipeline.tekton.dev/release=e58ca13

🌡️  Status

STARTED          DURATION    STATUS
11 seconds ago   10s         Cancelled(TaskRunCancelled)

Message

TaskRun "pipelinerun-foo" was cancelled. TaskRun cancelled as the PipelineRun it belongs to has timed out.

🦶 Steps

 NAME       STATUS
 ∙ step-2   TaskRunCancelled
 ∙ step-3   TaskRunCancelled
 ∙ step-4   TaskRunCancelled
 ∙ step-1   Completed

Analyze the steps:

k get taskruns.tekton.dev pipelinerun-foo -o json | jq .status.steps
[
  {
    "container": "step-step-1",
    "imageID": "mirror.gcr.io/busybox@sha256:2919d0172f7524b2d8df9e50066a682669e6d170ac0f6a49676d54358fe970b5",
    "name": "step-1",
    "terminated": {
      "containerID": "containerd://0f9896d9080b86b7deb09dea2b2b73d3f5d5a8a57a5e76222df9b3dce911ff1b",
      "exitCode": 0,
      "finishedAt": "2025-01-10T20:07:18Z",
      "reason": "Completed",
      "startedAt": "2025-01-10T20:07:17Z"
    },
    "terminationReason": "Completed"
  },
  {
    "container": "step-step-2",
    "imageID": "mirror.gcr.io/busybox@sha256:2919d0172f7524b2d8df9e50066a682669e6d170ac0f6a49676d54358fe970b5",
    "name": "step-2",
    "terminated": {
      "exitCode": 1,
      "finishedAt": "2025-01-10T20:07:22Z",
      "message": "Step step-2 terminated as pod pipelinerun-foo-pod is terminated",
      "reason": "TaskRunCancelled",
      "startedAt": "2025-01-10T20:07:15Z"
    },
    "terminationReason": "TaskRunCancelled"
  },
  {
    "container": "step-step-3",
    "imageID": "mirror.gcr.io/busybox@sha256:2919d0172f7524b2d8df9e50066a682669e6d170ac0f6a49676d54358fe970b5",
    "name": "step-3",
    "terminated": {
      "exitCode": 1,
      "finishedAt": "2025-01-10T20:07:22Z",
      "message": "Step step-3 terminated as pod pipelinerun-foo-pod is terminated",
      "reason": "TaskRunCancelled",
      "startedAt": "2025-01-10T20:07:15Z"
    },
    "terminationReason": "TaskRunCancelled"
  },
  {
    "container": "step-step-4",
    "imageID": "mirror.gcr.io/busybox@sha256:2919d0172f7524b2d8df9e50066a682669e6d170ac0f6a49676d54358fe970b5",
    "name": "step-4",
    "terminated": {
      "exitCode": 1,
      "finishedAt": "2025-01-10T20:07:22Z",
      "message": "Step step-4 terminated as pod pipelinerun-foo-pod is terminated",
      "reason": "TaskRunCancelled",
      "startedAt": "2025-01-10T20:07:16Z"
    },
    "terminationReason": "TaskRunCancelled"
  }
]
Step startedAt finishedAt
step-1 2025-01-10T20:07:17Z 2025-01-10T20:07:18Z
step-2 2025-01-10T20:07:15Z 2025-01-10T20:07:22Z
step-3 2025-01-10T20:07:15Z 2025-01-10T20:07:22Z
step-4 2025-01-10T20:07:16Z 2025-01-10T20:07:22Z

Additional Info

  • Kubernetes version:

    Output of kubectl version:

 k version
Client Version: v1.31.0
Server Version: v1.29.11+IKS
  • Tekton Pipeline version:

    Output of tkn version or kubectl get pods -n tekton-pipelines -l app=tekton-pipelines-controller -o=jsonpath='{.items[0].metadata.labels.version}'

 tkn version                                                                                                                               
Client version: 0.32.0
Pipeline version: v0.62.1

贡献者指南