Release Notes
The maintenance period for version v4.14.x is from 19 Aug, 2026 to 19 Aug, 2027.
Release sequencing update: v4.9 and v4.13 are intentionally skipped. The next release after v4.8 is v4.10 (LTS), and the next release after v4.12 is v4.14 (LTS).
TOC
Compatibility and support matrixChannel mappingv4.14.0New and Optimized FeaturesBreaking ChangesUpgrade NotesFixed IssuesKnown IssuesCompatibility and support matrix
The following table shows the compatibility and support matrix between the Alauda DevOps Pipelines operator and ACP versions.
Alauda DevOps Pipelines 4.14.x depends on a platform capability that earlier ACP patch versions do not provide. On ACP 4.0 through 4.3 it therefore requires a minimum ACP patch version, and support becomes available once that ACP patch version is released:
On ACP 4.4 and later there is no such restriction.
If you need Alauda DevOps Pipelines 4.14.x on an earlier ACP patch version, contact the Alauda DevOps team.
The following table shows the recommended version mapping between Alauda DevOps Pipelines and Alauda DevOps Connectors.
Channel mapping
For details about channel behavior and upgrade targeting, see Upgrade Path and Lifecycle Policy.
v4.14.0
New and Optimized Features
Operator
- With this update, the whole Tekton stack moves to a new baseline: Tekton Pipelines
v1.12, Triggersv0.36, Chainsv0.27, Resultsv0.19, Pipelines as Codev0.48, Manual Approval Gatev0.9, Prunerv0.4, and thetknCLIv0.45. See the Compatibility and support matrix for the full mapping.
Triggers
- With this update, an EventListener export rule can be exposed through Gateway API
HTTPRouteby settingtype: HTTPRoute, in addition to the existingIngressmode. This makes automatic webhook exposure work on clusters that provide noIngressClassand route external traffic through a Gateway implementation such as Envoy Gateway. An emptytypestill defaults toIngress, so existing rules are unaffected. For details, see Gateway API (HTTPRoute) mode. - With this update, the time zone used to render the
$(context.date)and$(context.datetime)placeholders injected byScheduledTriggeris defined and documented: the same effective zone evaluates the cronscheduleand renders the placeholders, resolved fromspec.timeZone, then the controller's process time zone, and finally UTC as the out-of-the-box default. Previously the value carried whatever local zone the controller image happened to bake in, so the sameScheduledTriggerproduced different offsets on different clusters. For details, see Time Zone Resolution for Context Parameters.
Pipelines as Code
- With this update, Pipelines as Code is configured through
TektonConfigon Kubernetes. On the defaultspec.profile: allthe operator derives theOpenShiftPipelinesAsCodeCR fromTektonConfigand keeps it in sync, soTektonConfigis the only resource to edit. For details, see Manage PAC Component. - With this update, PAC resolves catalog resources through the in-cluster
artifacthub-shimservice. An administrator-configured hub URL is preserved, and additional PAC controllers are covered as well, including controllers declared after the upgrade.
Catalog
- With this update, legacy
TektonHubcustom catalog configuration is migrated to ArtifactHub Shim before the removed Tekton Hub runtime is cleaned up. The operator readsTektonHub.spec.catalogs[]and the oldtekton-hub-apiConfigMapCATALOGSdata, then creates an ArtifactHub Shim repository ConfigMap namedartifacthub-shim-legacy-tekton-hub-catalogs. - Migrated catalog entries are generated as
<catalog>for Tasks,<catalog>-pipelinesfor Pipelines, and<catalog>-stepactionsfor StepActions. Generated entries useoptional: true; Pipeline and StepAction entries also uselegacyCatalogAliasesso old resolver references can keep using the original catalog name. - If the legacy Tekton Hub SSH credential Secret
tekton-hub-api-ssh-crdsexists in the old Hub target namespace, the operator normalizes it into the ArtifactHub Shim namespace asartifacthub-shim-legacy-tekton-hub-ssh-credsand references it from migrated SSH catalog repositories. The normalized Secret containssshPrivateKeyandknown_hosts; ifknown_hostsis missing or multiple private key candidates are present, the catalog entry is still migrated withoutcredentialRef. - With this update, the default backend of the Hub resolver is the in-cluster
artifacthub-shimservice using Artifact Hub-compatible APIs. For details, see Resolvers.
Web Console
- With this update, the run dialog can configure
computeResources— CPU and memory requests and limits — for a PipelineRun without hand-editing YAML. The values are preserved when the run is saved as aTriggerTemplateand when the PipelineRun is executed again. - With this update, the run configuration also covers timeouts, with unit selection and validation, so the common PipelineRun execution settings no longer require switching to YAML.
- With this update, re-running a PipelineRun falls back to the run configuration recorded in the original PipelineRun when the console cannot resolve its
pipelineRef. Params, workspaces, andtaskRunTemplateare no longer lost or reset when a Pipeline is referenced through a resolver the console does not fully parse. - With this update, a pipeline can bind Integrations of different types at the same time through Multi Connector.
- With this update, Hub catalog requests carry the current Workspace namespace, and list, detail, and manifest caches are isolated per cluster and namespace. Switching Workspace no longer shows or resolves catalog resources that are invisible in the target namespace.
- With this update, Task and Pipeline lists use a lightweight pagination API and load README and manifest content on demand, which shortens the time to first render on large catalogs.
- With this update, multiple UI details are refined, including dynamic form authoring (multi-language display fields for workspaces and results, code editing for string fields, Integration form-mode compatibility, and Result type and object property rendering), pipeline topology layout, detail pages defaulting to the Details tab, breadcrumbs and browser title, tag-triggered run source navigation, and
clusterresolver PipelineRuns in the Repository detail page.
Breaking Changes
-
Starting from this release, the built-in
Tekton Hubruntime is no longer shipped. The operator carries no Tekton Hub manifests, and theAUTOINSTALL_TEKTONHUBswitch introduced inv4.12.0has been removed, so the built-inTekton Hubcannot be re-enabled after upgrading. TheHubcolumn of the compatibility matrix is empty from4.14.xonward for this reason.- Catalog publishing and consumption are served by ArtifactHub Shim, which has its own lifecycle. Custom catalog configuration is migrated automatically — see Catalog above and the Upgrade Notes below for what the migration does and does not cover.
- The Tekton Hub documentation section has been removed along with the runtime. For catalog authoring and consumption guides, see ArtifactHub Shim Catalog.
-
Starting from this release,
TektonConfigowns the Pipelines as Code deployment on the Kubernetes platform. Up tov4.12.xthere was no PAC block inTektonConfigon Kubernetes, so PAC was configured by editing theOpenShiftPipelinesAsCodeCR directly. That CR is now derived fromTektonConfig: the operator sets an owner reference on it and overwritestargetNamespace,config,settings,options, andadditionalPACControllerson every reconcile. Read it for troubleshooting, but write toTektonConfig. Note that PAC is only reconciled onspec.profile: all; onbasicorlitethe operator does not touch PAC at all. For details, see Manage PAC Component.
Upgrade Notes
Pipelines as Code
- Upgrading a Kubernetes cluster that configured a standalone
OpenShiftPipelinesAsCodeCR copies its settings, itsadditionalPACControllers, and the Alauda-specific settings thatTektonConfighas no field for intoTektonConfigbefore adoption overwrites them. A value already present inTektonConfigis never overwritten, and the standalone CR is never deleted.spec.confighas no per-component equivalent inTektonConfig; the operator warns about it rather than guessing. - Adoption also relocates PAC into the
TektonConfigtarget namespace. The Git provider credential Secretpipelines-as-code-secretis copied and the globalRepositoryis moved into the new namespace, both annotated withoperator.tekton.dev/copied-from-namespace. Neither overwrites an object that already exists in the target namespace, and user-createdRepositoryresources are left untouched. - A catalog that genuinely speaks the Tekton Hub API must now declare
catalog-<n>-type: tektonhubexplicitly. Catalog type auto-detection no longer probes the network from the admission path, so it cannot stall on an air-gapped cluster.
Catalog
- The migration writes resources into the ArtifactHub Shim namespace resolved from
TektonConfig.spec.pipeline.hub-resolver-config.artifact-hub-api; when that value is unavailable, the default namespace isartifacthub-shim-system. - The migration does not fetch
TektonHub.spec.api.hubConfigUrland does not clone Git repositories. Make sure custom catalog definitions are present inTektonHub.spec.catalogs[]or in the in-clustertekton-hub-apiConfigMapCATALOGSdata before upgrading. For details about configuring migrated custom catalog sources, see Configure Custom Git Repositories. - The operator skips generated entries that conflict with existing ArtifactHub Shim repository names or same-kind aliases. It also preserves same-name ConfigMaps or Secrets that were not generated by this migration.
Fixed Issues
- Before this update, when a Task contained two or more steps referencing StepActions together with an object parameter that both declared a default value and was set by the TaskRun, resolving those StepAction references concurrently triggered a Go runtime concurrent map writes fatal error, crashing and restarting the entire tekton-pipelines-controller process and interrupting the reconciliation of PipelineRuns and TaskRuns handled by that replica; with this update, the concurrent write issue is fixed and this scenario no longer crashes the controller.
- Before this update, in environments holding a large number of run records the pipeline pages in the console were slow to the point of being unusable: listing PipelineRuns on a pipeline detail page took about 76 seconds, opening a single PipelineRun took about 55 seconds, and listing the child records of a run took about 99 seconds, because the Tekton Results records table lacked the indexes required by these frequent console queries and the database had to scan and decompress JSONB data row by row; with this update, the required indexes are added to the records table and their creation is part of the automatic migration performed when the API starts, so the indexes are in place after a fresh installation or an upgrade without anyone running DDL manually, and the affected queries returned to sub-second times in the verified environment.
- Before this update, when a new branch was created on GitLab from the current commit of the default branch without producing any new commit, the push webhook carried an empty commits array and Pipelines as Code skipped the event as invalid with the message "no commits attached to this push event", so creating the branch did not trigger a pipeline and users had to trigger it manually with a /test comment on the target commit; with this update, Pipelines as Code uses the after field to identify the commit even when commits is empty and continues with the normal Repository and PipelineRun matching, so these branch-creation events trigger pipelines as expected. GitHub was not affected by this issue.
- Before this update, Manual Approval Gate rejected approval group names containing a colon, so approvals that used standard Kubernetes groups such as system:authenticated failed validation, leaving the approval task in the pending state and blocking the downstream pipeline until it timed out; with this update, standard Kubernetes group names containing colons are accepted, and multi-approver flows based on group membership complete normally.
- Before this update, once completed runs were removed from etcd by the pruner or deleted by the user, the pipeline run list did not automatically load those archived records from Tekton Results, a manual refresh was required, and records could be found by name search while being absent from the list, leading users to believe the records had been lost; with this update, the run list correctly reads archived data from Results, so the list stays consistent with search by name.
- Before this update, PipelineRuns and TaskRuns that had been archived while their recorded condition was still Running or Pending kept appearing as Running with a loading indicator, which could mislead users into thinking the resources were still executing; with this update, such records are shown with a neutral Archived status in the list, the status tooltip also reports Archived while keeping the original reason and message, and archived running tasks are counted in a neutral segment of the PipelineRun task status breakdown, so users can tell archived records apart from runs that are genuinely still in progress.
- Before this update, mirroring a larger set of images (about 14 or more in practice) produced a task result whose image list exceeded the 4096-byte Tekton termination message limit, so the PipelineRun failed with "Termination message is above max allowed size 4096" even though all images had been copied successfully, and users had to split the images across several runs; with this update, skopeo-copy provides a maxResultImages parameter that caps how many image entries are written to the results and reports the full count through dst-images-count, so mirroring a larger set of images no longer fails the pipeline.
- Before this update, when a TriggerTemplate parameter declared an empty string as its default value and the ScheduledTrigger did not explicitly provide that parameter, the PipelineRun created by the scheduled trigger still contained the unresolved placeholder $(tt.params.<name>); with this update, an empty string is treated as a valid default value during rendering, and PipelineRuns created by scheduled triggers no longer contain unresolved parameter placeholders.
- Before this update, the recent-run indicators shown for each pipeline in the pipeline list were not ordered by run time, so they did not always represent the most recent runs; with this update, the runs are sorted by creation time in descending order, so the indicators show the latest runs of that pipeline.
- Before this update, when switching between Tasks on the pipeline editing page, parameters from the previous Task remained in the form whenever the two Tasks referenced different definitions, so fields unrelated to the current Task appeared; with this update, stale parameters are cleared when the Task changes and the form keeps only the parameters declared by the current Task definition, while values already entered are preserved during automatic form population until the current definitions finish loading, so user input is not cleared by mistake.
- Before this update, clicking the "Go To SonarQube" link in the Task Overview of a PipelineRun detail page did not open the report in a new browser tab, because the link's target attribute was stripped during rendering; with this update, the link opens in a new tab as expected.
- Before this update, the Tekton Results watcher stored TaskRun and PipelineRun records as soon as the runs were created and kept upserting them as the resources changed, so incomplete runs were archived as well and the list contained archived records that were still marked as Running, leaving users unable to tell from the status whether a resource was still executing while also adding write load to the Results API and database; with this update, a guide is provided for disabling live collection of incomplete runs: after the --disable_storing_incomplete_runs=true argument is added to tekton-results-watcher through TektonConfig, runs that have not reached a terminal state are no longer stored in Tekton Results and a run is stored only after it finishes, so the status of archived records matches their actual state and the Results API and database receive fewer updates.
Known Issues
No issues in this release.