Tekton Pipeline: Difference between revisions
(13 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
* https://github.com/tektoncd/pipeline/blob/main/docs/README.md | * https://github.com/tektoncd/pipeline/blob/main/docs/README.md | ||
* https://github.com/tektoncd/pipeline/blob/main/docs/pipelines.md | * https://github.com/tektoncd/pipeline/blob/main/docs/pipelines.md | ||
=Internal= | =Internal= | ||
* [[Tekton_Concepts#Pipeline|Tekton Concepts]] | * [[Tekton_Concepts#Pipeline|Tekton Concepts]] | ||
Line 58: | Line 59: | ||
name: <font color=indigo><''pipeline-name''></font> <font color=teal> # required field</font> | name: <font color=indigo><''pipeline-name''></font> <font color=teal> # required field</font> | ||
spec: <font color=teal> # required field</font> | spec: <font color=teal> # required field</font> | ||
description: <font color=indigo>''some description''</font> | |||
<span id='_workspaces'></span>[[Tekton_Workspaces#Pipeline_Workspaces|workspaces]]: | <span id='_workspaces'></span>[[Tekton_Workspaces#Pipeline_Workspaces|workspaces]]: | ||
- name: <font color=indigo>''<workspace-name>''</font> | - name: <font color=indigo>''<workspace-name>''</font> | ||
Line 77: | Line 79: | ||
name: <font color=indigo>''task2-ref-name''</font> | name: <font color=indigo>''task2-ref-name''</font> | ||
- ... | - ... | ||
<span id='_finally'></span>[[#Finally|finally]]: | |||
- name: <font color=indigo>''name''</font> | |||
taskRef: | |||
name: <font color=indigo>''task-ref-name''</font> | |||
</font> | </font> | ||
Line 90: | Line 96: | ||
<span id='pipeline_task_bundle'></span>[[Tekton_Bundle|bundle]]: <font color=indigo>docker.com/myrepo/mycatalog</font> | <span id='pipeline_task_bundle'></span>[[Tekton_Bundle|bundle]]: <font color=indigo>docker.com/myrepo/mycatalog</font> | ||
<span id='_retries'></span>[[#Retries|retries]]: 3 | <span id='_retries'></span>[[#Retries|retries]]: 3 | ||
<span id='_timeout'></span>[[#Task_Timeout|timeout]]: "0h1m30s" | |||
<span id='_runAfter'></span>[[#runAfter|runAfter]]: | <span id='_runAfter'></span>[[#runAfter|runAfter]]: | ||
- <font color=indigo>''some-task-name''</font> | - <font color=indigo>''some-task-name''</font> | ||
Line 113: | Line 120: | ||
</font> | </font> | ||
==Execution Order== | ==Execution Order== | ||
<font color=darkkhaki>To clarify. Is the order in which the tasks have been declared?</font> | <font color=darkkhaki> | ||
To clarify. Is the order in which the tasks have been declared? | |||
TO PROCESS: https://tekton.dev/docs/pipelines/pipelines/#configuring-the-task-execution-order | |||
</font> | |||
===<tt>runAfter</tt>=== | ===<tt>runAfter</tt>=== | ||
{{External|https://tekton.dev/docs/pipelines/pipelines/#using-the-runafter-field}} | {{External|https://tekton.dev/docs/pipelines/pipelines/#using-the-runafter-field}} | ||
Use <code>runAfter</code> field to indicate that the task it shows up on must run after the tasks declared in the <code>runAfter</code> list. This order is enforced regardless of the order in which the tasks are specified in the pipeline definition. | Use <code>runAfter</code> field to indicate that the task it shows up on must run after the tasks declared in the <code>runAfter</code> list. This order is enforced regardless of the order in which the tasks are specified in the pipeline definition. | ||
==Retries== | ==Retries== | ||
Line 123: | Line 135: | ||
https://tekton.dev/docs/pipelines/pipelines/#using-the-retries-field | https://tekton.dev/docs/pipelines/pipelines/#using-the-retries-field | ||
==Conditional Execution== | ==Conditional Execution with <tt>when</tt>== | ||
https://tekton.dev/docs/pipelines/pipelines/#guard-task-execution-using-when-expressions | <font color=darkkhaki> | ||
TO PROCESS: | |||
* https://tekton.dev/docs/pipelines/pipelines/#guard-task-execution-using-when-expressions | |||
* https://tekton.dev/docs/pipelines/pipelines/#guarding-a-task-and-its-dependent-tasks | |||
* https://tekton.dev/docs/pipelines/pipelines/#guarding-a-task-only | |||
* [[Tekton_Concepts#Conditions|Conditions]] are deprecated. | |||
</font> | |||
==Task Timeout== | |||
<code>[[#_timeout|timeout]]</code> | |||
<font color=darkkhaki> | |||
TO PROCESS: | |||
* https://tekton.dev/docs/pipelines/pipelines/#configuring-the-failure-timeout | |||
</font> | |||
==Resources== | ==Resources== | ||
<font color=darkkhaki>TO PROCESS: https://tekton.dev/docs/pipelines/pipelines/#specifying-resources-in-pipelinetasks</font> | <font color=darkkhaki>TO PROCESS: https://tekton.dev/docs/pipelines/pipelines/#specifying-resources-in-pipelinetasks</font> | ||
=Finally= | |||
One or more tasks specified under the <code>[[#_finally|finally]]</code> section are guaranteed to be executed in parallel after all pipeline tasks have completed, regardless of success or failure. | |||
<font color=darkkhaki>https://tekton.dev/docs/pipelines/pipelines/#adding-finally-to-the-pipeline</font> |
Latest revision as of 04:16, 29 April 2022
External
- https://tekton.dev/docs/pipelines/pipelines/
- https://github.com/tektoncd/pipeline/blob/main/docs/README.md
- https://github.com/tektoncd/pipeline/blob/main/docs/pipelines.md
Internal
Overview
A pipeline defines a series of ordered tasks. Just like steps, a task in a pipeline can use as input the output of a previously executed task. Tekton collects all the tasks, and based on the dependency relationships declared in definition of the pipeline, it orders the tasks in a DAG, and executes the graph in sequence. That results in the materialization of a number of task pods. The pipeline comes up with additional features, such as the capability to fan-out task execution, retry task execution or verify conditions that tasks must meet before proceeding. The pipeline is implemented as a Kubernetes custom resource.
Example
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: task1
spec:
steps:
- name: echo
image: alpine
script: |
#!/bin/sh
echo "this is Task 1 output"
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: task2
spec:
steps:
- name: echo
image: alpine
script: |
#!/bin/sh
echo "this is Task 2 output"
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: simple-pipeline
spec:
tasks:
- name: task1
taskRef:
name: task1
- name: task2
runAfter:
- task1
taskRef:
name: task2
Manifest
apiVersion: tekton.dev/v1beta1 # required field kind: Pipeline # required field metadata: # required field name: <pipeline-name> # required field spec: # required field description: some description workspaces: - name: <workspace-name> params: - name: <some-string-param-name> type: string description: some description default: <some-default-value> - name: <some-array-param-name> type: array description: some description resources: tasks: # required field - name: task1-name taskRef: name: task1-ref-name - name: task2-name taskRef: name: task2-ref-name - ... finally: - name: name taskRef: name: task-ref-name
Tasks in Pipeline
The pipeline specification contains a mandatory list of tasks
. The list specifies the tasks of this pipeline and the details of their execution. The pipeline definition must reference at least one task. Each task must be specified via a valid Kubernetes name and a taskRef
.
kind: Pipeline spec: tasks: - name: task-name taskRef: name: task-ref-name bundle: docker.com/myrepo/mycatalog retries: 3 timeout: "0h1m30s" runAfter: - some-task-name - some-other-task-name params: - name: param-name value: param-value matrix: - name: matrix-name value: - value1 - value2 workspaces: - name: <name> workspace: <workspace> resources: inputs: - name: input-resource-name resource: input-resource outputs: - name: output-resource-name resource: output-resource
Execution Order
To clarify. Is the order in which the tasks have been declared?
TO PROCESS: https://tekton.dev/docs/pipelines/pipelines/#configuring-the-task-execution-order
runAfter
Use runAfter
field to indicate that the task it shows up on must run after the tasks declared in the runAfter
list. This order is enforced regardless of the order in which the tasks are specified in the pipeline definition.
Retries
A task execution can be retired a number of times if the if fails. The number of retires is specified using the retries
field in the task declaration in the pipeline.
https://tekton.dev/docs/pipelines/pipelines/#using-the-retries-field
Conditional Execution with when
TO PROCESS:
- https://tekton.dev/docs/pipelines/pipelines/#guard-task-execution-using-when-expressions
- https://tekton.dev/docs/pipelines/pipelines/#guarding-a-task-and-its-dependent-tasks
- https://tekton.dev/docs/pipelines/pipelines/#guarding-a-task-only
- Conditions are deprecated.
Task Timeout
TO PROCESS:
Resources
TO PROCESS: https://tekton.dev/docs/pipelines/pipelines/#specifying-resources-in-pipelinetasks
Finally
One or more tasks specified under the finally
section are guaranteed to be executed in parallel after all pipeline tasks have completed, regardless of success or failure.
https://tekton.dev/docs/pipelines/pipelines/#adding-finally-to-the-pipeline