Upgrade Notes
- YahooUI library disabled by default
-
Starting with this release, the YahooUI library will be disabled by default. This may cause user interface rendering issues with custom or unmaintained community (Tier 3) plugins.
If you need to reenable this library, you can use the following system property:
-Djenkins.model.experimentalflags.RemoveYuiUserExperimentalFlag.defaultValue="false"
You should make plans to remove usage of the YahooUI library in your custom plugins.
Feature Enhancements
- The
triggerRemoteJob
Pipeline step now tracks build numbers of in-progress downstream builds in certain cases -
When using the
trackProgressAwaitResult
mode of thetriggerRemoteJob
Pipeline step, the build number of the downstream job was not recorded in metadata used by build visualization tools, such as CloudBees Pipeline Explorer, until the downstream build completed. Now, the build number of the downstream job is available in metadata once the downstream job starts, as long as the job starts within the configuredstartedTimeout
time span for the step, which now defaults to one hour.
Note that other modes have different behavior. For example:
-
fireAndForget
andconfirmScheduled
do not record build numbers in metadata. -
confirmStarted
records build numbers in metadata once the downstream build starts, as long as the job starts within the configuredtimeout
time span for the step. -
awaitResult
only records build numbers in metadata once the downstream build finishes.
- Adopted the Jenkins keyboard shortcut for search
-
The CloudBees CI search feature has adopted the keyboard shortcut search changes in Jenkins, to focus the search box using CMD+K (on macOS) or CTRL+K (on Windows/Linux).
- Elasticsearch Reporter (
esr
) plugin now uses the SHA-512 hashing algorithm -
The Elasticsearch Reporter plugin previously used the SHA-1 hashing algorithm, which was considered insecure. The plugin now uses the SHA-512 hashing algorithm for signature.
- Allow administrators to provide a custom path for the
master.key
file. -
You can now store the
master.key
file in a custom location, and configure the system to fail if the file is not found.
Control this behaviour by using the following system properties:
jenkins.security.DefaultConfidentialStore.file
: Specifies an alternative path to load or store the master.key
file. If this property is unset, the system defaults to $JENKINS_HOME/secrets/master.key
, as previously.
jenkins.security.DefaultConfidentialStore.readOnly
: When set to true, this property prevents Jenkins from generating a master.key
. If the master.key file does not exist, Jenkins fails to start.
- Diagnostic for High Availability (HA) controller replicas which are slow to terminate
-
Replicas of a High Availability (HA) controller should terminate quickly when requested so that replacement replicas can take over. A recent fix in Kubernetes tightens the default termination grace period for an High Availability (HA) controller to 30 seconds. Now, if a replica fails to exit within 15 seconds, a thread dump is printed to the system log. Users can capture the thread dump for analysis, for example, if they are streaming Kubernetes pod logs.
- Support bundles generated in the background
-
When users select the button to generate a new support bundle, the bundle is generated in the background, and a progress bar is displayed. The browser no longer blocks while waiting for the bundle to generate, which can take some time. The browser prompts the user to download the support bundle ZIP file once the generation is completed.
- Aggregated logs from replicas in support bundles simplify High Availability (HA) problem diagnosis and resolution
-
Previously, the support bundle separated logs for each replica into individual files. This setup can be cumbersome when debugging High Availability (HA) issues. All replica logs are now displayed in an aggregated file to simplify this process. Each log entry includes a tag identifying the replica from which it originates. This change significantly improves the diagnosis and resolution of High Availability (HA) issues.
Resolved Issues
- Improved CloudBees Pipeline Explorer robustness in case of corrupt build metadata
-
Previously, under specific conditions, JUnit-format test results in a Pipeline build running in an High Availability (HA) controller may be malformed. This caused CloudBees Pipeline Explorer to throw an error and block the display of the build results.
This issue has been mitigated; the malformed results are now logged, allowing the display to proceed.
- Exporting Configuration as Code configurations on High Availability (HA) controllers not configured using CasC bundles fails with a
NullPointerException
error -
Previously, exporting Configuration as Code configurations on High Availability (HA) controllers not configured using a CasC bundle resulted in a
NullPointerException
error. Now, users can export Configuration as Code configurations without any problem.
- Fixed broken/incorrect links to nodes in High Availability (HA) controllers when navigating from the Manage Jenkins screen
-
Within High Availability (HA) controllers, links to agents connected to replicas other than the one holding the sticky session are handled via a reverse proxy. This reverse proxying failed when the agent URL included the
manage/
infix, as is typical of links from the Manage Jenkins screen.
- Controllers could time out waiting for responses from operations center to shared agent provisioning requests
-
In the 2.452.2.3 (June 2024) release, the Java HTTP client used by controllers to make specific requests to the operations center was changed to a different implementation. The new implementation imposed a 10-second timeout on all requests. This timeout was too short for the operations center to serve some responses, especially during shared agent provisioning under certain circumstances. While the operations center would eventually respond, the controller would time out quickly and report a non-specific network error.
The timeout has been increased to two minutes, which should be sufficient for all expected requests.
- HTTP-based shared agent provisioning did not handle errors from operations center gracefully
-
The shared agent provisioning client in a controller using HTTP transport (mandatory in High Availability (HA) controllers, but used by default on non-High Availability (HA) controllers did not properly handle provisioning failures from operations center, such as a lack of capacity for a given label despite its earlier reported availability. While the controller would recover, it first printed a verbose stack trace to the system log, obscuring the original failure details and potentially misleading users into thinking a more serious issue had occurred.
- Unnecessary delays provisioning shared agents/clouds when the leases were recently returned
-
Previously, if a controller or a replica of an High Availability (HA) controller had leased all shared agents (or agents from a shared cloud) matching a given label, a different controller or replica of the same High Availability (HA) controller may be told by operations center that this label cannot be provisioned using the shared agent system.
This misleading information could be cached for up to five minutes even after some or all of the leases have been returned by the previous owner, blocking the new controller or replica from even asking operations center whether its outstanding queue items might now be satisfiable. The queue items would eventually be scheduled, but after an unnecessary delay during which the shared agents are idle, other controller or replica might unfairly lease them out of turn.
Now, the status of labels on the controller is tied only to the static configuration of the shared agents/clouds as defined on operations center. The current lease status is only considered when deciding whether to provide an agent.
- Fixed incorrect links to downstream jobs in builds using the
triggerRemoteJob
step on High Availability (HA) controllers -
Builds using the
triggerRemoteJob
step displayed incorrect links to downstream builds in the logs, missing the mandatory trailing slash. On a High Availability (HA) controller, when the downstream build was running on other replicas, this caused an HTTP 404 (Not Found) error. These links are fixed and redirect to the downstream jobs without showing any error.
- Jenkins CLI
build
command now works with High Availability (HA) controllers -
When the Jenkins CLI
build
command triggered a build in a High Availability (HA) controller using the-f
(follow) option, the CLI displayed an error even when the build started in the controller. This behavior was confusing, as users were unsure whether the build failed to launch or thebuild
CLI command failed on the client side. This issue is now resolved. The CLIbuild
command works with High Availability (HA) controllers the same way it works with any Jenkins or CloudBees CI instance.
- Potential synchronization errors with shared agents in High Availability (HA) controllers
-
The controller-side code to track shared agents worked under normal conditions on High Availability (HA) controllers but could experience occasional file corruption or logical errors under heavy load.
- Fixed errors when loading test results from completed builds in High Availability (HA) controllers
-
If users edit a completed build (for example, adjusting the description) in an High Availability (HA) controller, and this build includes test results published by the
junit
plugin, under certain circumstances, attempts to inspect that build from a sticky session running on another replica could result in errors.
- Fixed the missing directory (
replicas/exited
) issue in High Availability (HA) support bundles -
The
replicas/exited/
directory, which contains relevant data related to exited replicas, now displays in the High Availability (HA) support bundles.
- Misleading warnings about
conhost.exe
when reconnecting inbound multi-executor Windows agent on High Availability (HA) -
When a permanent Windows WebSocket agent with multiple executors is connected to an High Availability (HA) controller using
java.exe
, someconhost.exe
processes are launched. When the main agent is disconnected and reconnects, it searches for existing Java processes corresponding to cloned executors. This search mistakenly matchedconhost.exe
processes, sometimes causing confusing messages about multiple processes already running for a given agent (executor) in the launch logs of the primary (configurable) agent.
- The stack trace for a WebSocket agent in High Availability (HA) controllers no longer displays an
HTTP 500 Server error
instead of the intendedHTTP 502 Bad Gateway error
-
Under some conditions, an High Availability (HA) controller replica proxying a WebSocket agent connection to another replica might produce an
HTTP 502 Bad Gateway error
. Due to an error, the replica instead produced an HTTP 500 error and printed a confusing stack trace in the controller log.
- Fixed broken links to builds from the Stage View plugin (
pipeline-stage-view
) on High Availability (HA) controllers -
The Stage View plugin (
pipeline-stage-view
) displayed incorrect links to builds missing the required trailing slash (/
). On an High Availability (HA) controller, this could result in HTTP 404 (Not Found) errors or other issues when the build was currently running on a different replica than the one serving the sticky session for the user.
- Authentication failures from JFrog Artifactory
-
Fixed incorrect credential coding for tokens as all the credentials were getting encoded instead of only encoding Basic Authentication credentials. This resulted in authentication failures from JFrog Artifactory, when using access tokens (
JWT
) or access reference tokens (base64
).
- Improved thread limit enforcement for cleanup in Jenkins branch workspace locator
-
When setting the
WorkspaceLocatorImpl\$Deleter.CLEANUP_THREAD_LIMIT
property, the set thread limit would increase over time as branch jobs were removed due to some incorrect logic. This could cause high thread counts in high load environments. This issue is now fixed, so the thread limit no longer increases and stays at the value initially set for the property.
- Update to Configuration as Code Items configuration UI includes Role-Based Access Control variable resolution settings
-
On the System configuration page, the CasC Items configuration section was renamed CasC Variable Resolution Configuration and the context-sensitive help to enable or disable the variable resolution was updated to include Role-Based Access Control.
To view the updated UI, go to menu:[Dashboard] Manage Jenkins > System > CasC Variable Resolution Configuration.
Known Issues
- 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.
- 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.