Upgrade Notes

Removed controller remoting transport option for directory lookup

Controllers sometimes need to contact the operations center to inspect folders and jobs on the operations center or other connected controllers. As of CloudBees CI 2.426.1.2, this mechanism was switched from remoting to using HTTP, to better support HA controllers, but a system property -Dcom.cloudbees.opscenter.client.plugin.RemoteDirectoryServiceImpl.useHttp=false was retained to permit switching back to the original implementation. This mode has been removed and the property is ignored if set.


New Features

None.

Feature Enhancements

WebSocket enabled by default for new client controller items

When creating a new client controller item, WebSocket is now enabled by default for the connection to the operations center, requiring no special network configuration. WebSocket uses the standard HTTP or HTTPS port, and for deployments using Kubernetes Gateway API, it works with no additional configuration because Gateway API routes HTTP/HTTPS traffic through HTTPRoute resources. This does not affect new controllers defined via Configuration as Code.


Administrative monitor for misuse of build artifact discard options

A new administrative monitor detects jobs configured to discard artifacts from older builds without deleting the builds altogether, which can cause serious performance problems.

Resolved Issues

bat Pipeline steps hung on Windows SSH agents after controller restart

bat Pipeline steps would hang indefinitely on Windows agents connected via SSH after a controller restart. This requires the following variable to be set: -Dorg.jenkinsci.plugins.durabletask.WindowsBatchScript.USE_BINARY_WRAPPER=true


Amazon EC2 plugin performance improvements

The Amazon EC2 plugin now uses a single SSH client to benefit from an NIO performance enhancement that reduces the number of threads created on controllers using the plugin, and prevents thread leaks when connection errors occur.


Potential deadlocks in HA-specific administrative monitors

A coding pattern used in several administrative monitors present in HA controllers was prone to deadlocks and has been fixed. (An actual deadlock of this form was only observed in a newly introduced monitor prior to its release.)


HTTP 503 outages caused by slow SecurityRealm blocking permission checks

Previously, a slow SecurityRealm (for example, Crowd or LDAP) when adding a group member could block all permission checks, causing HTTP 503 outages. The SecurityRealm lookup is now performed outside the write lock to prevent this cascade.


Controllers stuck offline after an operations center restart due to a setChannel race condition

A race condition could cause controllers to get permanently stuck in a reconnection loop after an operations center restart. When multiple WebSocket connections arrived for the same controller simultaneously, the server incorrectly closed the new connection instead of the stale one, causing the controller to appear offline despite being reachable.


HA controller replicas can get stuck at startup when a crashed replica leaves a stale NFSv3 file lock

During HA managed controller startup, replicas come online sequentially, coordinated by an exclusive lock on $JENKINS_HOME/.launching. In rare cases, if a replica was killed abruptly while holding this lock, NFSv3 may not have released it, leaving the lock held by a process that no longer existed. Any subsequent replica attempting startup would block indefinitely waiting to acquire the lock.


Rendering failure in cjoc-networkpolicy.yaml when ingressControllerSelector was set with CasC Bundle Retriever enabled

The cjoc-networkpolicy.yaml produced invalid YAML when NetworkPolicy.ingressControllerSelector was configured and OperationsCenter.CasC.Retriever.Enabled was true.


File lock acquisition now retried during HA emergency adoption

If an HA replica crashed while running a build and left behind a file lock that was not immediately released, another replica could have attempted to adopt it, failed to acquire the lock, and permanently given up. The cluster now repeatedly attempts to adopt the build, assuming the lock will eventually be released.


LinkageError in Bitbucket Branch Source plugin caused by duplicate Jackson annotations

A LinkageError in the Bitbucket Branch Source plugin was caused by duplicate jackson-annotations classes shipped by both Jackson 2 API plugin and Jackson Annotations 2 API plugin.


CasC Bundle Retriever may not correctly update the version of the bundle

Previously, if the CasC Bundle Retriever was configured with a scmBundlePath starting with a leading / and automatic versioning (ocBundleAutomaticVersion) was enabled, the version of the bundle would not be updated.


CasC Bundle Retriever sidecar failed to authenticate with the operations center for automatic bundle reload

The CasC Bundle Retriever sidecar failed to authenticate with the operations center and could not trigger automatic bundle reloads after an SCM update. The operations center is now notified immediately when a new bundle is available.


Race condition aborting an sh step

When a Pipeline build running an sh (or bat or powershell) step is aborted, either directly by a user or in response to an event such as a timeout, the sh step should fail and the abort reason should propagate up to stop the build as a whole. Due to a race condition, if the user process happened to exit with code zero (success) within milliseconds of the abort request, the sh step could succeed and the build continued (potentially to success) and the abort was lost. Any abort received by the step now always fails the step, regardless of exit status or step configuration.


Reduced timeout for closing User Activity Monitoring database

A managed controller is by default given 30 seconds to shut down upon receiving a termination signal. The User Activity Monitoring plugin was allowing up to five seconds to finish writing a single JSON file, which was excessive, especially since this data collection is best-effort. The timeout has been reduced by default to one second to ensure that other more critical shutdown processes have plenty of time to run.


Credentials fingerprints disabled by default in HA controllers

The default fingerprint storage is not compatible with HA managed controllers, yet Jenkins credentials attempted to record build fingerprints by default. Aside from the files becoming potentially corrupt from concurrent access, this could be a performance bottleneck in high-volume builds. Therefore, HA managed controllers now default to -DCredentialsProvider.fingerprintEnabled=false.


Startup error on Amazon Elastic File System about /var/jenkins/.gitconfig

Under certain conditions, an HA controller starting on Amazon Elastic File System (EFS) could fail with an error could not lock config file /var/jenkins_home/.gitconfig: File exists. This step is now treated as best-effort rather than fatal.


HA multi-executor agent scale-down occasionally triggered unnecessary JVM restart

When using multiple executors on a permanent agent in an HA controller and reducing the scale, background threads occasionally remained running after the scale-down. These threads appeared to indicate that stopping the extraneous executors had failed, when in fact there was no real issue, forcing the agent JVM to restart unnecessarily.


Deprecated hibernation monitor POST endpoint removed

The hibernation monitor used to access hibernated managed controllers has a deprecated /proxy/<NAME>/ endpoint, which is documented to handle GET requests. As of CloudBees CI 2.528.1.29783, this was extended to handle POST requests to work around a limitation in the MCP Server plugin. The new request method was not documented or tested, and did not support the non-deprecated namespaced endpoint format (or the protected variant). The MCP Server plugin has since been improved so that this temporary workaround is no longer needed, and it has been removed.


Performance issues caused by ExpiringTokensMonitor

Previously, the expiring service account tokens monitor triggered expensive Role-Based Access Control permission checks on every folder during page load, causing timeouts on instances with many folders. This has been fixed.


Job instance list failed to load

Previously, the list of job instances failed to load when viewing a Multibranch Pipeline Template via the Pipeline Template Catalog folder path.


Test SSH Connection incorrectly reported missing credentials for folder-scoped and restricted credentials on shared agents

The Test SSH Connection validation button on shared agents configured with folder-scoped or restricted SSH credentials incorrectly reported credentials cannot be found.


master-networkpolicy.yaml invalid YAML due to incorrect JMX selector indentation

Previously, JMX network policy rules in master-networkpolicy.yaml rendered with incorrect indentation, producing invalid YAML.


pluggable-storage-service-deployment.yaml invalid YAML due to incorrect pod annotation indentation

Pod annotations in pluggable-storage-service-deployment.yaml rendered with incorrect indentation, producing invalid YAML.


Restart from stage option missing when viewed from a different HA replica

The Restart from stage build action was not loaded correctly on HA replicas after a Declarative Pipeline build completed. This caused the Restart from stage button to appear missing when viewing the build from a different replica than the replica it ran on.


Removed Tomcat-specific code that counted HTTP worker threads

Support for running CloudBees CI in Tomcat ended in October 2025. A support bundle component that counted HTTP worker threads was still checking for Tomcat configurations and has been simplified to check for Jetty only.

Known Issues

Hazelcast upgrade from 5.6.0 to 5.7.0

The Hazelcast library used for peer-to-peer communications in High Availability (HA) controllers will be upgraded from version 5.6.0 to 5.7.0 in the July 2026 CloudBees CI release. Since Hazelcast Community Edition does not support members of different minor versions sharing a cluster, a regular rolling upgrade across this change is not possible. If you are running an HA controller on any previous version, the upgrade should be automatic, although there will be a temporary outage similar to upgrading a non-High Availability (HA) controller.


Blue Ocean and team controllers end-of-life

Starting with the July 2026 CloudBees CI on modern cloud platforms release, Blue Ocean and Team controllers will reach end-of-life (EOL) and will no longer be supported. After this date, Blue Ocean and Team controllers will not receive updates, security patches, or technical support and will be removed from the CloudBees Assurance Program (CAP).

What this means for you:

  • Team controllers will cease to function starting with the July 2026 release.

  • Blue Ocean may continue to work, but is no longer supported by CloudBees.

  • No further updates or security patches will be provided.

  • Technical support for Blue Ocean and Team controllers will no longer be available.

CloudBees strongly encourages all customers to complete their migration away from Team controllers before the EOL date to ensure uninterrupted service. For detailed migration guidance, please refer to In-place conversion of team controllers to managed controllers. If you have questions or need assistance, please contact CloudBees Support.


Duplicate plugins in the Operations center Plugin Manager UI

When you search for a specific plugin under the Available tab in the Operations center Plugin Manager, the search results show duplicate entries for the plugin.