Create a new Tekton Task or add a new version of an existing task in tektoncd/catalog. Use when the user wants to scaffold a new task, bump a task version, or add a task that already exists elsewhere into the catalog. Covers TEP-0003 directory structure, mandatory metadata, README, OWNERS, tests, and the copy-then-modify versioning workflow.
Create a new Tekton Task or add a new version of an existing task in tektoncd/catalog. Use when the user wants to scaffold a new task, bump a task version, or add a task that already exists elsewhere into the catalog. Covers TEP-0003 directory structure, mandatory metadata, README, OWNERS, tests, and the copy-then-modify versioning workflow.
apiVersion:tekton.dev/v1beta1kind:Taskmetadata:name:<task-name>labels:app.kubernetes.io/version:"0.1"annotations:tekton.dev/pipelines.minVersion:"0.17.0"tekton.dev/categories:<category>tekton.dev/tags:<tag1>,<tag2>tekton.dev/displayName:"<Human Readable Name>"tekton.dev/platforms:"linux/amd64"spec:description:>-
One-line summary of what this task does.
Detailedparagraph(s)explainingthetask,itsinputs,outputs,andanyprerequisites.params:-name:PARAM_NAMEtype:stringdescription:Whatthisparametercontrolsdefault:"sensible-default"workspaces:-name:sourcedescription:Workspacecontainingthesourcecode.results:-name:result-namedescription:Whatthisresultcontains.steps:-name:step-nameimage:<image>@sha256:<digest>env:-name:PARAM_NAMEvalue:$(params.PARAM_NAME)script:|
#!/usr/bin/env bash
set -e
echo "$PARAM_NAME"
Mandatory checklist
metadata.name matches the file name and directory name
app.kubernetes.io/version label matches directory version ("0.1")
tekton.dev/pipelines.minVersion — lowest Tekton Pipelines version needed
tekton.dev/categories — one of: Git, Build Tools, CLI, Cloud, Deploy,
Security, Testing, Monitoring, Messaging, Automation, etc.
Follow this structure (see task/maven/0.3/README.md as example):
# <TaskName>
One-line description of what this task does.
## Install the Task
kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/main/task/<task-name>/0.1/<task-name>.yaml
## Parameters-**PARAM_NAME**: Description (_default_: `value`)
## Workspaces
- **source**: Description of what goes in this workspace
## Results
- **result-name**: Description
## Platforms
The Task can be run on `linux/amd64` platforms.
## Usage
(Include a TaskRun example)
4. Create the OWNERS file
File: task/<task-name>/OWNERS (at the task level, not version level)
#!/bin/bash# Runs before the TaskRun is applied# Example: create a PVC, Secret, or ConfigMap
kubectl create -f task/<task-name>/0.1/tests/resources.yaml
Fixtures for external API tasks
If your task calls an external REST API, create fixture rules in
task/<task-name>/0.1/tests/fixtures/:
Then override the API URL parameter in your TaskRun to point to
http://localhost:8080 — the test runner spins up a go-rest-api-test
sidecar automatically when it finds a fixtures/ directory.