Skip to content

Releases: tektoncd/pipeline

Tekton Pipeline release v0.31.0 "Birman Bors"

14 Dec 22:37
Compare
Choose a tag to compare

πŸŽ‰ Fix for the debug mode, retry task resolution on transient error, and taskRun annotations updated to include the release version πŸŽ‰

-Docs @ v0.31.0
-Examples @ v0.31.0

Installation one-liner

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

⚠️ Known Issues

  • #4483 Implicit parameter mapping incorrectly passes params from the top-level Pipeline or PipelineRun to taskRef Pipeline Tasks. Mapping should only occur from top-level resource to Pipeline Tasks with in-line taskSpec. This issue only affects users with enable-api-fields: alpha in the feature-flags ConfigMap stored in the tekton-pipelines namespace.

Changes

Fixes

  • πŸ› Explicitly annotate TaskRuns with release version. (#4424)

More consistently apply the pipeline.tekton.dev/release annotation to TaskRun resources.

  • πŸ› make debug scripts comply with new /tekton/run (#4416)

Debug scripts were unusable due to addition of the new /tekton/run behavior. This commit makes them usable again.

  • πŸ› Retry TaskRef resolution on etcd errors (#4392)

Retry Task resolution on transient etcd errors

  • πŸ› Fix TestDAGPipelineRun flakiness. (#4419)

  • πŸ› Refactor CloudEvent related tests to use common set of helpers (#4387)

  • πŸ› Put workspace-in-sidecar example into no-ci (#4380)

Misc

  • πŸ”¨ Move Events test helpers to test package (#4405)

Docs

  • πŸ“– Document that k8s 1.20 is the minimum required (#4414)

  • πŸ“– Add v0.30.0 to the README (#4413)

  • πŸ“– Fix conflicting docs for /tekton/steps API Compatibility. (#4395)

action required: Users should not assume the directory/file structure of /tekton/steps. Use $(steps.step-.exitCode.path) instead.

  • πŸ“– docs: add myself as topical owner for debug (#4390)

Thanks

Thanks to these contributors who contributed to v0.31.0!

Extra shout-out for awesome release notes:

Tekton Pipeline release v0.30.0 "Serval Viv"

18 Nov 17:05
Compare
Choose a tag to compare

πŸŽ‰ PipelineResources Deprecated, Retries in Custom Tasks Added, and Linux Arm Supported πŸŽ‰

-Docs @ v0.30.0
-Examples @ v0.30.0

Installation one-liner

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

Upgrade Notices

⚠️ Kubernetes 1.20 is the new minimum required version. ⚠️

Deprecation Notices

  • 🚨 PipelineResources are deprecated. Consider using replacement features, such as Tasks, instead. (#4376)

Backwards incompatible changes

N/A

⚠️ Known Issues

  • #4483 Implicit parameter mapping incorrectly passes params from the top-level Pipeline or PipelineRun to taskRef Pipeline Tasks. Mapping should only occur from top-level resource to Pipeline Tasks with in-line taskSpec. This issue only affects users with enable-api-fields: alpha in the feature-flags ConfigMap stored in the tekton-pipelines namespace.

Changes

Features

  • ✨ Add variable expansion in the workspaces.subPath (#4351)

    Users are able to use variable substitution in the subPath field of a Workspace within a Task in Pipeline

  • ✨ Build images for linux/arm (arm32v7) (#4331)

    Images are built for linux/arm (arm32v7)

  • ✨ TEP-69, Implementation. Support retry for custom tasks. (#4327)

    A custom task specification can be created with Retries as follows:

           apiVersion: tekton.dev/v1alpha1
           kind: Run
           metadata:
             generateName: simpleexample
           spec:
             retries: 3 # set retries
             params:
               - name: searching
                 value: the purpose of my existence
             ref:
               apiVersion: custom.tekton.dev/v1alpha1
               kind: Example
               name: exampleName
    

Fixes

  • πŸ› Breakout sidecar stopping if TaskSpec has no sidecar (#4372)

    The reconciliation of a completed TaskRun has been optimized so that it does not anymore try to stop sidecars for TaskRuns who have
    no sidecars in their TaskSpec.

  • πŸ› Use kmeta.ChildName for child resources (#4361)

    Name of Pods and TaskRuns created by Tekton controllers are now generated with kmeta.ChildName:

    ChildName generates a name for the resource based upon the parent resource and suffix. If the concatenated name is longer than K8s permits the name is hashed and truncated to permit construction of the resource, but still keeps it unique. If the suffix itself is longer than 31 characters, then the whole string will be hashed and parent|hash|suffix will be returned, where parent and suffix will be trimmed to fit (prefix of parent at most of length 31, and prefix of suffix at most length 30).

    The name of the Pods owned by a TaskRun is univocally associated to the owning resource. If a TaskRun resource is deleted and created with the same name, the child Pod will be created with the same name as before.
    The base format of the name is <taskrun-name>-pod. The name may vary as described above if it becomes too long.
    In case of retries, starting from the first retry, the base format of the name is <taskrun-name>-retry<N> where N is the retry number.

    The name of the TaskRuns and Runs owned by a PipelineRun are univocally associated to the owning resource. If a PipelineRun resource is deleted and created with the same name, the child TaskRuns will be created with the same name as before.
    The base format of the name is <pipelinerun-name>-<pipelinetask-name>. The name may vary as described above if it becomes too long.

  • πŸ› Escape git usernames with backslashes in .gitconfig (#4337)

    Git credential usernames containing a backslash will have that backslash escaped with an additional backslash in .gitconfig.

  • πŸ› Stop using milli-quantities for memory and ephemeral storage (#4335)

    Adjusting the pod transformation code based on limit ranges to only use milli-quantities for CPU, but not for memory and ephemeral store and half bytes do not exist.

  • πŸ› Use cmpopts.IgnoreFields instead of IgnoreType. (#4328)

  • πŸ› TestTaskRunTimeout: Reduce timeout 30s -> 1s. (#4360)

  • πŸ› Set explicit timeoutSeconds on example's readinessProbe (#4371)

  • πŸ› Fix ignore annotation for gosec (#4345)

  • πŸ› Rewrite flakey workspace-in-sidecar example (#4349)

Misc

  • πŸ”¨ Updates helm task e2e test to use v1 rbac api (#4369)

  • πŸ”¨ Bump Alpine base images from 3.11 to 3.14 (current latest) (#4332)

    Bump base image for git-init and pullrequest-init from alpine:3.11 to alpine:3.14

  • πŸ”¨ Bump the distroless image. (#4329)

    Update the distroless image to one that has been signed with cosign and Fulcio.

  • πŸ”¨ Deprecate PipelineResources (#4376)

    action required: PipelineResources are deprecated. Consider using replacement features, such as Tasks, instead.

  • πŸ”¨ Remove experimental disable resolution controller flag (#4346)

    An experimental controller flag was added in Pipelines v0.28.0 to disable resolution of taskrefs and pipelinerefs. This flag has now been removed.

  • πŸ”¨ Minor refactoring of taskRef validation. (#4370)

  • πŸ”¨ Improve test coverage for pkg/git (#4367)

  • πŸ”¨ Turn on most of golangci-lint's exclude-use-default rules, address problems (#4315)

  • πŸ”¨ Bump to release-1.0 of knative.dev/pkg (#4354)

  • πŸ”¨ Reduce integration test run times (#4353)

  • πŸ”¨ Makefile: allow override ko binary… (#4287)

  • πŸ”¨ Expose metrics and pprof ports on Pod and pprof on Service (#4233)

Docs

  • πŸ“– Add docs for missing variable substitution fields (#4359)

  • πŸ“– updating release cheat sheet (#4322)

    Updated the release cheat sheet to include creating a GitHub release branch such as release-v0.28.x as part of the release creation process.

  • πŸ“– Fix structure and enable toc autogenerate (#4319)

    Fix structure and enable toc autogenerate

  • πŸ“– document how to verify tekton pipelines release (#4257)

    Document step-by-step process of how to verify Tekton Pipelines release.

  • πŸ“– Add instructions for replacing CloudEvent PipelineResource to pipeline docs (#4379)

  • πŸ“– docs: fixing my name in topical-ownership πŸ’… (#4363)

  • πŸ“– Fix broken links and clarify GCR setup instructions in DEVELOPMENT.md (#4336)

  • πŸ“– Adding note regarding whitespace sensitivity of when expressions (#4333)

  • πŸ“– adding entry for the latest release 0.29 πŸ›Ž (#4325)

  • πŸ“– Fix link to API compatibility policy (#4323)

Thanks

Thanks to these contributors who contributed to v0.30.0!

Extra shout-out for awesome release notes:

Tekton Pipeline release v0.29.0 "Abyssinian Atom"

19 Oct 14:02
Compare
Choose a tag to compare

πŸŽ‰ πŸͺŸ Windows TaskRuns! πŸͺŸ πŸŽ‰

-Docs @ v0.29.0
-Examples @ v0.29.0

Installation one-liner

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

Attestation

The Rekor UUID for this release is 8ba5dcc45b9fad4d879a8b6815cdaa85fdee1d9fc24cf8811f103d537c602908

Obtain the attestation:

rekor-cli get --uuid 8ba5dcc45b9fad4d879a8b6815cdaa85fdee1d9fc24cf8811f103d537c602908 --format json | jq -r .Attestation | base64 --decode | 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.29.0/release.yaml 
REKOR_UUID=8ba5dcc45b9fad4d879a8b6815cdaa85fdee1d9fc24cf8811f103d537c602908

# Obtains the list of images with sha from the attestation
REKOR_ATTESTATION_IMAGES=$(rekor-cli get --uuid "$REKOR_UUID" --format json | jq -r .Attestation | base64 --decode | jq -r '.subject[]|.name + ":v0.29.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

⚠️ Known Issues

  • #4483 Implicit parameter mapping incorrectly passes params from the top-level Pipeline or PipelineRun to taskRef Pipeline Tasks. Mapping should only occur from top-level resource to Pipeline Tasks with in-line taskSpec. This issue only affects users with enable-api-fields: alpha in the feature-flags ConfigMap stored in the tekton-pipelines namespace.

Changes

Features

  • ✨ Build entrypoint image for Windows (#4260)

The entrypoint multi-arch image now includes an image built for Windows, allowing TaskRuns to execute on Windows nodes.

Notes:

  • πŸͺŸ There is a Windows page in the docs folder which outlines some important details about running Windows workloads in Tekton
  • πŸͺŸ If a Windows task and a Linux task are both sharing a PersistentVolumeClaim workspace, the affinity assistant may need to be disabled (those two tasks cannot run on the same node).
  • πŸͺŸ PipelineResources have not been tested for Windows tasks and probably won't work.
  • πŸͺŸ Windows TaskRuns require - at least for now - privileged mode

Thanks for all the contributors for making this possible. We look forward to users feedback!

  • ✨ Support for single-quote bracket notation for params (#4268)

Params and result can now be referenced with bracket notation using both single and double quotes in addition to dot notation. For example, the following are equivalent: $(param.myparam), $(param['myparam']), and $(param["myparam"]). Bracket notation has the additional benefit of allowing users to work with parameter names containing conflicting characters like "." (e.g. $(param['my.param']) or $(param["my.param"]).

  • ✨ Promoting "onError" to beta πŸŽ“ (#4251)

Announcement: onError in a step is now stable and available to include in your task definition without any flag.

Fixes

  • πŸ› Verify failure of PipelineRun in TestGitPipelineRunFail (#4273)
  • πŸ› release: Drop windows from pipeline-wide platforms (#4308)
  • πŸ› Don't pass the pipeline's default platforms value to the publish-image task (#4305)
  • πŸ› release: Include windows in pipeline default platforms (#4304)
  • πŸ› nightly: Configure auth before pushing combined base image (#4302)
  • πŸ› Fix nightly release process (#4301)
  • πŸ› Updates webhook cluster role to work with Owner References (#4269)
  • πŸ› Ignore env var ordering in taskrun reconciler tests (#4286)

Misc

  • πŸ”¨ Remove unused error type CannotConvertError (#4281)

Remove unused error type CannotConvertError

  • πŸ”¨ Split /tekton/run directories into separate volumes. (#4278)
  • πŸ”¨ Remove upgrade via defaulting (#4275)

Use only the conversion webhook to upgrade types, remove upgrade mechanism in the defaulter

  • πŸ”¨ Removing internal/builder/v1alpha1 and all usages (#4270)
  • πŸ”¨ Only add gcr.io images to publish results (#4283)

Due to a technical limitation, only images published to gcr.io, which are included in the release.yaml, are signed.
Images on eu.gcr.io, us.gcr.io and asia.gcr.io are not signed yet.

  • πŸ”¨ Fix unreachable code in TestReconcileCancelledFailsTaskRunCancellation (#4312)
  • πŸ”¨ Clean up a bunch of exported comments to actually match the element (#4311)
  • πŸ”¨ Update comment for dag.GetSchedulable (#4310)
  • πŸ”¨ Remove last lingering unnecessarily exported functions (#4296)
  • πŸ”¨ Switch test/*.go to using YAML rather than structs (#4288)
  • πŸ”¨ Convert test/cluster_resource_test.go's Tekton structs to YAML (#4284)
  • πŸ”¨ Removing internal/builder completely (#4277)
  • πŸ”¨ pkg/pod: extract overrideHomeEnv/WorkingDir outside (#4250)
  • πŸ”¨ pkgs: move affinity assistant to a pod transformer (#4245)
  • πŸ”¨ pkg/pod: simplify orderContainers returns (#4244)
  • πŸ”¨ Bump some stale dependencies in go.mod. (#4243)
  • πŸ”¨ Mount entrypoint volume as read-only. (#4242)
  • πŸ”¨ Mark Downward API VolumeMount as readonly. (#4236)
  • πŸ”¨ Have [Cluster]Task and Pipeline implement kmeta.OwnerRefable. (#4295)
  • πŸ”¨ Generate reconcilers for [Cluster]Tasks and Pipelines. (#4293)
  • πŸ”¨ Make sure images stored in registry mirrors are signed (#4262)
  • πŸ”¨ Remove sbwsg from OWNERS_ALIAS file (#4249)

Docs

  • πŸ“– Add reference to authoring recommendations (#4318)
  • πŸ“– fix couple of small typos (#4292)
  • πŸ“– Fix Example in Service Account Documentation (#4274)
  • πŸ“– Update ToC in TaskRuns documentation (#4265)
  • πŸ“– Document Alpha Features (#4246)
  • πŸ“– links to the patch release v0.28.2 (#4314)
  • πŸ“– adding an entry for v0.28.1 πŸ“’ (#4267)
  • πŸ“– adding links to pipeline release 0.28 (#4252)
  • πŸ“– Revamp Tekton developer docs for /tekton paths. (#4238)

Thanks

Thanks to these contributors who contributed to v0.29.0!

Extra shout-out for awesome release notes:

Tekton Pipeline release v0.28.2 "Siberian Hadaly"

13 Oct 19:05
Compare
Choose a tag to compare

πŸŽ‰ Fix panic when pending pipelinerun is failed πŸŽ‰

-Docs @ v0.28.2
-Examples @ v0.28.2

Installation one-liner

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

⚠️ Known Issues

  • #4483 Implicit parameter mapping incorrectly passes params from the top-level Pipeline or PipelineRun to taskRef Pipeline Tasks. Mapping should only occur from top-level resource to Pipeline Tasks with in-line taskSpec. This issue only affects users with enable-api-fields: alpha in the feature-flags ConfigMap stored in the tekton-pipelines namespace.

Fixes

  • πŸ› Fix panic when pending pipelinerun is failed (#4306)

Fixed an issue where the PipelineRun reconciler could panic if a PipelineRun with spec.status set to PipelineRunPending was placed into a failed state before execution was able to begin.

Thanks

Thanks to these contributors who contributed to v0.28.2!

Extra shout-out for awesome release notes:

Tekton Pipeline release v0.28.1 "Siberian Hadaly"

29 Sep 18:40
Compare
Choose a tag to compare

πŸŽ‰ onError with workspaces, enforcing step timeout, and documentation for disabling ref resolution πŸŽ‰

-Docs @ v0.28.1
-Examples @ v0.28.1

Installation one-liner

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

Backwards incompatible changes

In current release:

  • 🚨 Breaking change in the controller signatures

Breaking signature change in taskrun.NewController and pipelinerun.NewController to take advantage of pipeline.NewFlagOptions(flag.CommandLine) to reduce churn due to flag changes:

New Signature:

func NewController(opts *pipeline.Options) func(context.Context, configmap.Watcher) *controller.Impl {...}

Old signature:

func NewController(namespace string, conf ControllerConfiguration) func(context.Context, configmap.Watcher) *controller.Impl {...}

Fixes

  • πŸ› V0.28 Cherry-Pick: disable resolution flag, onError with workspaces, enforce step timeout, and refactor controllers (#4263)

    • Fixing a bug where the specified step timeout was lost and not propagated to the entrypoint. This fix enforces the step timeout.

    • Fixing a bug where onError was not honored in presence of a workspace. Now, onError can be set to continue to ignore a step error in a task with a workspace.

    • Documented a controller flag that disables ref resolution in pipelineruns and taskruns.

    • (New in v0.28.1, will be part of v0.29.0) Downstream consumers of taskrun.NewController and pipelinerun.NewController will have to fix a breaking signature change; however, they can now take advantage of pipeline.NewFlagOptions(flag.CommandLine) to reduce churn due to flag changes.

Thanks

Thanks to these contributors who contributed to v0.28.1!

Extra shout-out for awesome release notes:

Tekton Pipeline release v0.28.0 "Siberian Hadaly"

17 Sep 07:17
Compare
Choose a tag to compare

πŸŽ‰ Metrics options, better LimitRange support, marking Pod as Terminating and implicit parameters πŸŽ‰

-Docs @ v0.28.0
-Examples @ v0.28.0

Installation one-liner

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

⚠️ Known Issues

  • #4483 Implicit parameter mapping incorrectly passes params from the top-level Pipeline or PipelineRun to taskRef Pipeline Tasks. Mapping should only occur from top-level resource to Pipeline Tasks with in-line taskSpec. This issue only affects users with enable-api-fields: alpha in the feature-flags ConfigMap stored in the tekton-pipelines namespace.

Changes

Features

  • ✨ Support activeDeadlineSeconds for Tekton pods 🦌 (#4217)

Set activeDeadlineSeconds on Tekton's Pod so that they are considered Terminating for Kubernetes.
This helps supporting ResourceQuota a bit better as now Tekton Pipeline's pod are considered terminating and thus can be using a specific scoped ResourceQuota for those.

  • ✨ Allow in param/result names via subscript. (#4215)

Parameter and result names may now contain . and be referenced via the subscript operator (e.g. $(params["foo.bar"])

  • ✨ Add Configuration for Metrics Cardinality Simplification (#4201)

Metrics tags/labels type on taskrun/pipelinerun and task/pipeline can be eliminated metrics using configmap. Also, the type of metrics for duration - histogram or gauge/last value, can also be configured.

  • ✨ Attempt to lookup cached entrypoint by digest, if possible (#4188)

Attempt to avoid incurring a rate limited image pull to lookup cached image entrypoints, if we can avoid it.

  • ✨ Revamp how pipeline supports Limitranges (#4176)

Support fully LimitRange by taking into account the Min, Max, Default and DefaultRequest fields as well as the MaxLimitRequestRatio) to define the coherent Requests and Limits on the Pod.

  • ✨ Add Cancelled Pipelinerun metrics (#4144)

Add Cancelled Pipelinerun metrics

  • ✨ Add script mode support to windows tasks (#4128)

Add script mode support for windows Tasks/Pipelines

  • ✨ Implement implicit parameter resolution. (#4127)

    • Tasks can now accept more parameters than are actually used.
    • Parameters can now be implicitly propagated to inlined specs (alpha feature flag must be enabled) -
      e.g. an inlined Task can access parameters of its parent PipelineRun without
      needing to explicitly define each param.

Backwards incompatible changes

In current release:

  • 🚨 The default value for the new Step onError alpha feature has changed its name from fail to stopAndFail. #4151. Note: this only affects user of v0.27.0 as this behavior change was backported into v0.27.1.

  • πŸ› Patch vendor/ apimachinery to work on 1.22 (#4164)

Backport adding Subresource field to ManagedField entries in our vendor/ folder to make tektoncd/pipeline work on k8s 1.22

  • πŸ› Propagate Pipeline name label to PipelineRun (#4163)

pipeline name label is propagated to pipelinerun, even when the pipelinerun is pending or cancelled

  • πŸ› Set the scripts dir to readonly after init (#4161)

Mount script workspace as readonly

  • πŸ› Fix Concurrency issue in the metrics (#4222)
  • πŸ› Un-randomize TestConvertScripts_WithBreakpoint_OnFailure (#4197)
  • πŸ› Configure user.name in git_test.go run method. (#4192)
  • πŸ› Don't modify the lister cache's copy. (#4180)
  • πŸ› Switch from -Z to -w (#4178)

Misc

  • πŸ”¨ Remove the pkg/jsonpath library. (#4208)

The package pkg/jsonpath has been removed. This does not effect anyone using tektoncd/pipeline directly, but may break users importing this code as a library during an update. We're unaware of any usage of this package right now.

  • πŸ”¨ Converts ResultType from string to int enum (#4186)

  • πŸ”¨ cleaning up label keys 🧹 (#4154)

The constants defined for the Tekton specific labels now include GroupName(tekton.dev) in the definition, for example:

Before this change:
const TaskLabelKey = "/task"

After this change:
const TaskLabelKey = GroupName + "/task"

If you are importing these constants in your application from the pipeline source, you don't need to add GroupName anymore.

  • πŸ”¨ (cleanup) use skipping reason instead of existence of variables (#4147)

  • πŸ”¨ Poll for the status of Runs (#4213)

  • πŸ”¨ Add controller flag to turn off built-in resolution (#4168)

Introduce experimental flag to disable built-in resolution behaviour of the taskrun and pipelinerun reconcilers.

  • πŸ”¨ Add metadata to our publish task for Tekton Chains to observe & sign (#4156)

Tekton Pipelines releases are now signed by Tekton Chains.

  • πŸ”¨ Use an Informer to list LimitRanges πŸ₯Ό (#4234)
  • πŸ”¨ Remove unnecessary replace directives in go.mod (#4229)
  • πŸ”¨ Skipping the CI secret sauce πŸ¦• (#4221)
  • πŸ”¨ Bump github.com/cloudevents/sdk-go to v2.5.0 (#4216)
  • πŸ”¨ Switch the linter from golint to revive, and fix warnings. (#4212)
  • πŸ”¨ Make NewRecorder a proper singleton (#4210)
  • πŸ”¨ Don't rely on condition ordering. (#4209)
  • πŸ”¨ Remove the gosec Makefile target. (#4207)
  • πŸ”¨ Bump golangci-lint to v1.42.0 from v1.30.0. (#4206)
  • πŸ”¨ Bump the go-scm, docker/cli and docker/docker libraries. (#4205)
  • πŸ”¨ Adjust the way {pipeline,task}run metrics are surfaced. (#4204)
  • πŸ”¨ Bump the version of K8s clients and knative/pkg (#4198)
  • πŸ”¨ Improve the logging in pkg/git testing (#4191)
  • πŸ”¨ Deduplicate timeout constants. (#4189)
  • πŸ”¨ Add CE Client to dynamic injection (#4183)
  • πŸ”¨ Adjust several log lines (#4182)
  • πŸ”¨ Fix a small copy/pasta typo (#4181)
  • πŸ”¨ pkg/entrypoint: clean after running tests (#4175)
  • πŸ”¨ Remove confusing comment (β—Ž_β—Ž (#4171)
  • πŸ”¨ Update to latest knative.dev/pkg (#4170)
  • πŸ”¨ Replace snooze with NewRequeueKey (#4131)

Docs

  • πŸ“– Document Pipeline's use of Pod termination messages (#4226)

Our developer docs now include more details on how Tekton Pipelines uses Pod termination messages to communicate information between Task pods and the Tekton Pipelines controller.

  • πŸ“– Add docs and examples for Windows (#4138)
  • πŸ“– Docs for Metrics Configuration (#4218)
  • πŸ“– Add doc links for 0.27.2 and 0.27.3 (#4203)
  • πŸ“– Update readme with release 0.27.1 links (#4162)
  • πŸ“– Update docs with 0.27.0 info (#4152)

Thanks

Thanks to these contributors who contributed to v0.28.0!

Extra shout-out for awesome release notes:

Tekton Pipeline release v0.27.3 "Tonkinese Talos"

31 Aug 14:40
Compare
Choose a tag to compare

πŸŽ‰ Support for Kubernetes 1.22 πŸŽ‰

-Docs @ v0.27.3
-Examples @ v0.27.3

Installation one-liner

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

Upgrade Notices

This is the first Tekton Pipelines release with support for Kubernetes 1.22. There are no other changes.

Changes

Fixes

  • πŸ› Patch vendor/ apimachinery to work on 1.22 (#4164)

Backport adding Subresource field to ManagedField entries in our vendor/ folder to make tektoncd/pipeline work on k8s 1.22.

Thanks

Thanks to these contributors who contributed to v0.27.3!

Tekton Pipeline release v0.27.2 "Tonkinese Talos"

23 Aug 16:53
Compare
Choose a tag to compare

πŸŽ‰ Bug Squashed in PipelineRun<->Pipeline Labelling πŸŽ‰

-Docs @ v0.27.2
-Examples @ v0.27.2

Installation one-liner

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

Changes

Fixes

  • πŸ›: Propagate Pipeline name label to PipelineRun (#4163)

This bug fix allows PipelineRuns started in a Pending or Cancelled state to be identified using label queries for the associated Pipeline name.

Thanks

Thanks to these contributors who contributed to v0.27.2!

Tekton Pipeline release v0.27.1 "Tonkinese Talos"

16 Aug 19:51
Compare
Choose a tag to compare

πŸŽ‰ Tekton Pipelines' images now signed by Tekton Chains πŸŽ‰

-Docs @ v0.27.1
-Examples @ v0.27.1

Installation one-liner

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

Changes

Features

Backwards incompatible changes

In current release:

  • 🚨 The default value for the new Step onError alpha feature has changed its name from fail to stopAndFail. #4151

Thanks

Thanks to these contributors who contributed to v0.27.1!

Tekton Pipeline release v0.27.0 "Tonkinese Talos"

12 Aug 20:43
Compare
Choose a tag to compare

πŸŽ‰ Step onError Handling, Skipping Strategies and Custom Task Timeouts! πŸŽ‰

-Docs @ v0.27.0
-Examples @ v0.27.0

Installation one-liner

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

Upgrade Notices

⚠️ Kubernetes 1.19 is the new minimum required version. ⚠️

Changes

Features

  • ✨ TEP-0040 Specifying onError behaviour for Steps (#4106)

This is a brand new Alpha feature: Use onError: continue for a Step if you would like to ignore any errors and continue executing the rest of the Steps in a Task. When onError is set to continue, the Step's exit code is recorded and made available to subsequent Steps via two new variables in Tasks. A Step with onError set to continue does not fail a TaskRun and continues executing the rest of the steps in a task.

The default value for the onError field is fail, which matches existing Step behavior: an error results in the Task stopping and entering a failed state. 🚨 NOTE The name of the default value may change in a subsequent release from fail to stopAndFail to make this behaviour more explicit. Follow tektoncd/community#497 to keep informed about this potential change. A Backwards Incompatibility note will be included with the release if this change moves ahead. 🚨

  • ✨ TEP-0059 Skipping Strategies (#4085)

⚠️ This is a change to existing behaviour. It is behind its own feature flag to give time to adapt. ⚠️

When Expressions are changing scope: in a future release (and today, if you enable the flag) a when stanza will guard only the Task it is attached to instead of the Task and all of its dependents. To guard both a Task and its dependents the when stanza will need to be attached to each dependent Task as well. This change will roll out for all users of v1beta1 resources in 9 months, per our beta deprecation policy, and will be the default behaviour for When Expressions in any new apiVersions of Tekton's resources going forward.

New Feature Flag: scope-when-expressions-to-task
Default Value: "false"

To guard a Task only and unblock execution of its dependent Tasks, set the scope-when-expressions-to-task feature flag to "true".

Action Required: when expressions guarding a Task and its dependent Tasks is deprecated and will be removed - migrate by setting scope-when-expressions-to-task feature flag to "true" and updating your Pipelines to cascade when expressions to subsequent Tasks as needed.

For the rationale and use-cases that inspired this change please see TEP-0059.

  • ✨ Implement timeout for custom tasks. (#3976)

⚠️ Existing custom task controllers will need to add support for this new field - by default it will be ignored. ⚠️

Custom Tasks can now include a timeout as part of their spec. Custom Task controllers can add support for responding to this field with new behaviour such as cleanup processes. Here's an example usage in a Run leveraging the TaskLoop Custom Task controller:

apiVersion: tekton.dev/v1alpha1
kind: Run
metadata:
  generateName: simpletasklooprun
spec:
  timeout: 10s # set timeout here.
  params:
    - name: word
      value:
        - jump
        - land
        - roll
    - name: suffix
      value: ing
  ref:
    apiVersion: custom.tekton.dev/v1alpha1
    kind: TaskLoop
    name: simpletaskloop
  • ✨ A new label for TaskRuns to identify their place in Pipelines (#4121)

TaskRuns and Runs in a Pipeline will now receive an additional label, tekton.dev/memberOf. The value of this label will be: tekton.dev/memberOf=tasks for entries in the "tasks" section of a Pipeline and tekton.dev/memberOf=finally for entries in the "finally" section of a Pipeline.

  • ✨ Add variable expansion in the workspaces.mountPath field of Tasks (#3934)

Users are now able to utilize variable substitution in the mountPath field of a Workspace within a Task. This is useful, for example, to parameterize the directory under which source code from a Workspace should appear in a Task's filesystem.

Deprecation Notices

  • 🚨 Early Warning: When Expressions will change their scope in a future release

Please see the "Skipping Strategies" feature description above for fuller information. In short: When Expressions currently guard both a Task and all of that Task's dependents. In future this behaviour will be changed so that When Expressions only guard the Task they are attached to. As part of this release a new feature flag has been added called scope-when-expressions-to-task. The default value is "false", indicating no immediate change to behaviour. In 9 months, per our beta deprecation policy, this value will be changed to "true" by default and eventually the flag will be removed completely. It is strongly advised that you assess your current suite of Pipelines for any impact this change might have on you and your teams. (#4085).

Fixes

  • πŸ› Graceful Termination: Cancelled Task is Failed (even with Retries) (#4136)

PipelineTasks with retries that were "gracefully cancelled" could result in a PipelineRun being left in a hung state. This has been fixed.

  • πŸ› Invalidate passing Results between Finally Tasks (#4132)

Pipelines that attempted to pass results from one Finally Task to another were not being caught during validation. This is not supported because Finally Tasks are not allowed to have dependencies among themselves. This has been fixed.

In addition this bug fix also dramatically improves the validation of Finally Tasks by ensuring that all validation errors are returned to the user at once rather than only the first error that was encountered.

  • πŸ› Mark webhook and controller as safe-to-evict (#4124)

By default, controller components are now marked as safe-to-evict by the cluster autoscaler. See docs/enabling-ha.md for more details.

  • πŸ› Passes pipelines/tasks from bundles through defaulting before execution (#4117)

Pipelines and Tasks fetched from Tekton Bundles were not being passed through a defaulting step before being validated, which could result in spurious validation errors. This has been fixed.

  • πŸ› Loosen permission checks on TestCp to handle umasks. (#4100)

  • πŸ› support referencing array params in when expression values (#4075)

When expression values can now use array parameter references, for example: values: [$(params.arrayParam[*])]

Misc

  • πŸ”¨ Update to latest knative.dev/pkg (#4129)
  • πŸ”¨ Fix Example with Completed and Succeeded Execution Status (#4140)
  • πŸ”¨ Add e2e tests for Windows (#4139)
  • πŸ”¨ Get default sa from configmap defaultconfigs (#4095)
  • πŸ”¨ Small entrypoint unit test fixes prior to 0.27 release (#4149)
  • πŸ”¨ Switch Errorf to Fatalf in retry tests. (#4133)
  • πŸ”¨ Use knative.dev/pkg/changeset (#4126)
  • πŸ”¨ Use controller.FilterController(&v1beta1.TaskRun{}) (#4113)
  • πŸ”¨ Drop the tracker. (#4111)
  • πŸ”¨ Take advantage of kmeta.OwnerRefable. (#4110)
  • πŸ”¨ cleanup - homeDir constant and hardcoded path (#4079)
  • πŸ”¨ Cleanup multi-arch tests (#4045)

Docs

  • πŸ“– GoogleContainerTools/skaffold mainline branch is called 'main' rather than 'master' (#4120)
  • πŸ“– docs: rename to expressions (#4104)
  • πŸ“– Add WhenExpressions to variable substitution documentation (#4091)
  • πŸ“– updating readme to include 0.26 (#4089)
  • πŸ“– minor doc fix (#4109)
  • πŸ“– Fix misplaced fields in API spec (#4094)
  • πŸ“– Always refer to "finally" tasks πŸ“– (#4090)
  • πŸ“– Add issue link to comment in controller yaml (#4088)

Thanks

Thanks to these contributors who contributed to v0.27.0!

Extra shout-out for awesome release notes: