Tekton Pipelines v1.9.0 LTS: Continued Innovation and Stability

Announcing Tekton Pipeline v1.9.0 LTS with a summary of all the improvements since v1.0.0.

We’re excited to announce the release of Tekton Pipelines v1.9.0, our latest Long-Term Support (LTS) release! Since the milestone v1.0.0 release in May 2025, the project has continued to evolve with significant new features, performance improvements, and stability enhancements. This post summarizes the journey from v1.0.0 to v1.9.0, organized by LTS milestones.

Installation

kubectl apply -f https://infra.tekton.dev/releases/pipeline/previous/v1.9.0/release.yaml

v1.0.0 → v1.3.0 LTS (May - August 2025)

The first LTS after v1.0.0 focused on controller resilience and performance.

Features

  • Exponential backoff retry - Improved handling of transient webhook issues during Pod, TaskRun, and CustomRun creation. Configurable via the wait-exponential-backoff ConfigMap. Documentation

  • Controller HA improvements - Anti-affinity rules ensure controller replicas are scheduled on different nodes for better availability

  • PodTemplate param substitution - Enables multi-arch builds with Matrix by allowing param substitution in TaskRunSpecs’ PodTemplate. This lets you target nodes with specific architectures. Documentation

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: multi-arch-build
    spec:
      pipelineSpec:
        tasks:
        - name: build
          matrix:
            params:
            - name: arch
              value: ["amd64", "arm64"]
          taskSpec:
            steps:
            - name: build
              image: golang:1.21
              script: |
                echo "Building for $(params.arch)"
                GOARCH=$(params.arch) go build -o app-$(params.arch) .            
          # PodTemplate with param substitution to schedule on correct architecture
          podTemplate:
            nodeSelector:
              kubernetes.io/arch: $(params.arch)
    
  • Configurable threading - THREADS_PER_CONTROLLER environment variable for tuning controller performance based on cluster size

  • OOM detection - TaskRuns that fail due to Out-Of-Memory (OOM) conditions now clearly show the termination reason in status

Fixes

  • Retryable validation errors no longer fail PipelineRuns
  • PVC cleanup improvements - already-deleted PVCs no longer cause errors
  • Fixed managed-by annotation propagation to Pods

Breaking Changes

  • Deprecated metrics removed - Use pipelinerun_total instead of pipelinerun_count, taskrun_total instead of taskrun_count, etc.
  • linux/arm images dropped - armv5, armv6, armv7 are no longer supported

v1.3.0 LTS → v1.6.0 LTS (August - October 2025)

The second LTS brought major new features for remote resolution and pipeline composition.

Features

  • Resolvers caching - Automatic caching for bundle, git, and cluster resolvers. Three modes available: always, never, and auto (default, caches only immutable references). Configurable cache size and TTL via ConfigMap.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: resolvers-feature-flags
      namespace: tekton-pipelines-resolvers
    data:
      enable-bundles-resolver-caching: "true"
      bundles-resolver-cache-ttl: "1h"
      bundles-resolver-cache-size: "100"
    
  • Pipelines-in-Pipelines (TEP-0056) - Reference existing Pipelines as tasks within another Pipeline, enabling powerful composition and reuse patterns. Documentation

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: integration-pipeline
    spec:
      tasks:
      - name: run-unit-tests
        taskRef:
          name: unit-test-pipeline
          kind: Pipeline
      - name: run-e2e-tests
        taskRef:
          name: e2e-test-pipeline
          kind: Pipeline
        runAfter:
        - run-unit-tests
    
  • managedBy field - Delegate PipelineRun/TaskRun lifecycle control to external controllers for custom orchestration scenarios. Documentation

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: externally-managed
    spec:
      managedBy: custom-orchestrator
      pipelineRef:
        name: my-pipeline
    
  • Concurrent StepActions resolution - Significantly faster TaskRun startup when using multiple remote StepActions

  • Task timeout overrides - Override individual task timeouts via spec.taskRunSpecs[].timeout. Documentation

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: custom-timeouts
    spec:
      pipelineRef:
        name: my-pipeline
      taskRunSpecs:
      - pipelineTaskName: slow-task
        timeout: 2h
    
  • Quota-aware PVC handling - PipelineRuns wait for quota availability instead of failing immediately

  • Array values in When expressions - More flexible conditional execution. Documentation

  • Step displayName - Human-readable names for steps for better observability

  • ARM64 tested releases - E2E tests now run on ARM64 architecture

Fixes

  • Fixed signal handling in SidecarLog for Kubernetes-native sidecar functionality
  • Pods for timed-out TaskRuns are now retained when keep-pod-on-cancel is enabled
  • Correct step status ordering when using StepActions

v1.6.0 LTS → v1.9.0 LTS (October 2025 - January 2026)

The latest LTS focuses on stability, observability, and pod configuration.

Features

  • hostUsers field in PodTemplate - Control user namespace isolation for Task pods. Documentation

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: secure-task
    spec:
      podTemplate:
        hostUsers: false
      taskSpec:
        steps:
        - name: run
          image: alpine
          script: echo "Running with user namespace isolation"
    
  • Digest validation for HTTP resolver - Ensure integrity of remotely fetched resources by validating SHA256 digests

  • ServiceAccount inheritance for Affinity Assistants - Better workspace management with proper credentials

  • Improved error messages - Actual result size now included when exceeding maxResultSize for easier troubleshooting

Fixes

  • Major performance fix - Resolved issues causing massive invalid status updates that impacted API server load and stability
  • Parameter resolution - Fixed defaults with object references
  • Timeout handling - Prevented excessive reconciliation when timeout is disabled
  • Pod configuration errors - Early detection instead of waiting for timeout
  • Race conditions - Fixed TaskRun status issues during timeout handling
  • Sidecar stopping - Fixed 409 conflict errors by using Patch instead of Update
  • Matrix validation - Prevented panics from invalid result references (v1beta1)

LTS Support Policy

With v1.9.0 being an LTS release, it will receive security and critical bug fixes for an extended period. Users upgrading from previous LTS versions can expect a smooth transition:

From To Key Considerations
v1.0.0 v1.3.0 LTS Update metric dashboards for renamed metrics
v1.3.0 LTS v1.6.0 LTS Smooth upgrade, new features opt-in
v1.6.0 LTS v1.9.0 LTS Smooth upgrade, stability improvements

Read more about LTS releases and our support policy.

Looking Ahead

The Tekton Pipelines project continues to focus on:

  • Performance - Reducing reconciliation overhead and improving startup times
  • User experience - Better error messages, observability, and debugging tools
  • Resolver improvements - Working towards v2 resolvers with enhanced caching and usability
  • Kueue integration (TEP-0164) - Native support for Kueue job queueing to enable better resource management and fair-sharing in multi-tenant environments

We’re also making progress on our transition to the Cloud Native Computing Foundation (CNCF), which will provide Tekton with a neutral home and access to a broader ecosystem.

Get Involved

We invite you to try v1.9.0 LTS, provide feedback, and contribute to the project:

Thank you to all the contributors who made these releases possible!