CloudBees is pleased to announce the newest CloudBees CD/RO long-term support (LTS) release. You can find specific information about this release in the following sections:
Starting with this release, Elasticsearch (DOIS) is disabled by default in CloudBees CD/RO Helm charts. This change aligns with the transition to OpenSearch and prevents unnecessary Elasticsearch deployments by default. If you have already migrated to OpenSearch/Analytics for your Kubernetes environment, no action is required. If you have not yet migrated to OpenSearch/Analytics, refer to the Upgrade notes. Failing to perform these steps before upgrading to v2025.06.0 may result in permanent data loss. |
Security fixes
The following security fixes and improvements have been made as part of this release:
- Fixed unauthenticated path traversal vulnerability
-
Fixed path traversal vulnerability that could allow an attacker to read arbitrary files from the server.
- kubectl updated
-
To address security vulnerabilities, the kubectl version included in agent images was updated to v1.33.0.
- Ingress-NGINX critical security mitigation
- jsPDF version updated
-
To address multiple vulnerabilities, the jsPDF library used by CloudBees CD/RO has been updated to v3.0.1.
- Apache Commons VFS2 updated
-
To address security vulnerabilities, Apache Commons VFS2 was updated to v2.10.0.
- Spring Security updated
-
To address security vulnerabilities, the Spring Security module was updated to v6.4.5.
- CloudBees Analytics updated with OpenSearch v2.19.1
-
To address security issues, OpenSearch was updated in CloudBees Analytics from v2.19.0 to v2.19.1.
- Helm version updated
-
To address security vulnerabilities, the Helm version included in agent images was updated to v3.18.0.
- Fixed unsanitized request URL input
-
A path traversal vulnerability was identified, in which unsanitized input from the request URL could be used directly as a file path. This could allow attackers to craft malicious requests that access unauthorized files or directories outside the intended location.
- Argo Rollouts updated
-
To address security vulnerabilities, the kubectl-argo-rollouts version included in agent images was updated to v1.8.2.
- ion-java library updated
-
To address security vulnerabilities, the
ion-java
library was updated to v1.10.5.
New features
The following new features are introduced as part of this release:
- New Email notification options in Stage
-
Added a Notification option in stages with a pop-up that includes Recipients, Email Notification Preview, Email Configuration, and Save/Cancel controls. Mandatory fields (Recipients and Email Configuration) must be completed when a notification type is selected. The Save option is enabled only after mandatory fields are filled; otherwise, Cancel remains available.
- Environment Inventory Component filter
-
Added an
All components
filter next to theProjects and Applications
filter, allowing users to filter the environment inventory list by components.
- Added message to skipped job run status
-
Tasks that are skipped due to pre-condition not met will be highlighted with "Skipped, Pre-condition not met" message.
Feature enhancements
The following feature enhancements have been made as part of this release:
- UI enhancement for access token expiration setting
-
Users can now configure the maximum lifetime of access tokens up to 9999 days through the UI. Setting a token with a long duration remains possible but increases the risk of unauthorized access if the token is exposed.
- Enhanced command script file
-
Added support for specifying an external script file path in commands, as an alternative to embedding Groovy code inline. The script runs in the same context as inline scripts, and logs and error messages now display the script file name for easier debugging.
- Job logs accessible after custom autoscaling scales down resources
-
Job logs now remain accessible even after custom autoscaling operations scale down resources. This ensures users can continue to debug, monitor, and audit jobs regardless of resource termination, improving reliability and traceability in dynamic environments.
- New "Include Plugin projects" checkbox
-
A new “Include Plugin projects” checkbox has been added to the Procedure List page. When selected, this option will display procedures from plugin projects in addition to standard procedures.
- Duration time field input update
-
The Duration Time field has been updated to improve flexibility and input precision. Users can now manually enter the duration in HH:MM format (24-hour clock). The field accepts values between 00:00 (minimum) and 23:59 (maximum).
- Admin control to restrict local account logins and enforce SSO
-
Admin users now have the ability to restrict other users from logging in by username and password and enforce them to use SSO login.
- Added REST API endpoint for sending emails
-
Added REST API endpoint for sending emails, supporting authentication and authorization consistent with other endpoints. Responses follow REST conventions, and the endpoint is documented in the official REST API documentation. Functionality matches the existing
sendEmail
method inectool
/ec-perl
.
- Added YAML format support to DSL sync CLI
-
Added
--format
option to thedslsync generate
anddslsync apply
commands, supportinggroovy
andyaml
outputs. If no format is specified, output defaults to Groovy for backward compatibility. YAML files are generated with correct syntax, preserving the folder structure used for Groovy. Currently, the “Project” object type is supported; other object types will be added in phase 2. For more information, refer to DSL Git Synchronization.
- Procedure runs can filter by Waiting status
-
The Procedure Runs page now supports filtering jobs in the 'Waiting' status using the All Run Statuses filter.
- Updated installed plugins navigation
-
The “All Projects” filter now includes plugin procedures, with a dedicated “Plugins” tab showing procedures. The Find, Search, and Custom Filter options now support filtering plugin procedures.
- Export environment inventory as CSV
-
An
Export as CSV
button has been added to the Environment Inventory page, allowing users to easily export inventory data to a CSV file for reporting, analysis, or record-keeping purposes.
- Automated retry count displays
-
Pipeline tasks with automated retries now display the number of retries performed, whether the task completes successfully or reaches the maximum retry count.
Resolved issues
The following issues have been resolved as part of this release:
- Validate ACL configuration modify process
-
Fixed
modifyProcessDependency
API to validate ACL configuration and return an error when required permissions are missing.
- Table widget spacing added
-
Widget table spacing added to properly wrap text. Text exceeding the 250-character limit now fully displays as hover text.
- Pipeline Audit now displays task duration
-
Fixed where task runs with pre-conditions showed incorrect durations in pipeline audit reports; task durations now display accurately for consistent reporting.
- Agent installation with UI
-
Agent installation can now be completed successfully with valid license usage.
- Improved overwrite mode handling for mixed DSL and API calls.
-
Fixed overwrite mode handling when DSL statements invoke Groovy APIs; the mode is now safely ignored in these cases.
- Accurate event timing in Release Calendar (Week and Day views)
-
Event timings in Release calendar are now accurately reflected across “weekly” and “daily” views, ensuring better planning and visibility.
- Manual task properly skipped in Smart Deploy
-
In Smart Deploy, manual tasks were not skipped during application deployments, causing property reference errors. Manual tasks are now correctly skipped after the first deployment.
- Subproject parameter export error - resolved
-
Resolved issue where a missing subproject parameter during export caused import operations to assign incorrect procedures or applications to schedules.
- Manual task completion with default parameter values
-
The Pipeline runs page now allows the completion of manual tasks even when required parameters are set to their default values.
- EC-AnsibleTower configuration import in YAML DSL
-
Fixed where importing EC-AnsibleTower configuration in YAML DSL would fail. The import process now works as expected, allowing successful configuration through YAML-based definitions.
- Running release deletion not available
-
Fixed API release deletion to prevent orphaned pipeline runs; running releases cannot be deleted.
- Accessing subfolders in CI Job tasks on HA-enabled CI controllers
-
Subfolders are now accessible as expected, ensuring consistent task configuration and execution in HA environments.
- Manual task approver assignment fix
-
Resolved the issue of manual task approver assignees being incorrectly split when DSL expressions included commas.
- Dynamic default values in Service Catalog parameters
-
In the Service Catalog, default values for catalog item parameters are now automatically populated using the "Dynamic Default Value" option. These values are based on dependencies defined in the "Default Value DSL" and are applied when parameter inputs are initially loaded during the catalog item execution.
Known issues
The following issues are included as known issues in this release:
- Web server fails to start when installing CloudBees CD/RO inside Docker container
-
When attempting to install CloudBees CD/RO inside a Docker container, the embedded web server may fail to start due to missing shared library dependencies. This issue is observed in Docker images based on certain Linux distributions, such as Ubuntu and Red Hat.<br/> <br/>
-
Errors seen during startup in Ubuntu-based Docker containers:<br/> <br/> [source, bash]<br/> ----<br/>
httpd: Syntax error on line 454 of /opt/EC/apache/conf/httpd.conf: Syntax error on line 5 of /opt/EC/apache/conf/extra/auth-kerberos.conf:<br/> Cannot load /opt/EC/apache/modules/mod_auth_kerb.so into server: libkeyutils.so.1: cannot open shared object file: No such file or directory<br/> <br/> httpd: Syntax error on line 565 of /opt/EC/apache/conf/httpd.conf: Syntax error on line 3 of /opt/EC/apache/conf/conf.d/php.conf:<br/> Cannot load /opt/EC/php/bin/libphp.so into server: libsqlite3.so.0: cannot open shared object file: No such file or directory
<br/> ----<br/> <br/> -
Errors seen in Red Hat-based Docker containers:<br/> <br/> [source, bash]<br/> ----<br/> /opt/cbflow/apache/bin/httpd: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory`<br/> ----<br/> <br/> To resolve these errors, install the missing libraries within the Docker container:<br/> <br/>
-
Workaround for Ubuntu-based containers:<br/> <br/> [source, bash]<br/> ----<br/>
apt-get install -y libkeyutils1
<br/>apt-get install -y libsqlite3-0
<br/> ----<br/> <br/> -
Workaround for Red Hat-based containers:<br/> <br/> [source, bash]<br/> ----<br/>
dnf --nodocs --assumeyes install libxcrypt-compat
<br/> ----<br/> <br/> NOTE: This issue is specific to Docker-based manual installation and does not affect installations performed via the official Helm chart or CloudBees CD/RO Traditional installation methods.
-
- Missing approval details in CloudBees CI Build Audit Report after abrupt pipeline aborts
-
In recent CloudBees CI versions (verified with v2.452.4.1), if a CloudBees CI pipeline build triggered from CloudBees CD/RO is waiting for input and is aborted abruptly (for example, via jenkins-cli.jar or by aborting the CloudBees CD/RO pipeline), the approval details for that input step are not recorded in the CloudBees CI Build Audit Report.<br/> When approvals are approved or rejected through the CloudBees CI UI, the details are captured in the audit report as expected.
- Pipeline progress does not update if sub-pipeline restart
-
When running a pipeline with sub-pipelines, the progress percentage of the main pipeline does not update correctly when a sub-pipeline is restarted.
- Widget X-axis labels may overlap if a pipeline with only a few runs is returned
-
In the Pipeline Stats dashboard, if your query returns a pipeline with only a few runs, the widget labels on the X-axis may overlap in some cases, which may cause them to be unreadable. This is issue is fixed once a greater number of results are returned.
- UI settings for Instance header can cause the navigation to disappear after updating
-
If upgrading from v2023.06.0 or earlier to v2023.10.0 or later, if
is Enabled, and has anull
value for the UI header label, the navigation may not load after an upgrade.<br/> +<br/>-
Workaround if you have already upgraded:<br/>
-
Downgrade back to the pre-upgrade version.<br/>
-
Navigate to
and set Instance header to Disabled.<br/> -
Perform the upgrade again.<br/> <br/> +<br/>
-
-
Workaround if you have not already upgraded:<br/>
-
Navigate to
, and either:<br/>-
Set Instance header to Disabled.<br/>
-
Set Instance header to Enabled, and add a value in UI header label.
-
-
-
- CloudBees Analytics server cannot be configured in legacy UI
-
On
, the messageWARNING: 'getDevOpsInsightServerConfiguration' API is deprecated.
is displayed, because Elasticsearch is no longer supported. Additionally, it is no longer possible to configure CloudBees Analytics from this page, because it is deprecated and will be removed in a future release. <br/> +<br/> To configure your CloudBees Analytics server, navigate to .
- v10.2 and earlier legacy services may cause failed upgrades and break database consistency
-
When updating from v10.2 or earlier to v10.3 or later, your upgrade may fail and break database consistency if legacy services or containers exist in your system. Additionally, even if the upgrade completes successfully with legacy services or containers present, it may still be impossible to run the
validateDatabase
API.<br/> +<br/> As a workaround, before upgrading from v10.2 and earlier, delete all legacy services and containers, and then perform the upgrade. When upgrading a clustered deployment of CloudBees CD/RO, before running the installer to upgrade, delete the contents inside thebroker-data
directory, located at<DATA_DIR>/broker-data-<hostname>
.
- Kerberos SSO sign-in issues
-
You may experience SSO sign-in issues when using Kerberos due to a link:<a href="Microsoft known issue.
dslsync apply
does not delete microservice mapping when source microservice has fewer mappings than target-
Mapping for microservices is not deleted when the source microservice contains fewer mappings than the target microservice. This mismatch of microservices occurs when the following actions are performed.<br/> <br/> On the DEV server:<br/> <br/>
-
A microservice with 1 mapping is modified.<br/> <br/>
-
dslsync apply
is used to promote DEV changes to:<br/>-
DEV Git and CD/RO instances.<br/>
-
PROD Git and CD/RO instances.<br/> +<br/> Expected/Actual Result: Both DEV and PROD data is synchronized = miroservice with 1 mapping<br/> <br/>
-
-
The microservice is renamed.<br/>
-
dslsync apply
is used to promote changes to DEV Git and CD/RO instances.<br/> +<br/> Expected/Actual Result: DEV and PROD data are NOT synchronized.<br/> <br/>-
DEV = Renamed microservice with 1 mapping.<br/>
-
PROD = miroservice with the old name and 1 mapping .<br/> <br/> On the PROD server.<br/> <br/>
-
-
Mapping is added to the microservice with the old name.<br/>
dslsync apply
is used to promote changes to PROD Git and CD/RO instances.<br/> +<br/> Expected/Actual Result: DEV and PROD data are NOT synchronized.<br/> <br/>-
DEV = Renamed microservice with 1 mapping.<br/>
-
PROD = miroservice with the old name and 2 mappings.<br/> <br/>
-
-
dslsync apply
is used to promote DEV changes to PROD Git and CD/RO instances.<br/> <br/>-
Expected Result: Both DEV and PROD data is synchronized = Renamed microservice with 1 mapping<br/> <br/>
-
Actual Result: Dev and PROD data are NOT synchronized.<br/> DEV = Renamed microservice with 1 mapping.<br/> PROD = Renamed microservice and 2 mappings.
-
-
- v10.2 and earlier legacy services may cause failed upgrades and break database consistency
-
Before upgrading from CloudBees CD/RO v10.2 and earlier, if legacy services exist in your system, upgrades may fail and database consistency may break. Additionally, even if the upgrade returns successfully, it may still be impossible to run the
validateDatabase
API. <br/><br/> As a workaround, before upgrading from v10.2 and earlier, delete all legacy services and containers, and then perform the upgrade.
- Multi-select menu options don't define specific projects of project objects
-
Currently, if a formal parameter depends on a dropdown menu to get project parameter dependencies for object-like parameters, such as
projectName
, you can select multiple options in dropdown menus. However, there is only an object name (or list of names in case of multi-select) in the parameter value with no connection to a project and without the ability to identify which object exists in which projects. <br/> +<br/> CloudBees does not recommend using multi-select options for parameters used as project parameter dependencies for object-like parameters when configuring formal parameters. This applies to the following formal parameter types:<br/> +<br/>-
Application <br/>
-
Procedure <br/>
-
Pipeline <br/>
-
Release<br/>
-
Environment
-
- Undefined parameters returned in CloudBees CI job response
-
In CloudBees CI job responses, actual parameters are returned that are not defined within the job. Additionally, saving and reloading the tasks doesn't clear undefined actual parameters.
- Catalog item objects cannot end in spaces on Windows agents
-
On Windows agents, "Export DSL" catalog item fails to export objects that end in spaces.
- CloudBees CI build logs are not accessible using
getCIBuildLog
without controller restart -
When running
getCIBuildLog
for a CloudBees CI build, the build log cannot be accessed without restarting the build CloudBees CI controller. As a workaround, restart your CloudBees CI controller, and set up a number of executors, andgetCIBuildLog
can then be used to access the CloudBees CI build logs.
flowRuntime
reports existing CloudBees CI job when switching platforms-
The
flowRuntime
response containshasCIJobs=1
if a release was started from CloudBees CD/RO and the previous release run was triggered within CloudBees CI.
- Process steps modified during runs to be manual will hang
-
When a process step that is not manual is modified to be manual after the process runs, but before the associated job step evaluated, the step hangs and adds a
java.lang.IllegalStateException: Unknown step type: manual exception
to the log.
- Events generated from CloudBees CI create URLs that cause 401 errors
-
Events that originate from the default CloudBees CI create default configurations. URLs for these new controllers are not Jenkins-configured URLs and cause 401 errors.
- Using PostgreSQL change tracking may generate errors
-
When using PostgreSQL with change tracking enabled,
EcAuditStrategy
errors may appear in the server log. This is a known issue, but is not expected to have any effect on the performance of the system.
- Artifacts can't be transferred across zones using UI
-
The CloudBees CD/RO UI does not allow you to transfer artifacts across zones.
- Data from a custom data retention policy schedule is not purged for single runs
-
When a custom data retention policy schedule is set to run once, the data is not purged after archiving. To purge data after archiving, use a repeat schedule or the global data retention setting.
MeanLeadTime
report does not work correctly without release runs-
The
MeanLeadTime
report does not work correctly when Elasticsearch only has pipeline runs but no release runs.
SyncArtifactVersions
procedure completes with success when it should fail-
SyncArtifactVersions
procedure completes with success, rather than showing a warning, when manifest is missing andoverwrite = false
.
- Automation Platform UI requires artifacts to use English characters in their file names
-
When you use the Automation Platform UI to upload and publish artifact files with non-English characters in their file names, the operation fails with the following error:
Upload file: Exit code 1: ERROR: Publish failure: Unexpected retrieval exception for repository error
.
- Must restart server to apply LDAP changes
-
Modifications of LDAP user data (such as email addresses) on an Active Directory server after registration in CloudBees CD/RO do not appear properly in user details (in the Automation Platform UI, the Deploy UI, or
ectool
) until the CloudBees CD/RO server is restarted.
- Not all Elasticsearch operations can be performed in a red state
-
(Microsoft Windows platforms only) If the Elasticsearch cluster used by CloudBees Analytics is in the red state (meaning that it only partly functions and some data is unavailable), then upgrade, reconfigure, and uninstall operations will not work. Since the Elasticsearch service cannot be stopped when a cluster is in a red state, you must stop the Elasticsearch service process from the task manager before running the installer for these actions.
- Microsoft Edge® doesn’t support SAML 2.0
-
The Microsoft Edge® browser does not work with SAML 2.0 and is missing a self-signed certificate during redirection from the identity provider to the service provider. Microsoft Edge® is not recommended for sign-in via SAML 2.0.
- LANG environment variable must be set to
en.US.UTF-8
-
The LANG environment variable must be set to
en.US.UTF-8
; otherwise, the upgrade fails. Refer to link:https://docs.cloudbees.com/d/kb-360046953992[KBEC-00452 - Error installing CloudBees CD/RO 10.0.x when theLANG
environment variable is different thanen.US.UTF-8
for details.
- Schedules missing configuration do display runtime error prompts
-
Error prompts for runtimes started by a schedule are not visible if the schedule was created with a missing configuration.
- Changing name in Release Dashboard changes stage status color
-
The stage inclusion status in the Release Dashboard changes color after a stage is renamed.
- Steps that cannot access their child steps are not retried
-
If an application process step cannot expand to its child steps (because of an invalid run condition or an invalid formal parameter), then the step is not retried even if it uses
retry on error
error handling. The job eventually completes with an error.
- Retry count missing from pipeline runtime page
-
The retry count for group tasks or rules using
automated retry on error
is missing from the Pipeline runtime page.
- Email notifications are not supported for complex environment mapping
-
Multiple mapped environments with the same name from different projects are not supported in email notifications.
- Path-to-production view missing from imported project
-
A project import might not include the path-to-production view.
- All subreleases must be present to link to a release
-
All subreleases of a release must appear before the release in the DSL for the release-to-subrelease links to be created.
- CloudBees Analytics report editor doesn’t include search by assignee
-
The ability to search by assignee in a Deployment Report is not available in the CloudBees Analytics report editor.
- Additional Release Command Center configurations for Jira
-
If Release Command Center was set up for Jira for user stories and defects, and the JIRA project name was mapped to the release project name using the field mapping
projectName:releaseProjectName
, then before upgrading to 10.0, the field mapping must be updated to mention the actual release project name using the following field mapping format:"release-project-name-in-CloudBees CD/RO":releaseProjectName
.
- Approval by email on manual tasks
-
Approval by email on manual tasks should not expect parameters.
ectool export
andectool import
should only be used between same server versions-
If you use the
ectool export
to export your system configuration from a previous release, and then useectool import
to import the same configuration to a CloudBees CD/RO 10.0 server, some out-of-the-box content introduced in the releases since the version from which the full export was done, such as new or updated plugins, new catalog items, and persona-based menu items, may be missing in the CloudBees CD/RO server UI. It is recommended to useectool export
andectool import
only between servers at the same version.
- SSO requires additional PHP configuration
-
SSO does not work unless PHP configuration is changed due to a security-related request. As a workaround, change
session.cookie_samesite
to"Strict"
in/opt/electriccloud/electriccommander/apache/conf/php.ini
and restart the web server.
- No UI to run or review pre-v10.1 triggers
-
CloudBees CD/RO v10.1 introduced new triggers and an updated UI for them. Pre-v10.1 triggers will continue to work but there is no UI to review or run them.
- Legacy definitions and references cause unexpected behavior for full data exports
-
Before using the export command to perform a full data export from the CloudBees CD/RO database, delete any legacy definitions and references to
service
objects from applications and releases.
- Reverting changes is not possible for all objects
-
You can only revert changes for high-level design objects such as applications procedures, procedure steps, workflow definitions, and state definitions.
Restarting the CloudBees CD/RO server while new records are created for all tracked objects might take at least as long as an export or import of all projects (10 to 40 minutes for a large project).
- Recursively traversing nested group hierarchies may cause performance issues
-
Enabling Recursively Traverse Group Hierarchy might impact system performance when the LDAP group hierarchy is traversed. The amount of impact varies with the configurations of the CloudBees CD/RO and LDAP servers, the depth of group hierarchy in the LDAP server, and the network latency between the servers. Ensure that your directory provider can handle the additional load for supporting nested group hierarchy traversal.
- Disabling and re-enabling change tracking may cause performance issues
-
System performance might decrease if you disable change tracking at the server level and then re-enable it. Change tracking is enabled by default. For details about using change tracking, refer to change tracking.