Upgrade Notes
- App Password credentials are no longer supported for Bitbucket Cloud
-
Atlassian is deprecating App Passwords for Bitbucket Cloud, with brownouts already in effect ahead of full removal on July 28, 2026. Starting with version 937.3.4, the Bitbucket Branch Source plugin (
cloudbees-bitbucket-branch-source) no longer accepts App Password credentials for Bitbucket Cloud. Atlassian recommends migrating to API tokens. To configure the replacement credential in your controller, refer to the Bitbucket Branch Source plugin user guide.
git-lfsis now installed from base image packages-
To streamline the build process, the
git-lfsbinary is now installed from UBI packages instead of directly from upstream sources. Future updates togit-lfswill be limited to those provided by Red Hat.
jenkins-agentConfigMap removed from the Helm chart-
As noted in the CloudBees CI 2.462.3.3 release notes, the
jenkins-agentConfigMap has been removed from the CloudBees CI Helm chart. You must migrate its configuration to the new idiom provided by the Kubernetes plugin (kubernetes):-
To inject the agent, use one of the following methods:
-
Select Inject Jenkins agent in agent container.
-
Add
agentInjection: trueto thepodTemplatestep. -
Specify
agentInjection truein Declarative pipelines.
-
-
Remove volume mounting of the
jenkins-agentConfigMap, and the associated command (the new option injects the required command and arguments automatically).
-
For more information, refer to Migrate from jenkins-agent ConfigMap to agent-injection.
Feature Enhancements
- OpenID Connect authentication for service accounts
-
CloudBees CI now supports OpenID Connect (OIDC) authentication for service accounts, in addition to the static token authentication introduced in CloudBees CI 2.541.3.36065. OIDC enables keyless, machine-to-machine authentication, eliminating the need to manage long-lived tokens. A service account can specify one or more OIDC configurations, each defining expected claims such as an issuer URL accessible to CloudBees CI. When a system presents a JSON Web Token (JWT) to authenticate, CloudBees CI verifies its signature against public keys discovered from the issuer and validates the claims. With OIDC, service accounts can authenticate from GitHub Actions, Kubernetes service accounts, or other controllers running Jenkins or CloudBees CI.
containerstep now supports Jenkins Remoting channel rather than WebSocket to the Kubernetes API server-
When using Kubernetes agents with multiple containers in the pod, the
containerstep (or, in Declarative syntax, using thedefaultContaineroption) is often used to allowshsteps to be run inside a container other than the one hosting the Jenkins agent. The traditional implementation of this system required the Jenkins controller to make a WebSocket connection to the Kubernetes API server, effectively runningkubectl exec. This caused robustness issues at scale. Now you can select the Use active containers option on the Kubernetes cloud (activeContainers: truein CasC) to use an alternate implementation that passes all messages through the Jenkins Remoting channel instead of a WebSocket connection to the Kubernetes API server.
Currently, this system is only supported for Linux agents. Windows agents will continue to use the original implementation even with the option selected.
${workloadKind}macro now available in controller provisioning YAML snippets-
Custom YAML snippets for controller provisioning can now use the
${workloadKind}macro, which resolves toStatefulSetorDeploymentdepending on whether High Availability (HA) is enabled. This eliminates the need to hardcode the workload type, allowing a single snippet to work correctly across both HA and non-HA controllers.
- The operations center now has permission to create
HTTPRouteswhen the Gateway API is available -
Previously, the Kubernetes Role-Based Access Control (RBAC) permissions for the operations center only included permission to create
HTTPRoutesif the operations center was configured with a gateway. Now the permissions are granted if the Gateway API CRDs are available, regardless of the installation mode.
- Console Output records the user who restarts a build from a checkpoint
-
When restarting a build from a checkpoint, the user who initiated the restart is now displayed in the Console Output for audit traceability.
Resolved Issues
- Hibernation proxy and queue endpoints no longer return
HTTP 401errors when clients sendAuthorizationheaders -
When hibernating managed controllers, requests to proxy or queue endpoints that included an
Authorizationheader (as Jenkins sends for most HTTP calls) were incorrectly rejected with anHTTP 401error before reaching the managed controller. This affected all proxy and queue endpoints, not only installations usingHibernation.Protected=true. This release resolves the issue by disabling proactive Kubernetes authentication on routes that do not require it, soAuthorizationheaders are now passed through transparently to the managed controller.
- Exceptions are no longer logged after deleting upstream or downstream builds when using the
buildstep -
When using the
buildstep to trigger a downstream build from an upstream build, if either the upstream or downstream build was deleted after a controller restart, an exception is no longer printed to the system log.
- Unique user count in activity reports no longer double-counts users when identity records span the query window
-
Activity reports no longer double-count unique users when a user’s identity bridge record (for example, an email change) falls outside the requested time window.
- Remote procedure calls are now correctly aborted when a controller shuts down
-
Previously, if a controller shut down while handling a remote procedure call (RPC), such as a remote artifact copy, the call was not aborted correctly and hung until the timeout was reached. RPCs are now canceled, allowing the caller to receive a response when the controller is running again.
- Offline idle EC2 agents are now deleted after the idle termination period
-
Reconnect logic was interfering with offline idle agents, preventing the idle termination logic from deleting them. EC2 agents that go offline with no builds assigned are now deleted after the idle termination period has been reached.
- Credentials dropdown thread leak and blacklisting resolved in the Bitbucket Branch Source plugin
-
This release resolves a thread leak in the Bitbucket Branch Source plugin (
cloudbees-bitbucket-branch-source) Credentials dropdown that causedOutOfMemoryErroron instances with large credential stores. It also removes permanent credential blacklisting that caused credentials to disappear from the Credentials dropdown after transient timeouts until a controller restart.
- The
remoteCopyArtifactstep now provides more detailed error messages -
If a
remoteCopyArtifactstep fails, the error message now includes more detail about why the step failed.
- Google Cloud Storage workspace cache cleanup deleted caches belonging to other controllers when sharing a bucket
-
When two or more controllers were configured to use the CloudBees Cache Step plugin (
cloudbees-cache-step) with the same Google Cloud Storage (GCS) bucket for workspace caching with different prefixes, the automated cleanup process on each controller listed all objects in the bucket, regardless of prefix. Any object whose key did not match the current controller’s expected prefix was treated as orphaned and deleted, including active caches written by other controllers. This caused cache misses on every build following a cleanup pass.
As a workaround for CloudBees Cache Step plugin version 363 or earlier, configure each controller to use its own dedicated GCS bucket.
- SSO Relay check no longer fails when an HTTP proxy is configured
-
Previously, when SSO Relay was enabled and an HTTP proxy was configured, the SSO Relay check could fail because the internal relay request was routed through the proxy. This in-cluster call now bypasses the proxy, so the check works regardless of proxy configuration.
- Configuration as Code bundle validation now correctly handles directory references in
bundle.yamlfile -
In Configuration as Code (CasC), bundles can reference entire directories instead of listing individual YAML files. Previously, the bundle validation endpoint incorrectly reported these bundles as invalid when a directory was referenced in the
jcasc,rbac,items, orpluginssections of thebundle.yamlfile, even though the bundles loaded correctly at runtime. Bundle validation now correctly handles directory references across all supported bundle sections.
- Restart from this checkpoint no longer queues duplicate builds on rapid clicks
-
Selecting Restart from this checkpoint multiple times before the server responded would queue multiple builds. The button now disables immediately on selection and re-enables if the request fails, preventing accidental duplicate restarts.