Release highlights video

Select to watch a video describing the highlights of this release

Critical issues

Critical upgrade issues for customers using CloudBees Configuration as Code (CasC)
  • If using CasC for controllers to create Pipeline jobs, Multibranch Pipeline jobs, GitHub Organizations, or BitBucket Teams/Projects, you must add the cloudbees-casc-items-controller plugin to the controller’s plugins.yaml file during the upgrade process, before the first restart of the controller. Otherwise, the controller instance fails to restart after the upgrade and an Invalid kind error is returned.

    SEVERE	hudson.util.BootFailure#publish: Failed to initialize Jenkins
    com.cloudbees.jenkins.plugins.casc.CasCException: Invalid kind [multibranch].

    For more information, refer to Creating a CasC bundle for controllers

  • If configuring a managed controller to be automatically provisioned with CasC, you must add the cloudbees-casc-items-server plugin to the operations center’s plugins.yaml file during the upgrade process, before the first restart of the operations center. Otherwise, the operations center instance fails to restart after the upgrade and an Invalid configuration elements error is returned.

    SEVERE	jenkins.InitReactorRunner$1#onTaskFailed: Failed ConfigurationAsCode.init
    io.jenkins.plugins.casc.ConfiguratorException: Invalid configuration elements for type class jenkins.model.GlobalConfigurationCategory$Unclassified : cascAutoControllerProvisioning.

    For more information, refer to Creating a CasC bundle for the operations center.

  • If using CasC for the operations center to create Cluster Operations or controllers, you must add the cloudbees-casc-items-server plugin to the operations center’s plugins.yaml file during the upgrade process, before the first restart of the operations center. Otherwise, the operations center instance fails to restart after the upgrade and an Invalid kind error is returned. For example:

    SEVERE	hudson.util.BootFailure#publish: Failed to initialize Jenkins
    com.cloudbees.jenkins.plugins.casc.CasCException: Invalid kind [managedController].

    For more information, refer to Creating a CasC bundle for the operations center.

The cloudbees-casc-api plugin can also be removed from the controller and operations center plugins.yaml file.

New features

Customizable labels can now be added to the CloudBees CI header (BEE-9021)

You can now create custom labels that are displayed in the CloudBees CI header to easily identify the environment or instance.

The header label can be used to:

  • Indicate the team name or project for an individual controller.

  • Add a label to a set of controllers. For example, if some controllers within a cluster are Production controllers or require a special designation.

  • Indicate the type of environment for a complete cluster, such as Development, Staging, or Production.

The header label text can be configured from the Manage Jenkins Configure System screen, using CasC, or initialized using a System property.

Feature enhancements

Managed controllers created using Configuration as Code (CasC) for the operations center can now be automatically provisioned (BEE-9236 and BEE-9403)

When a managed controller is created using CasC for the operations center, it can now be automatically provisioned.

  • A new optional provisionControllerOnCreation property can be added to the operations center jenkins.yaml file to automatically provision managed controller items created using CasC for the operations center.

  • A new CloudBees CasC Automatic Managed Controller Provisioning option has been added to the operations center’s Configure System screen to enable the automatic provisioning of managed controller items created using CasC. This option is disabled by default.

Folder items can now be exported using Export CasC item (BEE-9432 and BEE-10378)

Individual folder items can now be exported in YAML format using the Export CasC item option in the left pane of the operations center and controller dashboards. Previously, folders could only be exported from the Configuration as Code export and update screen, as part of the entire items.yaml file. For more information, refer to:

Exporting an individual CasC item is not supported for the auto-generated children of folder-type items for Multibranch Pipeline jobs, GitHub Organizations, and Bitbucket Teams/Projects.
CloudBees CasC API plugin has been split into multiple plugins (BEE-9439 and BEE-9943)

The CloudBees CasC API plugin has been split into four plugins:

  • CloudBees CasC Client plugin: Allows you to export the current CasC configuration and update a CasC bundle. For more information, refer to CloudBees CasC Client plugin.

  • CloudBees CasC Items API plugin: Allows you to create a new item in the operations center based on an items.yaml file stored in the local filesystem and to export an individual CasC item in YAML format from the operations center and controllers. For more information, refer to CloudBees CasC Items API plugin.

  • CloudBees CasC Items Commons plugin:

    • Allows you to create Folders, Freestyle jobs, and Backup items for the operations center using the CasC items.yaml file.

    • Allows you to create Folders, Freestyle jobs, Backup, and Restore items for controllers using the CasC items.yaml file.

      For more information, refer to CloudBees CasC Items Commons plugin.

  • CloudBees CasC Items Controller plugin: Allows you to create Pipeline, Multibranch Pipeline, GitHub Organization, and Bitbucket Teams/Projects items for controllers using the CasC items.yaml file. For more information, refer to CloudBees CasC Items Controller plugin.

    The CloudBees CasC Items Controller plugin is not supported for the operations center and should not be installed.

These plugins are included in the CloudBees Assurance Program (CAP). The CloudBees CasC API plugin has been deprecated and can be uninstalled. For more information, refer to Uninstalling plugins from CloudBees CI.

CloudBees CasC Server plugin has been split into multiple plugins (BEE-9443)

The CloudBees CasC Server plugin has been split into two plugins:

  • CloudBees CasC Items Server plugin: Allows you to create controller and Cluster Operations items for the operations center using the CasC items.yaml file. For more information, refer to CloudBees CasC Items Server plugin.

  • CloudBees CasC Server plugin: Allows you to manage controller CasC bundles. For more information, refer to CloudBees CasC Server plugin.

These plugins are included in the CAP.

The CloudBees Pipeline Template Catalog is now compatible with Jenkins Configuration as Code (BEE-5283)

The CloudBees Pipeline Template Catalog can now be configured using Jenkins Configuration as Code YAML files.

Operations center and controller header labels included in product usage events (BEE-9900)

The operations center and controller header labels are now included in the list of events and properties that is sent to CloudBees for tracking product usage, including:

  • If a controller is configured to receive header label updates from the operations center.

  • When a label is updated or configured.

  • Periodic events with label configuration information.

    The contents of the label are not collected. Details for collected events and properties can be found at: $JENKINS_URL/cloudbees-analytics-summary/.
If a CasC bundle contains subfolders, the contents of the folder are now read in alphabetical order (BEE-9979)

If a CasC file contains subfolders that are included in the bundle.yaml descriptor, the contents of the folders are now read in alphabetical order based on the name of the file or subfolder. Previously, the contents of subfolders were not read in a deterministic method.

The top-level entries in the bundle descriptor are still read in order of appearance.
The ProjectPassivator that handled passivating projects during Move/Copy/Promote operations was tied to specific project types (BEE-9449)

This change enhances the ProjectPassivator to be more generic so that it can also handle WorkflowJob.

Resolved issues

Regression was identified in the tar extraction functionality when working with symbolic links

A regression was identified in the tar extraction functionality that is built into Jenkins when working with symbolic links. For Pipeline jobs, the unstash step was known to be affected. This was tracked as JENKINS-67063.

This issue has been resolved.

Controller Configure and Lifecycle permissions were not available during the first startup of the operations center instance (BEE-8968)

The controller Configure and Lifecycle permissions were defined in a regular class, rather than an extension, and were not available during the startup process of the operations center instance.

This issue has been resolved.

An operations center component wrote log messages to the Jenkins home directory, resulting in missed fixes from Jenkins core (BEE-9211)

An operations center component used outdated and customized logic to periodically write log messages that were saved in the root of the Jenkins home directory, resulting in various missed fixes from Jenkins core.

This issue has been resolved and standard logic is now used.

The Purge deleted bundles configuration was not exported as a CasC item (BEE-9299)

If a Freestyle job included a Synchronize bundles from workspace with internal storage build step, and the Freestyle job was exported as a CasC item, the option to Purge deleted bundles from the operations center was not included in the exported CasC items.yaml file.

This issue has been resolved.

The CasC Reload Configuration option failed to reload the CasC bundle (BEE-9966)

If a CasC bundle was modified and Reload Configuration was selected from the Configuration as Code bundle export and update screen, the bundle was not properly reloaded until the instance was restarted.

This issue has been resolved. If Reload Configuration is selected, the bundle is now reloaded without restarting the instance.

Usage Statistics settings were not preserved after a restart (BEE-9988)

If a new instance was restarted without saving the configuration settings, the default Usage Statistics settings on the Manage Jenkins Configure System screen were not preserved and the instance stopped sending product usage data.

This issue has been resolved.

An invalid CasC bundle resulted in controller initialization failure and returned a NullPointerException (BEE-10088)

If a controller failed to initialize due to an invalid CasC bundle, the controller shut down and a NullPointerException was returned.

This issue has been resolved.

Use the specified Jenkins proxy when validating the Kubernetes plugin configuration (BEE-100190)

Although the Jenkins proxy was correctly being used to access the API, it was not being used to validate the connection if you selected Use Jenkins Proxy when you configured the Kubernetes plugin.

This issue has been resolved. The Jenkins proxy is now properly used to test the connection.

Compatibility fix for Jenkins core version 2.311 and later (BEE-8586)

A library change was detected in Jenkins core version 2.311 that could have broken some functionality.

A compatibility fix has been applied; this issue is resolved.

Removed the thread blocking action on icon rendering (BEE-9587)

A blocking thread was causing delays in the rendering of an icon.

This fix removes the blocking.

Resolved issue with SFTP backup failures (BEE-9658)

When you used the Jenkins CLI tool to perform backups to an SFTP server using an SSH username and key pair, the backups failed due to an issue with credentials validation.

This issue has been resolved. The underlying validation class was updated to use the correct credential validation method.

Screen resolution cookies are not marked as secured (BEE-9081)

When accessing the operations center, a cookie stores the screen resolution. However, it does not have the secure flag set.

The screen resolution cookie now has the secure flag set when Jenkins is running on HTTPS.

Jenkins.RUN_SCRIPTS permission has been deprecated but was still used in the workflow-cps-global-lib plugin (BEE-9663)

The code has been updated to use Jenkins.ADMINISTER in place of Jenkins.RUN_SCRIPTS.

Updates to JSoup library (BEE-8497)

A scan detected a new CVE for JSoup library, as part of the email-ext plugin.

The JSoup library has been updated.

Updates to commons-compress-1.20(Java) in Jenkins Core (BEE-8530) (BEE-8534)

A scan reported 2 findings for commons-compress-1.20(Java) in Jenkins Core.

The commons-compress has been updated to version 1.21.

Known issues

None.

Upgrade notes

Safely upgrading the Amazon Web Services SDK plugin

The Amazon Web Services (AWS) SDK plugin (aws-java-sdk) was split into multiple fine-grained plugins in version 2.303.3.3 to reduce the size of the CloudBees CI packages. As a result, it is no longer a part of the CloudBees Assurance Program. The plugin is not automatically uninstalled from your CloudBees CI instance and it could lead to an inconsistent state when you upgrade.

If you perform the installation using CasC and the plugins.yaml file contains aws-java-sdk, the installation will fail. To resolve the failed installation, you must add any plugins that are dependent upon the AWS SDK plugin to the plugins.yaml and the plugin-catalog.yaml files. To avoid upgrade issues, you should use the Plugin Manager to safely upgrade the AWS SDK plugin.

Helm chart migration

On January 25, 2022 CloudBees will migrate all public Helm charts to GCP. From then on, all CloudBees Helm charts will be available publicly from https://public-charts.artifacts.cloudbees.com/repository/public/.

Requests made to https://charts.cloudbees.com will be automatically redirected to https://public-charts.artifacts.cloudbees.com/repository/public/. However, if you’re using a proxy or if your firewall uses IP-based filtering, you may need to add and use the new URL and the IP address 35.231.215.240.

Terminology migration impacts to nodes (BEE-10599)

As part of the Jenkins terminology cleanup effort, the built-in node was renamed from "master node" to "built-in node" in Jenkins 2.319.1.5. This affects CloudBees CI customers with multiple controllers under the CloudBees operations center.

After upgrading to CloudBees CI 2.319.1.5, existing controllers will continue to use the label master until the administrator chooses to apply the built-in node name and label migration. For more details about the naming migration, refer to: https://www.jenkins.io/doc/book/managing/built-in-node-migration/.

Announcing plans for removal of several plugins from CloudBees Assurance Program

CloudBees has determined that the following plugins will be removed from the CloudBees Assurance Program (CAP) late next year. Notification will be provided prior to the removal of each plugin. Please contact CloudBees Support if you have any concerns or questions.

  • Azure Publisher Settings Credentials plugin

  • Blue Ocean Auto-favorite

  • Build Timeout

  • CloudBees Amazon Web Services Deploy Engine plugin

  • CloudBees Docker Build and Publish

  • CloudBees Even Scheduler plugin

  • CloudBees Fast Archiving plugin

  • CloudBees Git Validated Merge plugin

  • CloudBees Label Throttling plugin

  • CloudBees Long-running Build plugin

  • CloudBees Pull Request Builder for GitHub

  • CloudBees WikiText Security plugin

  • Conditional BuildStep

  • Dashboard View

  • Deployer Framework

  • Deployed on Column

  • External Monitor Job Type

  • JavaScript GUI Lib:Moment.js bundle plugin

  • Jenkins MSBuild plugin

  • Jenkins MSTestRunner plugin

  • Jira

  • Jira Integration for Blue Ocean

  • Matrix Project

  • Maven Integration

  • Mercurial

  • Parameterized Trigger

  • Pipeline: Declarative Agent API

  • Promoted builds

  • Run Condition

  • View Job Filters

  • WMI Windows Agents

Jenkins upgrade notes

https://www.jenkins.io/doc/upgrade-guide/2.319/