CloudBees CI release highlights

What’s new in CloudBees CI 2.492.3.5

Watch video

Upgrade Notes

Addition of the jsoup API (jsoup-api) plugin to the CloudBees Assurance Program envelope

With this release, the jsoup API plugin (jsoup-api) is now part of the CloudBees Assurance Program envelope. This plugin was added to CloudBees Assurance Program because of the Analysis Model API (analysis-model-api) plugin dependency on jsoup. The Analysis Model API plugin was also added to CloudBees Assurance Program.


Operations center CloudBees Assurance Program plugin changes since 2.492.2.2

The following plugins have been added to the operations center CloudBees Assurance Program since 2.492.2.2:

  • Amazon Web Services SDK 2 :: Core (aws-java-sdk2-core)

  • Amazon Web Services SDK 2 :: EC2 (aws-java-sdk2-ec2)


Controller CloudBees Assurance Program plugin changes since 2.492.2.2

The following plugins have been added to the controller CloudBees Assurance Program since 2.492.2.2:

  • Amazon Web Services SDK 2 :: Core (aws-java-sdk2-core)

  • Amazon Web Services SDK 2 :: EC2 (aws-java-sdk2-ec2)

  • jsoup API Plugin (jsoup)


New Features

None.

Feature Enhancements

The SynchronousResumeNotSupportedException error now includes the name of the step that failed

Some steps in a Jenkins pipeline can’t resume after a controller restart. If one of these steps fails, the build log displays a SynchronousResumeNotSupportedException error.

Previously, the log didn’t specify the failing step. Now, the log identifies the step’s function name and suggests using retry (Scripted pipelines) or retries (Declarative pipelines). This enhancement reduces debugging time, particularly in complex pipelines or those that use shared libraries.


Display cluster up-time in the High Availability (HA) status page

The High Availability (HA) status page now displays the up-time for the High Availability (HA) cluster. This indicates how long the cluster has been running with one replica.


High Availability (HA) controllers display a warning message if ReplicationServletListener is not enabled

When the High Availability (HA) plugin is active, the com.cloudbees.jenkins.replication.warhead.ReplicationServletListener.enabled property should be set to true. This property might have a different value if not configured when starting a High Availability (HA) replica in a traditional setup. Alternatively, in a modern setup, the controller might have been in High Availability (HA) mode but was migrated to non-High Availability (HA) mode without disabling or uninstalling the High Availability (HA) plugin. A warning now appears for these inconsistencies.

Conversely, if the -Dcom.cloudbees.jenkins.replication.warhead.ReplicationServletListener.enabled=true option is specified in a non-High Availability (HA) setup, which is unnecessary, a warning message is printed in the log. The message advises removing the option and restarting.


Fixed the milestone step incompatibility with High Availability (HA)

Previously, Pipeline Milestone steps didn’t work in High Availability (HA) controllers with multiple replicas. The milestone step is now fully compatible with controllers running in High Availability (HA) mode.


Added an admin monitor to notify administrators about duplicate GitHub events.

A new admin monitor alerts Jenkins administrators if the controller receives duplicate GitHub events. Although duplicates don’t affect functionality, they slightly increase performance overhead.


The CloudBees Pipeline Explorer contextual menus have been refactored

In CloudBees Pipeline Explorer, the contextual menus in the log view, map view, and filter by tree view panel have been refactored to improve the user experience.


CloudBees Pipeline Explorer supports restarting builds from checkpoints

The CloudBees CI Groovy Checkpoint plugin (workflow-cps-checkpoint) now supports restarting a build from a checkpoint directly from CloudBees Pipeline Explorer.


CloudBees Pipeline Explorer now supports restarting builds from a stage

CloudBees Pipeline Explorer now supports restarting a build directly from a stage in the log view and map view.


UI changes in Configuration as Code bundle selection for connected controller

New radio buttons have been added to allow users to explicitly choose the source when provisioning a new connected controller through Configuration as Code. Users upgrading from a previous version of the plugin will have their configuration migrated automatically.

Resolved Issues

Check License Info asynchronously for managed controller configuration changes

Previously, when you made configuration changes to a managed controller from the operations center, the license information was checked and updated synchronously if required. This caused delays in form submissions, especially under high load. Now, the license check and update process is asynchronous, which improves responsiveness.


Adding rotated custom logs to the support bundle for High Availability (HA) controllers

The support bundle generated for controllers running in High Availability (HA) mode now includes all rotated custom logs. The rotated logs are merged and aggregated, with each entry tagged by the replica name.


plugins.yaml file incorrectly handled file-protocol URLs

The plugins.yaml file handled file:///path/to/plugin.jpi URLs but not the equivalent file:/path/to/plugin.jpi URLs. It might also have mishandled URL encoding paths with spaces or other meta characters.


StackOverflowError resuming Pipeline builds

Under specific circumstances, complex Pipeline builds could fail to resume after a controller restart, resulting in a StackOverflowError in deserialization code. This issue stemmed from excessive nesting of program objects, especially when using Declarative syntax.

Now, the stack depth added by the Declarative program structure has been reduced. This may not prevent the error in all situations. Some scripted pipelines using complex recursive function calls might still be affected. The issue is most likely to occur when mixing scripted and Declarative syntax. Avoid mixing syntax; If Declarative syntax doesn’t provide the necessary expressiveness, remove the pipeline {} block and switch to Scripted syntax.

If the error persists after this release and simplifying the pipeline script isn’t feasible, consider increasing the maximum stack size for the Java Virtual Machine (JVM). Note that this workaround increases memory usage.


If High Availability (HA) build adoption is slow, permanent agents can be acquired by other builds

When a High Availability (HA) controller replica exits, any builds it was running are offered for adoption by other replicas. Any agents currently in use by that build remain reserved for it. If the adoption process is slow (for example, if the build record takes a long time to load), a permanent (non-cloud) agent occupied by that build might incorrectly be considered available for other builds. This could result in workspace corruption as unrelated tasks run. If several minutes pass, the original build might abort.

Now, the High Availability (HA) controller records agent usage by specific builds (or build stages), ensuring that other replicas do not allow the agent to be used by any build except the same one once it is adopted.


In High Availability (HA) controllers, load balanced builds could sometimes get scheduled twice

On a HA controller, when a job configured to disable concurrent builds started a new build, a second build could sometimes be scheduled after the first build completed. Now, duplicate builds no longer occur.


In High Availability (HA) controller configurations with the inbound TCP listener disabled, permanent agents might not reconnect to the correct replica

When running a High Availability (HA) controller with the inbound TCP agent listener disabled, during a rolling restart, agents might not reconnect to the correct replica. This issue can cause running builds to pause and eventually be aborted. Permanent agents now always reconnect to the replica that owns the build using them.


CloudBees Pipeline Explorer tree view was not displayed under certain conditions

If the CloudBees Pipeline Explorer tree view was filtered and then manually closed, a display issue could occur after a refresh (either a manual refresh or a refresh due to auto-polling) that prevented the tree view from displaying.


CloudBees Pipeline Explorer browser error related to aria-hidden attribute

When opening a contextual menu from a CloudBees Pipeline Explorer stage, a browser error related to an aria-hidden attribute may have been returned. This issue has been resolved.


Display issue fixed in the CloudBees Pipeline Explorer map view

A build display issue has been fixed for downstream builds in the CloudBees Pipeline Explorer map view.


CloudBees Pipeline Explorer log view links and content could not be copied after choosing to deselect a line or range of lines

In CloudBees Pipeline Explorer, copying the URL or log content to the clipboard now works correctly, even after selecting and then deselecting a line or range of lines in the log view.


Hardening of file permissions for the Operations Center Context plugin (operations-center-context)

Previously, the Operations Center Context plugin (operations-center-context) may have used temporary directories with weak file permission to transfer files. This issue has been resolved. Appropriate file permissions are now enforced for temporary directories to transfer files.


Plugins that are not in the CloudBees Assurance Program are only downloaded when the CasC 2.0 bundle is initially applied

When using CasC 2.0 (apiVersion:2.0), if there are non-CloudBees Assurance Program plugins installed on the controller using the plugin.yaml file, the plugins are no longer unnecessarily downloaded every time the CasC bundle is applied.


User properties now propagate upon successful sign in with an API token

User properties were propagated from the operations center to controllers when signing in with a username and password using SSH. However, this did not occur when interacting with controllers that used a username and an API token. Therefore, for non-interactive users (for example, service accounts) that only called the Jenkins API using API tokens, if the operations center was unavailable, these service accounts could no longer sign in to controllers. This issue has been resolved, so user data propagation is now also performed when using API tokens.


GitHub plugin settings would not load on startup

The GitHub plugin configuration failed to load during the operations center startup. Refer to GitHub Plugin settings not loaded on startup after upgrading for more information.

Known Issues

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.


The controller and operations center fail to start when upgrading CloudBees CI

When upgrading or restarting CloudBees CI, the controller or operations center fails to start and returns a Messaging.afterExtensionsAugmented error. The operations center can also fail to start with an OperationsCenter.afterExtensionsAugmented error. Refer to CloudBees CI startup failure due to IndexOutOfBoundsException related to corrupt messaging transport files for a workaround for this issue.