Top Related Projects
Workflow Engine for Kubernetes
Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Cloud Native pipelines from Tekton
Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.
Successor: https://github.com/fluxcd/flux2
Concourse is a container-based continuous thing-doer written in Go.
Gitness is an Open Source developer platform with Source Control management, Continuous Integration and Continuous Delivery.
Quick Overview
Tekton Pipelines is an open-source framework for creating CI/CD systems. It provides a set of Kubernetes custom resources for declaring CI/CD-style pipelines, allowing developers to build, test, and deploy across cloud providers and on-premise systems.
Pros
- Cloud-native and Kubernetes-native, leveraging existing Kubernetes concepts
- Highly extensible and customizable through custom tasks and resources
- Vendor-neutral, avoiding lock-in to specific cloud providers or tools
- Supports both declarative and imperative pipeline definitions
Cons
- Steep learning curve for those unfamiliar with Kubernetes
- Limited built-in integrations compared to some established CI/CD tools
- Requires additional setup for features like secrets management and notifications
- Documentation can be fragmented or outdated due to rapid development
Code Examples
- Defining a simple Task:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello-world
spec:
steps:
- name: echo
image: alpine
command:
- echo
args:
- "Hello, World!"
- Creating a Pipeline that uses the Task:
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: hello-pipeline
spec:
tasks:
- name: hello-task
taskRef:
name: hello-world
- Running the Pipeline with a PipelineRun:
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: hello-pipeline-run
spec:
pipelineRef:
name: hello-pipeline
Getting Started
To get started with Tekton Pipelines:
-
Install Tekton Pipelines on your Kubernetes cluster:
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
-
Install the Tekton CLI:
# For macOS: brew install tektoncd-cli # For Linux: sudo apt update && sudo apt install -y tektoncd-cli
-
Create and apply your first Task and Pipeline YAML files (as shown in the code examples).
-
Run your pipeline:
tkn pipeline start hello-pipeline --showlog
For more detailed instructions and advanced usage, refer to the official Tekton documentation.
Competitor Comparisons
Workflow Engine for Kubernetes
Pros of Argo Workflows
- More mature and feature-rich, with a larger ecosystem of tools and integrations
- Supports complex workflow patterns like DAGs, loops, and conditionals out-of-the-box
- Provides a user-friendly UI for workflow management and visualization
Cons of Argo Workflows
- Can be more resource-intensive, especially for large-scale deployments
- Steeper learning curve due to its extensive feature set
- Less native integration with Kubernetes resources compared to Tekton
Code Comparison
Argo Workflows example:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: hello-world
spec:
entrypoint: whalesay
templates:
- name: whalesay
container:
image: docker/whalesay
command: [cowsay]
args: ["hello world"]
Tekton Pipeline example:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello-world
spec:
steps:
- name: echo
image: alpine
command:
- echo
- "Hello World"
Both Argo Workflows and Tekton Pipelines are powerful CI/CD tools, but they have different strengths. Argo Workflows excels in complex workflow orchestration, while Tekton Pipelines focuses on Kubernetes-native CI/CD pipelines with modular, reusable components.
Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Cloud Native pipelines from Tekton
Pros of jx
- Provides a complete CI/CD solution out-of-the-box
- Includes built-in GitOps workflows and environment promotion
- Offers a CLI tool for easier interaction and management
Cons of jx
- Steeper learning curve due to its comprehensive nature
- Less flexibility for customization compared to pipeline
- Tighter coupling with Kubernetes and cloud platforms
Code Comparison
jx:
pipeline:
agent:
image: golang:1.16
stages:
- name: Build
steps:
- sh: make build
- name: Test
steps:
- sh: make test
pipeline:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: build-and-test
spec:
steps:
- name: build
image: golang:1.16
script: |
make build
- name: test
image: golang:1.16
script: |
make test
The jx pipeline configuration is more concise and uses a simpler syntax, while the pipeline Task definition is more verbose but offers greater flexibility in defining individual steps and their properties.
Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.
Pros of Spinnaker
- More comprehensive and feature-rich, offering a complete CI/CD platform
- Provides a user-friendly UI for pipeline management and visualization
- Supports multi-cloud deployments and advanced deployment strategies
Cons of Spinnaker
- Steeper learning curve and more complex setup process
- Requires more resources to run and maintain
- Less flexible for custom pipeline definitions compared to Tekton
Code Comparison
Spinnaker pipeline definition (JSON):
{
"name": "My Pipeline",
"stages": [
{
"type": "wait",
"name": "Wait",
"waitTime": 30
}
]
}
Tekton pipeline definition (YAML):
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: my-pipeline
spec:
tasks:
- name: wait-task
taskRef:
name: wait-task
Both Spinnaker and Tekton provide powerful CI/CD capabilities, but they differ in their approach and target use cases. Spinnaker offers a more comprehensive solution with a focus on multi-cloud deployments and advanced deployment strategies. Tekton, on the other hand, provides a more flexible and lightweight approach to building custom CI/CD pipelines, especially within Kubernetes environments.
Successor: https://github.com/fluxcd/flux2
Pros of Flux
- Designed specifically for GitOps workflows, providing seamless integration with Git repositories
- Supports multi-tenancy and hierarchical structure for managing multiple clusters and environments
- Offers built-in support for Helm charts and Kustomize, simplifying deployment of complex applications
Cons of Flux
- Less flexible for general-purpose CI/CD tasks compared to Tekton's modular approach
- Steeper learning curve for users not familiar with GitOps principles
- Limited support for complex, multi-step pipelines that may be required in some CI/CD scenarios
Code Comparison
Flux manifest example:
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
name: podinfo
namespace: flux-system
spec:
interval: 30s
url: https://github.com/stefanprodan/podinfo
ref:
branch: master
Tekton pipeline example:
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: build-and-deploy
spec:
tasks:
- name: build
taskRef:
name: build-task
- name: deploy
taskRef:
name: deploy-task
Concourse is a container-based continuous thing-doer written in Go.
Pros of Concourse
- Mature and battle-tested CI/CD system with a large user base
- Provides a visual interface for pipeline management and monitoring
- Supports complex workflows with built-in resource types
Cons of Concourse
- Steeper learning curve due to its unique concepts and terminology
- Less flexible for ad-hoc tasks compared to Tekton's modular approach
- Requires more infrastructure setup and maintenance
Code Comparison
Concourse pipeline definition:
jobs:
- name: hello-world
plan:
- task: say-hello
config:
platform: linux
image_resource:
type: docker-image
source: {repository: ubuntu}
run:
path: echo
args: ["Hello, World!"]
Tekton pipeline definition:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello-world
spec:
steps:
- name: say-hello
image: ubuntu
command:
- echo
- "Hello, World!"
Both Concourse and Tekton use YAML for pipeline definitions, but Tekton's structure is more Kubernetes-native. Concourse uses its own domain-specific language, while Tekton leverages Kubernetes resources and concepts. Tekton's approach allows for more granular control and reusability of pipeline components, making it easier to create complex workflows from smaller, modular pieces.
Gitness is an Open Source developer platform with Source Control management, Continuous Integration and Continuous Delivery.
Pros of Gitness
- More user-friendly interface for Git operations and CI/CD workflows
- Integrated project management features like issue tracking and pull requests
- Designed for both on-premises and cloud deployments
Cons of Gitness
- Less mature and battle-tested compared to Tekton Pipelines
- Smaller community and ecosystem of plugins/extensions
- May have a steeper learning curve for teams already familiar with Tekton
Code Comparison
Gitness pipeline configuration:
pipeline:
- step:
name: Build
image: node:14
commands:
- npm install
- npm run build
Tekton pipeline configuration:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: build
spec:
steps:
- name: build
image: node:14
script: |
npm install
npm run build
Key Differences
- Gitness uses a simpler YAML structure for pipeline definitions
- Tekton Pipelines offers more granular control over task execution
- Gitness integrates Git operations more tightly with CI/CD workflows
- Tekton Pipelines is more focused on Kubernetes-native CI/CD
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Tekton Pipelines
The Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style pipelines.
Tekton Pipelines are Cloud Native:
- Run on Kubernetes
- Have Kubernetes clusters as a first class type
- Use containers as their building blocks
Tekton Pipelines are Decoupled:
- One Pipeline can be used to deploy to any k8s cluster
- The Tasks which make up a Pipeline can easily be run in isolation
- Resources such as git repos can easily be swapped between runs
Tekton Pipelines are Typed:
- The concept of typed resources means that for a resource such as an
Image
, implementations can easily be swapped out (e.g. building with kaniko v.s. buildkit)
Want to start using Pipelines
- Installing Tekton Pipelines
- Jump in with the "Getting started" tutorial!
- Take a look at our roadmap
- Discover our releases
Required Kubernetes Version
- Starting from the v0.24.x release of Tekton: Kubernetes version 1.18 or later
- Starting from the v0.27.x release of Tekton: Kubernetes version 1.19 or later
- Starting from the v0.30.x release of Tekton: Kubernetes version 1.20 or later
- Starting from the v0.33.x release of Tekton: Kubernetes version 1.21 or later
- Starting from the v0.39.x release of Tekton: Kubernetes version 1.22 or later
- Starting from the v0.41.x release of Tekton: Kubernetes version 1.23 or later
- Starting from the v0.45.x release of Tekton: Kubernetes version 1.24 or later
- Starting from the v0.51.x release of Tekton: Kubernetes version 1.25 or later
- Starting from the v0.59.x release of Tekton: Kubernetes version 1.27 or later
- Starting from the v0.61.x release of Tekton: Kubernetes version 1.28 or later
Read the docs
The latest version of our docs is available at:
Version specific links are available in the releases page and on the Tekton website.
See our API compatibility policy for info on the stability level of the API.
See our Deprecations table for features that have been deprecated and the earliest date they'll be removed.
Migrating
v1beta1 to v1
Several Tekton CRDs and API spec fields, including ClusterTask CRD and Pipeline
Resources fields, were updated or deprecated during the migration from v1beta1
to v1
.
For users migrating their Tasks and Pipelines from v1beta1
to v1
, check
out the v1beta1 to v1 migration guide.
v1alpha1 to v1beta1
In the move from v1alpha1 to v1beta1 several spec fields and Tekton CRDs were updated or removed .
For users migrating their Tasks and Pipelines from v1alpha1 to v1beta1, check out the spec changes and migration paths.
Want to contribute
We are so excited to have you!
- See CONTRIBUTING.md for an overview of our processes
- See DEVELOPMENT.md for how to get started
- Deep dive into demystifying the inner workings (advanced reading material)
- Look at our good first issues and our help wanted issues
Top Related Projects
Workflow Engine for Kubernetes
Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Cloud Native pipelines from Tekton
Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.
Successor: https://github.com/fluxcd/flux2
Concourse is a container-based continuous thing-doer written in Go.
Gitness is an Open Source developer platform with Source Control management, Continuous Integration and Continuous Delivery.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot