github tektoncd/pipeline v0.38.0
Tekton Pipeline release v0.38.0 "Ocicat Ava"

latest releases: v0.62.3, v0.63.0, v0.62.2...
2 years ago

-Docs @ v0.38.0
-Examples @ v0.38.0

Installation one-liner

kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.38.0/release.yaml

Attestation

The Rekor UUID for this release is 362f8ecba72f432699509b8cc1664c3bb7f29f406bf9d81e24049d1d33735511ef14ae9f533a4885

Obtain the attestation:

REKOR_UUID=362f8ecba72f432699509b8cc1664c3bb7f29f406bf9d81e24049d1d33735511ef14ae9f533a4885
rekor-cli get --uuid $REKOR_UUID --format json | jq -r .Attestation | jq .

Verify that all container images in the attestation are in the release file:

RELEASE_FILE=https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.38.0/release.yaml
REKOR_UUID=362f8ecba72f432699509b8cc1664c3bb7f29f406bf9d81e24049d1d33735511ef14ae9f533a4885

# Obtains the list of images with sha from the attestation
REKOR_ATTESTATION_IMAGES=$(rekor-cli get --uuid "$REKOR_UUID" --format json | jq -r .Attestation | jq -r '.subject[]|.name + ":v0.38.0@sha256:" + .digest.sha256')

# Download the release file
curl "$RELEASE_FILE" > release.yaml

# For each image in the attestation, match it to the release file
for image in $REKOR_ATTESTATION_IMAGES; do
  printf $image; grep -q $image release.yaml && echo " ===> ok" || echo " ===> no match";
done

Upgrade Notices

  • Action required: v1alpha1 versions of Task, ClusterTask, TaskRun, Pipeline, and PipelineRun have been removed. Please use v1beta1 versions of these CRDs instead.

Changes

Features

  • ✨ [TEP-0075] Object Params and Results

    • [TEP-0075]Pipeline results support object (#5088)
      Support object results and object element reference for pipeline level as an alpha feature.
      A pipeline can specify a type to create object result, and the task script can populate result in an array form. The pipeline results can refer to task results to collect them.
    • [TEP-0075] Support Object Results substitution (#5083)
      Support object results substitution as an alpha feature.
      A task can specify a type to produce array result, and the task script can populate result in an object form. We can refer to the object results in params.
    • TEP-0075: Implement object var replacement on task&taskrun level (#4904)
      Added implementation for object variables replacement on task/taskrun level where only individual object keys can be referenced in the format of $(params.<param_name>.<key_name>)
      Users need to enabled alpha feature flag to have this pr's change applied.
  • ✨ [TEP-0076] Array Params and Results

    • [TEP-0076] Add indexing into array for taskrun params reference (#5132)
      Indexing into array for taskrun params is now an alpha feature, element of array params can be accessed via $(params.param-name[i]).
    • [TEP-0076]Validate Pipeline results array index (#5139)
      pipelinerun will fail if pipelineresults array index is out of bound
    • [TEP-0076]Pipeline results support array (#4965)
      Support array results and indexing array for pipeline level as an alpha feature.
      A pipeline can specify a type to create array result, and the task script can populate result in an array form. The pipeline results can refer to task results to collect them.
      *[TEP-0076]Validate Results type and object properties (#4920)
      Add Properties for TaskResult so user can define what keys are needed for object type TaskResult and leverage this Properties for validation.
    • [TEP-0076]Support Array Results substitution (#4908)
      Support array results substitution as an alpha feature.
      A task can specify a type to produce array result, and the task script can populate result in an array form. We can refer to the array results in params.
      *[TEP-0076] Add indexing into array for pipeline params reference (#4855)
      Indexing into array for pipeline params is now an alpha feature, element of array params can be accessed via $(params.param-name[i]).
  • ✨ Add support for projected volumes as workspace type (#5085)

Add support for projected volumes as workspace type

  • ✨ Publish Pipeline Results from successful TaskRuns in Failed PipelineRuns (#5060)

Pipeline results are now initialized even when a pipelineRun fails. The task results from all the successful tasks are propagated to the pipelineRun.

  • ✨ Add support for the CSI workspace type (#5030)

Add support to use any CSI volume driver as a workspace

  • ✨ TEP-0090: Matrix

    • TEP-0090: Matrix - Consume Results (#5063)
      Matrix supports Results of type String.
    • TEP-0090: Support both matrix and params in a PipelineTask (#5050)
      Users can specify both matrix and params fields. The matrix is used to fan out the PipelineTask and the params are the same in all the TaskRuns.
    • TEP-0090: Fan Out (#5049)
      A PipelineTask with a Matrix and Custom Task is fanned out into parallel Runs which are executed in parallel.
    • TEP-0090: Matrix - Implement isSuccessful for Runs (#5035)
      Matrixed PipelineTasks with Custom Tasks are successful when all Runs have completed successfully.
    • TEP-0090: Matrix - Minimal Status is Required (#5019)
      The embedded-status feature flag must be set to "minimal" to specify Matrix in a PipelineTask.
    • TEP-0090: Matrix - Max Matrix Combinations Count is 256 (#5012)
      The default maximum count of TaskRuns or Runs from a given Matrix is 256.
    • TEP-0090: Matrix - Get Names of Runs (#5037)
    • TEP-0090: Matrix - ChildReferences for TaskRuns (#5008)
  • ✨ Only create & mount Downward API volume when necessary (#4953)

Added an await-sidecar-readiness feature flag, which can be used to remove the of DownwardAPI volumes in TaskRun pods. (#4953, @hWorblehat)

  • ✨ TEP-0011: Add StdoutConfig and StderrConfig to steps. (#4882)

Users can specify stdoutConfig and stderrConfig in steps to capture steps' stdout and stderr to local files. This feature can be used to capture stdout and stderr into task results.

  • ✨ [TEP-0104] Support Task-level Resource Requirements for TaskRun: Part #1 Fields Addition & Validation w/ Docs Updates (#4877)

Fixes

  • 🐛 Add TerminationMessagePolicy in container conversion (#5201)

Apply the TerminationMessagePolicy field for container types

  • 🐛 Fix the issue with empty array replacement (#5162)

After the replacement with an empty array, the original array will be empty.
Example:

params:
  - name: myarray
     value: "$(params.anEmptyArray[*])"
  • 🐛 Update log keys to match logstream (#5159)

Binary file (standard input) matches

  • 🐛 Reject embedded s with and/or specified (#5018)

Fail PipelineTask validation if a normal, non-custom embedded task is specified along with apiVersion and/or kind

  • 🐛 Validation for Finally Task Results referenced in Pipeline Results (#5000)

Fixed a bug where Finally Task Result's where being referenced in Pipeline Result's.

Fixed a bug where Finally Task Result's are being referenced in Pipeline Result's.

  • 🐛 remove spec.replicas from tekton-pipelines-webhook Deployment (#4894)

Unset replicas:1 in the webhook Deployment; HPA will autoscale the deployment (1-5 replicas by default). First reapplication after this change will cause scaling down to 1 replica, but subsequent reapplications will not change the HPA-set replica number.

  • 🐛 Fix task pod creation failure with duplicate serviceaccount secrets (#4743)

Fix task pod creation failure when duplicate secrets present in service account.

  • 🐛 Non terminal pod exists (#4742)

If for some reason between getting the pod with a list and creation it already exists, do not
treat it as a terminal failure.

  • 🐛 Fail steps on Windows with StdoutPath or StderrPath set (#5180)
  • 🐛 Include Windows image builds in CI build tests (#5178)
  • 🐛 Fix context.background() in workspaceBinding validation (#5101)
  • 🐛 Clarify error message for PipelineRun alpha fields (#5045)
  • 🐛 Fix flaky test by sorting slices (#5171)
  • 🐛 TEP-0090: Sort ChildReferences in tests (#5020)

Misc

  • 🔨 TEP-0075: Validate object name and key name have no dots (#5090)

Dots are not allowed in object param names and key names.

  • 🔨 Remove deprecated (#5022)

Deprecated PipelineRunCancelled status string removed; use Cancelled instead.

  • 🔨 Remove v1alpha1 Pipeline, PipelineRun, Task, TaskRun, and ClusterTask (#5005)

action required: v1alpha1 Pipeline, PipelineRun, Task, TaskRun removed. Please switch to v1beta1 for those types.

  • 🔨 TEP-0075: Add examples with object params and results (#5144)

Add taskrun & pipelinerun examples that use object param and result.

  • 🔨 Export ValidateObjectKeys function (#5073)

ValidateObjectKeys function is now available for usage outside the v1beta1 package.

  • 🔨 TEP-0090: Matrix - Add example and document expected PipelineRun status (#5033)

Fanning out PipelineTasks into parallel TaskRuns with substitutions from combinations of Parameters in a Matrix is fully supported. The ChildReferences of the fanned out TaskRuns will be added to the PipelineRun status.

  • 🔨 Use ghcr.io/distroless/static as base image (#5009)

Images are based on ghcr.io/distroless/static, and the entrypoint image is updated to use nanoserver:ltsc2022 instead of :1809

  • 🔨 Bump github.com/cloudevents/sdk-go/v2 from 2.5.0 to 2.10.1 (#4968)

Binary file (standard input) matches

  • 🔨 TEP-0075: Validate Pipeline object variables in value, matrix and when (#4902)

  • 🔨 [TEP-0075] Validate object keys, PipelineRunSpec -> PipelineSpec (#4883)

Make sure keys of an object param declared in PipelineSpec are all provided with a value when the PipelineRunSpec provides values for the object param. In other words, the value provider - PipelineRunSpec can't miss keys. i.e. the following example will be invalid since the key commit is missed.
Example:

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  generateName: test-case
spec:
  params:
  - name: myObject
    value:
      url: "abc.com"
  pipelineSpec:
    params:
    - name: myObject
      properties:
        url: {}
        commit: {}
  • 🔨 Extract parameter name without any pattern. (#4857)
  • 🔨 Move step and sidecar replacements to new package (#5179)
  • 🔨 Prepare tests for impending knative/pkg version bump (#5145)
  • 🔨 Move two feature flag related functions to config pkg (#5113)
  • 🔨 Move pipelinespec functions into a separate package (#5079)
  • 🔨 TEP-0075: Remove log statement (#5057)
  • 🔨 Move API version validation into separate package (#5053)
  • 🔨 Clean up validation for task and pipeline refs (#5046)
  • 🔨 TEP-0090: Get Names of TaskRuns from ChildReferences only (#5036)
  • 🔨 ResolvePipelineRunTask to ResolvePipelineTask 🧹 (#5029)
  • 🔨 Cleanup unused arguments - mostly removing unused ctx 🧹 (#5028)
  • 🔨 Finish up removal of Conditions 🧹 (#5027)
  • 🔨 TEP-0090: Use Constants in ChildReferences (#5026)
  • 🔨 ResolvedPipelineRunTask to ResolvedPipelineTask (#5025)
  • 🔨 Fix formatting of deprecation table (#5017)
  • 🔨 TEP-0090: GetChildReferences checks for non-nil TaskRuns (#5016)
  • 🔨 TEP-0090: Check for non-nil TaskRun in GetTaskRunsResults (#5015)
  • 🔨 TEP-0090: Refactor GetChildReferences (#5006)
  • 🔨 Refactor LimitRange package (#4992)
  • 🔨 Add StdoutConfig and StderrorConfig to v1 Step (#5199)
  • 🔨 Update GCR IAM settings in Tekton development doc (#5195)
  • 🔨 Add V1 Task Golang structs (#5125)
  • 🔨 Exclude managed fields from e2e test failure object YAML dumps (#5119)
  • 🔨 Document leader-election configuration (#5104)
  • 🔨 Simplify Release Notes section of the PR checklist (#5094)
  • 🔨 Bump github.com/jenkins-x/go-scm from 1.10.10 to 1.11.16 (#5089)
  • 🔨 Add env files for Kind-in-Prow integration test jobs (#5077)
  • 🔨 TEP-0090: Matrix - implement isRunning for Runs (#5062)
  • 🔨 TEP-0090: Matrix - implement getNextTasks (#5061)
  • 🔨 Add almost-empty v1 package (#5055)
  • 🔨 TEP-0090: Resolve PipelineTask with Custom Task (#5048)
  • 🔨 TEP-0090: Get ChildReferences for Runs (#5047)
  • 🔨 TEP-0090: Matrix - Implement isFailure for Runs (#5042)
  • 🔨 TEP-0090: Allow setting embedded status feature flag to minimal in tests (#5032)
  • 🔨 TEP-0090: Test reconciled PipelineRun from Pipeline with Matrix (#5031)
  • 🔨 Switch to cmpopts.SortSlices rather than explicitly sorting in tests when possible (#5023)
  • 🔨 TEP-0090: Update PipelineRun Status from Child Refs (#5014)
  • 🔨 Bump github.com/hashicorp/errwrap from 1.0.0 to 1.1.0 (#4963)

Docs

  • 📖 Update docs for ResourceQuota and QoS (#5051)
  • 📖 Add links to docs and examples for v36 and v37 (#5011)
  • 📖 Cut PipelineResources from some examples (#4971)

Thanks

Thanks to these contributors who contributed to v0.38.0!

Extra shout-out for awesome release notes:

Don't miss a new pipeline release

NewReleases is sending notifications on new releases.