Skip to content

What is a Custom Task? #6457

@jerop

Description

@jerop

Today, a spec is considered a Custom Task when APIVersion and Kind are non-empty.

If a user sets apiVersion to "tekton.dev/v1beta1" and kind to "Task", a CustomRun will be created instead of a TaskRun.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: hello-world
spec:
  steps:
    - name: echo
      image: ubuntu
      command:
        - echo
      args:
        - "hello world"
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: pr-
spec:
  pipelineSpec:
    tasks:
      - name: greeting
        taskRef:
          apiVersion: tekton.dev/v1beta1
          kind: Task
          name: hello-world
---
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: pr-jphlt
spec:
  pipelineSpec:
    tasks:
    - name: greeting
      taskRef:
        apiVersion: tekton.dev/v1beta1
        kind: Task
        name: hello-world
status:
  childReferences:
  - apiVersion: tekton.dev/v1beta1
    kind: CustomRun
    name: pr-jphlt-greeting
    pipelineTaskName: greeting
  conditions:
  - lastTransitionTime: "2023-03-29T15:35:22Z"
    message: 'Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0'
    reason: Running
    status: Unknown
    type: Succeeded
  pipelineSpec:
    tasks:
    - name: greeting
      taskRef:
        apiVersion: tekton.dev/v1beta1
        kind: Task
        name: hello-world
---
apiVersion: tekton.dev/v1beta1
kind: CustomRun
metadata:
  name: pr-jphlt-greeting
  ownerReferences:
  - apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    name: pr-jphlt
spec:
  customRef:
    apiVersion: tekton.dev/v1beta1
    kind: Task
    name: hello-world

If a user sets apiVersion to "tekton.dev/v1beta1" and kind to "Pipeline", a CustomRun will be created instead of a PipelineRun. This behavior has been been useful for Pipelines in Pipelines Custom Task.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: hello-world
spec:
  steps:
    - name: echo
      image: ubuntu
      command:
        - echo
      args:
        - "hello world"
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: pr-
spec:
  pipelineSpec:
    tasks:
      - name: greeting
        taskRef:
          apiVersion: tekton.dev/v1beta1
          kind: Pipeline
          name: hello-world
---
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: pr-xfb2f
spec:
  pipelineSpec:
    tasks:
    - name: greeting
      taskRef:
        apiVersion: tekton.dev/v1beta1
        kind: Pipeline
        name: hello-world
status:
  childReferences:
  - apiVersion: tekton.dev/v1beta1
    kind: CustomRun
    name: pr-xfb2f-greeting
    pipelineTaskName: greeting
  conditions:
  - lastTransitionTime: "2023-03-29T15:43:29Z"
    message: 'Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0'
    reason: Running
    status: Unknown
    type: Succeeded
  pipelineSpec:
    tasks:
    - name: greeting
      taskRef:
        apiVersion: tekton.dev/v1beta1
        kind: Pipeline
        name: hello-world
---
apiVersion: tekton.dev/v1beta1
kind: CustomRun
metadata:
  name: pr-xfb2f-greeting
  ownerReferences:
  - apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    name: pr-xfb2f
spec:
  customRef:
    apiVersion: tekton.dev/v1beta1
    kind: Pipeline
    name: hello-world

This behavior was initially surprising to me when refactoring isCustomTask in #6447, but it made sense after looking into it more. Was wondering if it may be surprising to users, especially given that @lbernick also raised similar questions during review of #6447. Opened this issue to make this behavior known so that we can discuss whether we're okay with this or we want to make some changes.

cc @tektoncd/core-maintainers

Metadata

Metadata

Assignees

No one assigned

    Labels

    lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions