fsGroup:
type: MustRunAs
Red Hat OpenShift Pipelines is a cloud-native CI/CD experience based on the Tekton project which provides:
Standard Kubernetes-native pipeline definitions (CRDs).
Serverless pipelines with no CI server management overhead.
Extensibility to build images using any Kubernetes tool, such as s2i, Buildah, JIB, and Kaniko.
Portability across any Kubernetes distribution.
Powerful CLI for interacting with pipelines.
Integrated user experience with the Developer perspective of the OpenShift Container Platform web console.
For an overview of Red Hat OpenShift Pipelines, see Understanding OpenShift Pipelines.
Red Hat is committed to replacing problematic language in our code, documentation, and web properties. We are beginning with these four terms: master, slave, blacklist, and whitelist. Because of the enormity of this endeavor, these changes will be implemented gradually over several upcoming releases. For more details, see Red Hat CTO Chris Wright’s message.
Red Hat OpenShift Pipelines General Availability (GA) 1.4 is now available on OpenShift Container Platform 4.7.
In addition to the stable and preview Operator channels, the Red Hat OpenShift Pipelines Operator 1.4.0 comes with the ocp-4.6, ocp-4.5, and ocp-4.4 deprecated channels. These deprecated channels and support for them will be removed in the following release of Red Hat OpenShift Pipelines. |
Some features in this release are currently in Technology Preview. These experimental features are not intended for production use.
In the table below, features are marked with the following statuses:
TP: Technology Preview
GA: General Availability
Note the following scope of support on the Red Hat Customer Portal for these features:
Feature | Version | Support Status |
---|---|---|
Pipelines |
0.22 |
GA |
CLI |
0.17 |
GA |
Catalog |
0.22 |
GA |
Triggers |
0.12 |
TP |
Pipeline resources |
- |
TP |
For questions and feedback, you can send an email to the product team at pipelines-interest@redhat.com.
In addition to the fixes and stability improvements, the following sections highlight what is new in Red Hat OpenShift Pipelines 1.4.
The custom tasks have the following enhancements:
Pipeline results can now refer to results produced by custom tasks.
Custom tasks can now use workspaces, service accounts, and pod templates to build more complex custom tasks.
The finally
task has the following enhancements:
The when
expressions are supported in finally
tasks, which provides efficient guarded execution and improved reusability of tasks.
A finally
task can be configured to consume the results of any task within the same pipeline.
Support for |
Support for multiple secrets of the type dockercfg
or dockerconfigjson
is added for authentication at runtime.
Functionality to support sparse-checkout with the git-clone
task is added. This enables you to clone only a subset of the repository as your local copy, and helps you to restrict the size of the cloned repositories.
You can create pipeline runs in a pending state without actually starting them. In clusters that are under heavy load, this allows Operators to have control over the start time of the pipeline runs.
Ensure that you set the SYSTEM_NAMESPACE
environment variable manually for the controller; this was previously set by default.
A non-root user is now added to the build-base image of pipelines so that git-init
can clone repositories as a non-root user.
Support to validate dependencies between resolved resources before a pipeline run starts is added. All result variables in the pipeline must be valid, and optional workspaces from a pipeline can only be passed to tasks expecting it for the pipeline to start running.
The controller and webhook runs as a non-root group, and their superfluous capabilities have been removed to make them more secure.
You can use the tkn pr logs
command to see the log streams for retried task runs.
You can use the --clustertask
option in the tkn tr delete
command to delete all the task runs associated with a particular cluster task.
Support for using Knative service with the EventListener
resource is added by introducing a new customResource
field.
An error message is displayed when an event payload does not use the JSON format.
The source control interceptors such as GitLab, BitBucket, and GitHub, now use the new InterceptorRequest
or InterceptorResponse
type interface.
A new CEL function marshalJSON
is implemented so that you can encode a JSON object or an array to a string.
An HTTP handler for serving the CEL and the source control core interceptors is added. It packages four core interceptors into a single HTTP server that is deployed in the tekton-pipelines
namespace. The EventListener
object forwards events over the HTTP server to the interceptor. Each interceptor is available at a different path. For example, the CEL interceptor is available on the /cel
path.
The pipelines-scc
Security Context Constraint (SCC) is used with the default pipeline
service account for pipelines. This new service account is similar to anyuid
, but with a minor difference as defined in the YAML for SCC of OpenShift Container Platform 4.7:
fsGroup:
type: MustRunAs
The build-gcs
sub-type in the pipeline resource storage, and the gcs-fetcher
image, are not supported.
In the taskRun
field of cluster tasks, the label tekton.dev/task
is removed.
For webhooks, the value v1beta1
corresponding to the field admissionReviewVersions
is removed.
The creds-init
helper image for building and deploying is removed.
In the triggers spec and binding, the deprecated field template.name
is removed in favor of template.ref
. You should update all eventListener
definitions to use the ref
field.
Upgrade from Pipelines 1.3.x and earlier versions to Pipelines 1.4.0 breaks event listeners because of the unavailability of the |
For EventListener
custom resources/objects, the fields PodTemplate
and ServiceType
are deprecated in favor of Resource
.
The deprecated spec style embedded bindings is removed.
The spec
field is removed from the triggerSpecBinding
.
The event ID representation is changed from a five-character random string to a UUID.
In the Developer perspective, the pipeline metrics and triggers features are available only on OpenShift Container Platform 4.7.6 or later versions.
On IBM Power Systems, IBM Z, and LinuxONE, the tkn hub
command is not supported.
When you run Maven and Jib Maven cluster tasks on an IBM Power Systems (ppc64le), IBM Z, and LinuxONE (s390x) clusters, set the MAVEN_IMAGE
parameter value to maven:3.6.3-adoptopenjdk-11
.
Triggers throw error resulting from bad handling of the JSON format, if you have the following configuration in the trigger binding:
params:
- name: github_json
value: $(body)
To resolve the issue:
If you are using triggers v0.11.0 and above, use the marshalJSON
CEL function, which takes a JSON object or array and returns the JSON encoding of that object or array as a string.
If you are using older triggers version, add the following annotation in the trigger template:
annotations:
triggers.tekton.dev/old-escape-quotes: "true"
When upgrading from Pipelines 1.3.x to 1.4.x, you must recreate the routes.
Previously, the tekton.dev/task
label was removed from the task runs of cluster tasks, and the tekton.dev/clusterTask
label was introduced. The problems resulting from that change is resolved by fixing the clustertask describe
and delete
commands. In addition, the lastrun
function for tasks is modified, to fix the issue of the tekton.dev/task
label being applied to the task runs of both tasks and cluster tasks in older versions of pipelines.
When doing an interactive tkn pipeline start pipelinename
, a PipelineResource
is created interactively. The tkn p start
command prints the resource status if the resource status is not nil
.
Previously, the tekton.dev/task=name
label was removed from the task runs created from cluster tasks. This fix modifies the tkn clustertask start
command with the --last
flag to check for the tekton.dev/task=name
label in the created task runs.
When a task uses an inline task specification, the corresponding task run now gets embedded in the pipeline when you run the tkn pipeline describe
command, and the task name is returned as embedded.
The tkn version
command is fixed to display the version of the installed Tekton CLI tool, without a configured kubeConfiguration namespace
or access to a cluster.
If an argument is unexpected or more than one arguments are used, the tkn completion
command gives an error.
Previously, pipeline runs with the finally
tasks nested in a pipeline specification would lose those finally
tasks, when converted to the v1alpha1
version and restored back to the v1beta1
version. This error occurring during conversion is fixed to avoid potential data loss. Pipeline runs with the finally
tasks nested in a pipeline specification is now serialized and stored on the alpha version, only to be deserialized later.
Previously, there was an error in the pod generation when a service account had the secrets
field as {}
. The task runs failed with CouldntGetTask
because the GET request with an empty secret name returned an error, indicating that the resource name may not be empty. This issue is fixed by avoiding an empty secret name in the kubeclient
GET request.
Pipelines with the v1beta1
API versions can now be requested along with the v1alpha1
version, without losing the finally
tasks. Applying the returned v1alpha1
version will store the resource as v1beta1
, with the finally
section restored to its original state.
Previously, an unset selfLink
field in the controller caused an error in the Kubernetes v1.20 clusters. As a temporary fix, the CloudEvent
source field is set to a value that matches the current source URI, without the value of the auto-populated selfLink
field.
Previously, a secret name with dots such as gcr.io
led to a task run creation failure. This happened because of the secret name being used internally as part of a volume mount name. The volume mount name conforms to the RFC1123 DNS label and disallows dots as part of the name. This issue is fixed by replacing the dot with a dash that results in a readable name.
Context variables are now validated in the finally
tasks.
Previously, when the task run reconciler was passed a task run that did not have a previous status update containing the name of the pod it created, the task run reconciler listed the pods associated with the task run. The task run reconciler used the labels of the task run, which were propagated to the pod, to find the pod. Changing these labels while the task run was running, caused the code to not find the existing pod. As a result, duplicate pods were created. This issue is fixed by changing the task run reconciler to only use the tekton.dev/taskRun
Tekton-controlled label when finding the pod.
Previously, when a pipeline accepted an optional workspace and passed it to a pipeline task, the pipeline run reconciler stopped with an error if the workspace was not provided, even if a missing workspace binding is a valid state for an optional workspace. This issue is fixed by ensuring that the pipeline run reconciler does not fail to create a task run, even if an optional workspace is not provided.
The sorted order of step statuses matches the order of step containers.
Previously, the task run status was set to unknown
when a pod encountered the CreateContainerConfigError
reason, which meant that the task and the pipeline ran until the pod timed out. This issue is fixed by setting the task run status to false
, so that the task is set as failed when the pod encounters the CreateContainerConfigError
reason.
Previously, pipeline results were resolved on the first reconciliation, after a pipeline run was completed. This could fail the resolution resulting in the Succeeded
condition of the pipeline run being overwritten. As a result, the final status information was lost, potentially confusing any services watching the pipeline run conditions. This issue is fixed by moving the resolution of pipeline results to the end of a reconciliation, when the pipeline run is put into a Succeeded
or True
condition.
Execution status variable is now validated. This avoids validating task results while validating context variables to access execution status.
Previously, a pipeline result that contained an invalid variable would be added to the pipeline run with the literal expression of the variable intact. Therefore, it was difficult to assess whether the results were populated correctly. This issue is fixed by filtering out the pipeline run results that reference failed task runs. Now, a pipeline result that contains an invalid variable will not be emitted by the pipeline run at all.
The tkn eventlistener describe
command is fixed to avoid crashing without a template. It also displays the details about trigger references.
Upgrades from Pipelines 1.3.x and earlier versions to Pipelines 1.4.0 breaks event listeners because of the unavailability of template.name
. In Pipelines 1.4.1, the template.name
has been restored to avoid breaking event listeners in triggers.
In Pipelines 1.4.1, the ConsoleQuickStart
custom resource has been updated to align with OpenShift Container Platform 4.7 capabilities and behavior.
Red Hat OpenShift Pipelines Technology Preview (TP) 1.3 is now available on OpenShift Container Platform 4.7. Red Hat OpenShift Pipelines TP 1.3 is updated to support:
Tekton Pipelines 0.19.0
Tekton tkn
CLI 0.15.0
Tekton Triggers 0.10.2
cluster tasks based on Tekton Catalog 0.19.0
IBM Power Systems on OpenShift Container Platform 4.7
IBM Z and LinuxONE on OpenShift Container Platform 4.7
In addition to the fixes and stability improvements, the following sections highlight what is new in Red Hat OpenShift Pipelines 1.3.
Tasks that build images, such as s2i and Buildah tasks, now emit a URL of the image built that includes the image SHA.
Conditions in pipeline tasks that reference custom tasks are disallowed because the Condition
custom resource definition (CRD) has been deprecated.
Variable expansion is now added in the Task
CRD for the following fields:
spec.steps[].imagePullPolicy
and spec.sidecar[].imagePullPolicy
.
You can disable the built-in credential mechanism in Tekton by setting the disable-creds-init
feature-flag to true
.
Resolved when expressions are now listed in the Skipped Tasks
and the Task Runs
sections in the Status
field of the PipelineRun
configuration.
The git init
command can now clone recursive submodules.
A Task
CR author can now specify a timeout for a step in the Task
spec.
You can now base the entry point image on the distroless/static:nonroot
image and give it a mode to copy itself to the destination, without relying on the cp
command being present in the base image.
You can now use the configuration flag require-git-ssh-secret-known-hosts
to disallow omitting known hosts in the Git SSH secret. When the flag value is set to true
, you must include the known_host
field in the Git SSH secret. The default value for the flag is false
.
The concept of optional workspaces is now introduced. A task or pipeline might declare a workspace optional and conditionally change their behavior based on its presence. A task run or pipeline run might also omit that workspace, thereby modifying the task or pipeline behavior. The default task run workspaces are not added in place of an omitted optional workspace.
Credentials initialization in Tekton now detects an SSH credential that is used with a non-SSH URL, and vice versa in Git pipeline resources, and logs a warning in the step containers.
The task run controller emits a warning event if the affinity specified by the pod template is overwritten by the affinity assistant.
The task run reconciler now records metrics for cloud events that are emitted once a task run is completed. This includes retries.
Support for --no-headers flag
is now added to the following commands:
tkn condition list
,tkn triggerbinding list
,tkn eventlistener list
,tkn clustertask list
, tkn clustertriggerbinding list
.
When used together, the --last
or --use
options override the --prefix-name
and --timeout
options.
The tkn eventlistener logs
command is now added to view the EventListener
logs.
The tekton hub
commands are now integrated into the tkn
CLI.
The --nocolour
option is now changed to --no-color
.
The --all-namespaces
flag is added to the following commands:
tkn triggertemplate list
, tkn condition list
, tkn triggerbinding list
, tkn eventlistener list
.
You can now specify your resource information in the EventListener
template.
It is now mandatory for EventListener
service accounts to have the list
and watch
verbs, in addition to the get
verb for all the triggers resources. This enables you to use Listers
to fetch data from EventListener
, Trigger
, TriggerBinding
, TriggerTemplate
, and ClusterTriggerBinding
resources. You can use this feature to create a Sink
object rather than specifying multiple informers, and directly make calls to the API server.
A new Interceptor
interface is added to support immutable input event bodies. Interceptors can now add data or fields to a new extensions
field, and cannot modify the input bodies making them immutable. The CEL interceptor uses this new Interceptor
interface.
A namespaceSelector
field is added to the EventListener
resource. Use it to specify the namespaces from where the EventListener
resource can fetch the Trigger
object for processing events. To use the namespaceSelector
field, the service account for the EventListener
resource must have a cluster role.
The triggers EventListener
resource now supports end-to-end secure connection to the eventlistener
pod.
The escaping parameters behavior in the TriggerTemplates
resource by replacing "
with \"
is now removed.
A new resources
field, supporting Kubernetes resources, is introduced as part of the EventListener
spec.
A new functionality for the CEL interceptor, with support for upper and lower-casing of ASCII strings, is added.
You can embed TriggerBinding
resources by using the name
and value
fields in a trigger, or an event listener.
The PodSecurityPolicy
configuration is updated to run in restricted environments. It ensures that containers must run as non-root. In addition, the role-based access control for using the pod security policy is moved from cluster-scoped to namespace-scoped. This ensures that the triggers cannot use other pod security policies that are unrelated to a namespace.
Support for embedded trigger templates is now added. You can either use the name
field to refer to an embedded template or embed the template inside the spec
field.
Pipeline templates that use PipelineResources
CRDs are now deprecated and will be removed in a future release.
The template.name
field is deprecated in favor of the template.ref
field and will be removed in a future release.
The -c
shorthand for the --check
command has been removed. In addition, global tkn
flags are added to the version
command.
CEL overlays add fields to a new top-level extensions
function, instead of modifying the incoming event body. TriggerBinding
resources can access values within this new extensions
function using the $(extensions.<key>)
syntax. Update your binding to use the $(extensions.<key>)
syntax instead of the $(body.<overlay-key>)
syntax.
The escaping parameters behavior by replacing "
with \"
is now removed. If you need to retain the old escaping parameters behavior add the tekton.dev/old-escape-quotes: true"
annotation to your TriggerTemplate
specification.
You can embed TriggerBinding
resources by using the name
and value
fields inside a trigger or an event listener. However, you cannot specify both name
and ref
fields for a single binding. Use the ref
field to refer to a TriggerBinding
resource and the name
field for embedded bindings.
An interceptor cannot attempt to reference a secret
outside the namespace of an EventListener
resource. You must include secrets in the namespace of the `EventListener`resource.
In Triggers 0.9.0 and later, if a body or header based TriggerBinding
parameter is missing or malformed in an event payload, the default values are used instead of displaying an error.
Tasks and pipelines created with WhenExpression
objects using Tekton Pipelines 0.16.x must be reapplied to fix their JSON annotations.
When a pipeline accepts an optional workspace and gives it to a task, the pipeline run stalls if the workspace is not provided.
To use the Buildah cluster task in a disconnected environment, ensure that the Dockerfile uses an internal image stream as the base image, and then use it in the same manner as any s2i cluster task.
Extensions added by a CEL Interceptor are passed on to webhook interceptors by adding the Extensions
field within the event body.
The activity timeout for log readers is now configurable using the LogOptions
field. However, the default behavior of timeout in 10 seconds is retained.
The log
command ignores the --follow
flag when a task run or pipeline run is complete, and reads available logs instead of live logs.
References to the following Tekton resources: EventListener
, TriggerBinding
, ClusterTriggerBinding
, Condition
, and TriggerTemplate
are now standardized and made consistent across all user-facing messages in tkn
commands.
Previously, if you started a canceled task run or pipeline run with the --use-taskrun <canceled-task-run-name>
, --use-pipelinerun <canceled-pipeline-run-name>
or --last
flags, the new run would be canceled. This bug is now fixed.
The tkn pr desc
command is now enhanced to ensure that it does not fail in case of pipeline runs with conditions.
When you delete a task run using the tkn tr delete
command with the --task
option, and a cluster task exists with the same name, the task runs for the cluster task also get deleted. As a workaround, filter the task runs by using the TaskRefKind
field.
The tkn triggertemplate describe
command would display only part of the apiVersion
value in the output. For example, only triggers.tekton.dev
was displayed instead of triggers.tekton.dev/v1alpha1
. This bug is now fixed.
The webhook, under certain conditions, would fail to acquire a lease and not function correctly. This bug is now fixed.
Pipelines with when expressions created in v0.16.3 can now be run in v0.17.1 and later. After an upgrade, you do not need to reapply pipeline definitions created in previous versions because both the uppercase and lowercase first letters for the annotations are now supported.
By default, the leader-election-ha
field is now enabled for high availability. When the disable-ha
controller flag is set to true
, it disables high availability support.
Issues with duplicate cloud events are now fixed. Cloud events are now sent only when a condition changes the state, reason, or message.
When a service account name is missing from a PipelineRun
or TaskRun
spec, the controller uses the service account name from the config-defaults
config map. If the service account name is also missing in the config-defaults
config map, the controller now sets it to default
in the spec.
Validation for compatibility with the affinity assistant is now supported when the same persistent volume claim is used for multiple workspaces, but with different subpaths.
Red Hat OpenShift Pipelines Technology Preview (TP) 1.2 is now available on OpenShift Container Platform 4.6. Red Hat OpenShift Pipelines TP 1.2 is updated to support:
Tekton Pipelines 0.16.3
Tekton tkn
CLI 0.13.1
Tekton Triggers 0.8.1
cluster tasks based on Tekton Catalog 0.16
IBM Power Systems on OpenShift Container Platform 4.6
IBM Z and LinuxONE on OpenShift Container Platform 4.6
In addition to the fixes and stability improvements, the following sections highlight what is new in Red Hat OpenShift Pipelines 1.2.
This release of Red Hat OpenShift Pipelines adds support for a disconnected installation.
Installations in restricted environments are currently not supported on IBM Power Systems, IBM Z, and LinuxONE. |
You can now use the when
field, instead of conditions
resource, to run a task only when certain criteria are met. The key components of WhenExpression
resources are Input
, Operator
, and Values
. If all the when expressions evaluate to True
, then the task is run. If any of the when expressions evaluate to False
, the task is skipped.
Step statuses are now updated if a task run is canceled or times out.
Support for Git Large File Storage (LFS) is now available to build the base image used by git-init
.
You can now use the taskSpec
field to specify metadata, such as labels and annotations, when a task is embedded in a pipeline.
Cloud events are now supported by pipeline runs. Retries with backoff
are now enabled for cloud events sent by the cloud event pipeline resource.
You can now set a default Workspace
configuration for any workspace that a Task
resource declares, but that a TaskRun
resource does not explicitly provide.
Support is available for namespace variable interpolation for the PipelineRun
namespace and TaskRun
namespace.
Validation for TaskRun
objects is now added to check that not more than one persistent volume claim workspace is used when a TaskRun
resource is associated with an Affinity Assistant. If more than one persistent volume claim workspace is used, the task run fails with a TaskRunValidationFailed
condition. Note that by default, the Affinity Assistant is disabled in Red Hat OpenShift Pipelines, so you will need to enable the assistant to use it.
The tkn task describe
, tkn taskrun describe
, tkn clustertask describe
, tkn pipeline describe
, and tkn pipelinerun describe
commands now:
Automatically select the Task
, TaskRun
, ClusterTask
, Pipeline
and PipelineRun
resource, respectively, if only one of them is present.
Display the results of the Task
, TaskRun
, ClusterTask
, Pipeline
and PipelineRun
resource in their outputs, respectively.
Display workspaces declared in the Task
, TaskRun
, ClusterTask
, Pipeline
and PipelineRun
resource in their outputs, respectively.
You can now use the --prefix-name
option with the tkn clustertask start
command to specify a prefix for the name of a task run.
Interactive mode support has now been provided to the tkn clustertask start
command.
You can now specify PodTemplate
properties supported by pipelines using local or remote file definitions for TaskRun
and PipelineRun
objects.
You can now use the --use-params-defaults
option with the tkn clustertask start
command to use the default values set in the ClusterTask
configuration and create the task run.
The --use-param-defaults
flag for the tkn pipeline start
command now prompts the interactive mode if the default values have not been specified for some of the parameters.
The Common Expression Language (CEL) function named parseYAML
has been added to parse a YAML string into a map of strings.
Error messages for parsing CEL expressions have been improved to make them more granular while evaluating expressions and when parsing the hook body for creating the evaluation environment.
Support is now available for marshaling boolean values and maps if they are used as the values of expressions in a CEL overlay mechanism.
The following fields have been added to the EventListener
object:
The replicas
field enables the event listener to run more than one pod by specifying the number of replicas in the YAML file.
The NodeSelector
field enables the EventListener
object to schedule the event listener pod to a specific node.
Webhook interceptors can now parse the EventListener-Request-URL
header to extract parameters from the original request URL being handled by the event listener.
Annotations from the event listener can now be propagated to the deployment, services, and other pods. Note that custom annotations on services or deployment are overwritten, and hence, must be added to the event listener annotations so that they are propagated.
Proper validation for replicas in the EventListener
specification is now available for cases when a user specifies the spec.replicas
values as negative
or zero
.
You can now specify the TriggerCRD
object inside the EventListener
spec as a reference using the TriggerRef
field to create the TriggerCRD
object separately and then bind it inside the EventListener
spec.
Validation and defaults for the TriggerCRD
object are now available.
$(params)
parameters are now removed from the triggertemplate
resource and replaced by $(tt.params)
to avoid confusion between the resourcetemplate
and triggertemplate
resource parameters.
The ServiceAccount
reference of the optional EventListenerTrigger
-based authentication level has changed from an object reference to a ServiceAccountName
string. This ensures that the ServiceAccount
reference is in the same namespace as the EventListenerTrigger
object.
The Conditions
custom resource definition (CRD) is now deprecated; use the WhenExpressions
CRD instead.
The PipelineRun.Spec.ServiceAccountNames
object is being deprecated and replaced by the PipelineRun.Spec.TaskRunSpec[].ServiceAccountName
object.
This release of Red Hat OpenShift Pipelines adds support for a disconnected installation. However, some images used by the cluster tasks must be mirrored for them to work in disconnected clusters.
Pipelines in the openshift
namespace are not deleted after you uninstall the Red Hat OpenShift Pipelines Operator. Use the oc delete pipelines -n openshift --all
command to delete the pipelines.
Uninstalling the Red Hat OpenShift Pipelines Operator does not remove the event listeners.
As a workaround, to remove the EventListener
and Pod
CRDs:
Edit the EventListener
object with the foregroundDeletion
finalizers:
$ oc patch el/<eventlistener_name> -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge
For example:
$ oc patch el/github-listener-interceptor -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge
Delete the EventListener
CRD:
$ oc patch crd/eventlisteners.triggers.tekton.dev -p '{"metadata":{"finalizers":[]}}' --type=merge
When you run a multi-arch container image task without command specification on an IBM Power Systems (ppc64le) or IBM Z (s390x) cluster, the TaskRun
resource fails with the following error:
Error executing command: fork/exec /bin/bash: exec format error
As a workaround, use an architecture specific container image or specify the sha256 digest to point to the correct architecture. To get the sha256 digest enter:
$ skopeo inspect --raw <image_name>| jq '.manifests[] | select(.platform.architecture == "<architecture>") | .digest'
A simple syntax validation to check the CEL filter, overlays in the Webhook validator, and the expressions in the interceptor has now been added.
Triggers no longer overwrite annotations set on the underlying deployment and service objects.
Previously, an event listener would stop accepting events. This fix adds an idle timeout of 120 seconds for the EventListener
sink to resolve this issue.
Previously, canceling a pipeline run with a Failed(Canceled)
state gave a success message. This has been fixed to display an error instead.
The tkn eventlistener list
command now provides the status of the listed event listeners, thus enabling you to easily identify the available ones.
Consistent error messages are now displayed for the triggers list
and triggers describe
commands when triggers are not installed or when a resource cannot be found.
Previously, a large number of idle connections would build up during cloud event delivery. The DisableKeepAlives: true
parameter was added to the cloudeventclient
config to fix this issue. Thus, a new connection is set up for every cloud event.
Previously, the creds-init
code would write empty files to the disk even if credentials of a given type were not provided. This fix modifies the creds-init
code to write files for only those credentials that have actually been mounted from correctly annotated secrets.
Red Hat OpenShift Pipelines Technology Preview (TP) 1.1 is now available on OpenShift Container Platform 4.5. Red Hat OpenShift Pipelines TP 1.1 is updated to support:
Tekton Pipelines 0.14.3
Tekton tkn
CLI 0.11.0
Tekton Triggers 0.6.1
cluster tasks based on Tekton Catalog 0.14
In addition to the fixes and stability improvements, the following sections highlight what is new in Red Hat OpenShift Pipelines 1.1.
Workspaces can now be used instead of pipeline resources. It is recommended that you use workspaces in OpenShift Pipelines, as pipeline resources are difficult to debug, limited in scope, and make tasks less reusable. For more details on workspaces, see the Understanding OpenShift Pipelines section.
Workspace support for volume claim templates has been added:
The volume claim template for a pipeline run and task run can now be added as a volume source for workspaces. The tekton-controller then creates a persistent volume claim (PVC) using the template that is seen as a PVC for all task runs in the pipeline. Thus you do not need to define the PVC configuration every time it binds a workspace that spans multiple tasks.
Support to find the name of the PVC when a volume claim template is used as a volume source is now available using variable substitution.
Support for improving audits:
The PipelineRun.Status
field now contains the status of every task run in the pipeline and the pipeline specification used to instantiate a pipeline run to monitor the progress of the pipeline run.
Pipeline results have been added to the pipeline specification and PipelineRun
status.
The TaskRun.Status
field now contains the exact task specification used to instantiate the TaskRun
resource.
Support to apply the default parameter to conditions.
A task run created by referencing a cluster task now adds the tekton.dev/clusterTask
label instead of the tekton.dev/task
label.
The kube config writer now adds the ClientKeyData
and the ClientCertificateData
configurations in the resource structure to enable replacement of the pipeline resource type cluster with the kubeconfig-creator task.
The names of the feature-flags
and the config-defaults
config maps are now customizable.
Support for the host network in the pod template used by the task run is now available.
An Affinity Assistant is now available to support node affinity in task runs that share workspace volume. By default, this is disabled on OpenShift Pipelines.
The pod template has been updated to specify imagePullSecrets
to identify secrets that the container runtime should use to authorize container image pulls when starting a pod.
Support for emitting warning events from the task run controller if the controller fails to update the task run.
Standard or recommended k8s labels have been added to all resources to identify resources belonging to an application or component.
The Entrypoint
process is now notified for signals and these signals are then propagated using a dedicated PID Group of the Entrypoint
process.
The pod template can now be set on a task level at runtime using task run specs.
Support for emitting Kubernetes events:
The controller now emits events for additional task run lifecycle events - taskrun started
and taskrun running
.
The pipeline run controller now emits an event every time a pipeline starts.
In addition to the default Kubernetes events, support for cloud events for task runs is now available. The controller can be configured to send any task run events, such as create, started, and failed, as cloud events.
Support for using the $context.<task|taskRun|pipeline|pipelineRun>.name
variable to reference the appropriate name when in pipeline runs and task runs.
Validation for pipeline run parameters is now available to ensure that all the parameters required by the pipeline are provided by the pipeline run. This also allows pipeline runs to provide extra parameters in addition to the required parameters.
You can now specify tasks within a pipeline that will always execute before the pipeline exits, either after finishing all tasks successfully or after a task in the pipeline failed, using the finally
field in the pipeline YAML file.
The git-clone
cluster task is now available.
Support for embedded trigger binding is now available to the tkn evenlistener describe
command.
Support to recommend subcommands and make suggestions if an incorrect subcommand is used.
The tkn task describe
command now auto selects the task if only one task is present in the pipeline.
You can now start a task using default parameter values by specifying the --use-param-defaults
flag in the tkn task start
command.
You can now specify a volume claim template for pipeline runs or task runs using the --workspace
option with the tkn pipeline start
or tkn task start
commands.
The tkn pipelinerun logs
command now displays logs for the final tasks listed in the finally
section.
Interactive mode support has now been provided to the tkn task start
command and the describe
subcommand for the following tkn
resources: pipeline
, pipelinerun
, task
, taskrun
, clustertask
, and pipelineresource
.
The tkn version
command now displays the version of the triggers installed in the cluster.
The tkn pipeline describe
command now displays parameter values and timeouts specified for tasks used in the pipeline.
Support added for the --last
option for the tkn pipelinerun describe
and the tkn taskrun describe
commands to describe the most recent pipeline run or task run, respectively.
The tkn pipeline describe
command now displays the conditions applicable to the tasks in the pipeline.
You can now use the --no-headers
and --all-namespaces
flags with the tkn resource list
command.
The following Common Expression Language (CEL) functions are now available:
parseURL
to parse and extract portions of a URL
parseJSON
to parse JSON value types embedded in a string in the payload
field of the deployment
webhook
A new interceptor for webhooks from Bitbucket has been added.
Event listeners now display the Address URL
and the Available status
as additional fields when listed with the kubectl get
command.
trigger template params now use the $(tt.params.<paramName>)
syntax instead of $(params.<paramName>)
to reduce the confusion between trigger template and resource templates params.
You can now add tolerations
in the EventListener
CRD to ensure that event listeners are deployed with the same configuration even if all nodes are tainted due to security or management issues.
You can now add a Readiness Probe for event listener Deployment at URL/live
.
Support for embedding TriggerBinding
specifications in event listener triggers is now added.
Trigger resources are now annotated with the recommended app.kubernetes.io
labels.
The following items are deprecated in this release:
The --namespace
or -n
flags for all cluster-wide commands, including the clustertask
and clustertriggerbinding
commands, are deprecated. It will be removed in a future release.
The name
field in triggers.bindings
within an event listener has been deprecated in favor of the ref
field and will be removed in a future release.
Variable interpolation in trigger templates using $(params)
has been deprecated in favor of using $(tt.params)
to reduce confusion with the pipeline variable interpolation syntax. The $(params.<paramName>)
syntax will be removed in a future release.
The tekton.dev/task
label is deprecated on cluster tasks.
The TaskRun.Status.ResourceResults.ResourceRef
field is deprecated and will be removed.
The tkn pipeline create
, tkn task create
, and tkn resource create -f
subcommands have been removed.
Namespace validation has been removed from tkn
commands.
The default timeout of 1h
and the -t
flag for the tkn ct start
command have been removed.
The s2i
cluster task has been deprecated.
Conditions do not support workspaces.
The --workspace
option and the interactive mode is not supported for the tkn clustertask start
command.
Support of backward compatibility for $(params.<paramName>)
syntax forces you to use trigger templates with pipeline specific params as the trigger s webhook is unable to differentiate trigger params from pipelines params.
Pipeline metrics report incorrect values when you run a promQL query for tekton_taskrun_count
and tekton_taskrun_duration_seconds_count
.
pipeline runs and task runs continue to be in the Running
and Running(Pending)
states respectively even when a non existing PVC name is given to a workspace.
Previously, the tkn task delete <name> --trs
command would delete both the task and cluster task if the name of the task and cluster task were the same. With this fix, the command deletes only the task runs that are created by the task <name>
.
Previously the tkn pr delete -p <name> --keep 2
command would disregard the -p
flag when used with the --keep
flag and would delete all the pipeline runs except the latest two. With this fix, the command deletes only the pipeline runs that are created by the pipeline <name>
, except for the latest two.
The tkn triggertemplate describe
output now displays resource templates in a table format instead of YAML format.
Previously the buildah
cluster task failed when a new user was added to a container. With this fix, the issue has been resolved.
Red Hat OpenShift Pipelines Technology Preview (TP) 1.0 is now available on OpenShift Container Platform 4.4. Red Hat OpenShift Pipelines TP 1.0 is updated to support:
Tekton Pipelines 0.11.3
Tekton tkn
CLI 0.9.0
Tekton Triggers 0.4.0
cluster tasks based on Tekton Catalog 0.11
In addition to the fixes and stability improvements, the following sections highlight what is new in Red Hat OpenShift Pipelines 1.0.
Support for v1beta1 API Version.
Support for an improved limit range. Previously, limit range was specified exclusively for the task run and the pipeline run. Now there is no need to explicitly specify the limit range. The minimum limit range across the namespace is used.
Support for sharing data between tasks using task results and task params.
Pipelines can now be configured to not overwrite the HOME
environment variable and the working directory of steps.
Similar to task steps, sidecars
now support script mode.
You can now specify a different scheduler name in task run podTemplate
resource.
Support for variable substitution using Star Array Notation.
Tekton controller can now be configured to monitor an individual namespace.
A new description field is now added to the specification of pipelines, tasks, cluster tasks, resources, and conditions.
Addition of proxy parameters to Git pipeline resources.
The describe
subcommand is now added for the following tkn
resources: EventListener
, Condition
, TriggerTemplate
, ClusterTask
, and TriggerSBinding
.
Support added for v1beta1
to the following resources along with backward compatibility for v1alpha1
: ClusterTask
, Task
, Pipeline
, PipelineRun
, and TaskRun
.
The following commands can now list output from all namespaces using the --all-namespaces
flag option: tkn task list
, tkn pipeline list
, tkn taskrun list
, tkn pipelinerun list
The output of these commands is also enhanced to display information without headers using the --no-headers
flag option.
You can now start a pipeline using default parameter values by specifying --use-param-defaults
flag in the tkn pipelines start
command.
Support for workspace is now added to tkn pipeline start
and tkn task start
commands.
A new clustertriggerbinding
command is now added with the following subcommands: describe
, delete
, and list
.
You can now directly start a pipeline run using a local or remote yaml
file.
The describe
subcommand now displays an enhanced and detailed output. With the addition of new fields, such as description
, timeout
, param description
, and sidecar status
, the command output now provides more detailed information about a specific tkn
resource.
The tkn task log
command now displays logs directly if only one task is present in the namespace.
Triggers can now create both v1alpha1
and v1beta1
pipeline resources.
Support for new Common Expression Language (CEL) interceptor function - compareSecret
. This function securely compares strings to secrets in CEL expressions.
Support for authentication and authorization at the event listener trigger level.
The following items are deprecated in this release:
The environment variable $HOME
, and variable workingDir
in the Steps
specification are deprecated and might be changed in a future release. Currently in a Step
container, the HOME
and workingDir
variables are overwritten to /tekton/home
and /workspace
variables, respectively.
In a later release, these two fields will not be modified, and will be set to values defined in the container image and the Task
YAML.
For this release, use the disable-home-env-overwrite
and disable-working-directory-overwrite
flags to disable overwriting of the HOME
and workingDir
variables.
The following commands are deprecated and might be removed in the future release: tkn pipeline create
, tkn task create
.
The -f
flag with the tkn resource create
command is now deprecated. It might be removed in the future release.
The -t
flag and the --timeout
flag (with seconds format) for the tkn clustertask create
command are now deprecated. Only duration timeout format is now supported, for example 1h30s
. These deprecated flags might be removed in the future release.
If you are upgrading from an older version of Red Hat OpenShift Pipelines, you must delete your existing deployments before upgrading to Red Hat OpenShift Pipelines version 1.0. To delete an existing deployment, you must first delete Custom Resources and then uninstall the Red Hat OpenShift Pipelines Operator. For more details, see the uninstalling Red Hat OpenShift Pipelines section.
Submitting the same v1alpha1
tasks more than once results in an error. Use the oc replace
command instead of oc apply
when re-submitting a v1alpha1
task.
The buildah
cluster task does not work when a new user is added to a container.
When the Operator is installed, the --storage-driver
flag for the buildah
cluster task is not specified, therefore the flag is set to its default value. In some cases, this causes the storage driver to be set incorrectly. When a new user is added, the incorrect storage-driver results in the failure of the buildah
cluster task with the following error:
useradd: /etc/passwd.8: lock file already used useradd: cannot lock /etc/passwd; try again later.
As a workaround, manually set the --storage-driver
flag value to overlay
in the buildah-task.yaml
file:
Login to your cluster as a cluster-admin
:
$ oc login -u <login> -p <password> https://openshift.example.com:6443
Use the oc edit
command to edit buildah
cluster task:
$ oc edit clustertask buildah
The current version of the buildah
clustertask YAML file opens in the editor set by your EDITOR
environment variable.
Under the Steps
field, locate the following command
field:
command: ['buildah', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--layers', '-f', '$(params.DOCKERFILE)', '-t', '$(resources.outputs.image.url)', '$(params.CONTEXT)']
Replace the command
field with the following:
command: ['buildah', '--storage-driver=overlay', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--no-cache', '-f', '$(params.DOCKERFILE)', '-t', '$(params.IMAGE)', '$(params.CONTEXT)']
Save the file and exit.
Alternatively, you can also modify the buildah
cluster task YAML file directly on the web console by navigating to Pipelines → Cluster Tasks → buildah. Select Edit Cluster Task from the Actions menu and replace the command
field as shown in the previous procedure.
Previously, the DeploymentConfig
task triggered a new deployment build even when an image build was already in progress. This caused the deployment of the pipeline to fail. With this fix, the deploy task
command is now replaced with the oc rollout status
command which waits for the in-progress deployment to finish.
Support for APP_NAME
parameter is now added in pipeline templates.
Previously, the pipeline template for Java s2i failed to look up the image in the registry. With this fix, the image is looked up using the existing image pipeline resources instead of the user provided IMAGE_NAME
parameter.
All the OpenShift Pipelines images are now based on the Red Hat Universal Base Images (UBI).
Previously, when the pipeline was installed in a namespace other than tekton-pipelines
, the tkn version
command displayed the pipeline version as unknown
. With this fix, the tkn version
command now displays the correct pipeline version in any namespace.
The -c
flag is no longer supported for the tkn version
command.
Non-admin users can now list the cluster trigger bindings.
The event listener CompareSecret
function is now fixed for the CEL Interceptor.
The list
, describe
, and start
subcommands for tasks and cluster tasks now correctly display the output in case a task and cluster task have the same name.
Previously, the OpenShift Pipelines Operator modified the privileged security context constraints (SCCs), which caused an error during cluster upgrade. This error is now fixed.
In the tekton-pipelines
namespace, the timeouts of all task runs and pipeline runs are now set to the value of default-timeout-minutes
field using the config map.
Previously, the pipelines section in the web console was not displayed for non-admin users. This issue is now resolved.