CloudBees Assurance Program Plugins Support Configuration-as-Code for Controllers

Written by: Jeremy Hartley
4 min read

If you have been paying attention to what has been going with CloudBees CI then you will have noticed that CloudBees has been working hard at delivering Configuration as Code (CasC) for Controllers. (The term Controllers was recently selected to replace controllers). Back in early June 2020, we reached the milestone of having full support for Tier 1 plugins for Configuration as Code for Controllers. We have now also added support to all Tier 2 plugins for CasC for Controllers. The CloudBees Assurance Program (CAP) consists of both Tier 1 and Tier 2 plugins, so this means that all of the plugins covered by CAP can now be configured by CasC for Controllers. Before we talk about this major milestone let’s first talk about what configuration as code is in general.

Configuration as Code Introduction

A key concept in cloud native DevOps is Everything as Code.

In the Everything as Code world that we live in now, you can use code-management tools to deal with complex things like configuring and customizing your applications and infrastructure. This allows you to make use of tools like version control, code comparison and replication for things that you would traditionally have to configure using a point-and-click user interface.

CloudBees CI and Jenkins are no exception to the Everything as Code model. As anyone who has set up a new Jenkins instance knows, this can be a detailed, time-consuming process, especially when you’re using the Manage Jenkins UI to do everything.

Configuration as code considerably simplifies the configuration of CloudBees CI. With configuration as code, you can turn complex configurations into easily-replicated, human-readable code files (YAML). You can manage those configuration files with source code control tools like GitHub.

Plugin Configuration

So how do plugins come into this picture? As you may know, Jenkins and CloudBees CI are largely the sum of the plugins that have been installed. A lot of these plugins come with their own configuration, which is used to customize their behavior or define what they integrate with. 

Below is an example of a YAML configuration for the NodeJS Plugin. This is a plugin that executes a Node.js script as a build step.

yaml configuration as code post two

Tier 1 & Tier 2 Plugin Support

The CloudBees Assurance Program (CAP) consists of both Tier 1 & Tier 2 plugins. Tier 1 consists of both Verified & Proprietary plugins - 91 plugins to be exact. Tier 2 consists of Compatible plugins - 125 plugins in total. Enabling Configuration as Code support for CAP plugins was a huge undertaking, but a necessary one as it made the management and governance of all of them dramatically simpler. We also added test cases to make sure that future changes to the plugins don’t unexpectedly break configuration as code functionality. 

Documentation for CloudBees CI Configuration as Code 

Full documentation can be found here:

Link to Documentation for CloudBees CI Configuration as Code (Modern Platforms)

Link to Documentation CloudBees CI Configuration as Code (Traditional Platforms)

Documentation for Tier 1 & Tier 2 Plugins Supporting Configuration as Code (Modern Platforms)

Documentation for Tier 1 & Tier 2 Plugins Supporting Configuration as Code (Traditional Platforms)

Future Planned Work

The fact that all CAP plugins are configurable by Configuration as Code doesn’t mean that the work is done as far as CasC is concerned. We still have a busy roadmap. Some of the things that we are working on now are CasC support for RBAC and Folders, an API for managing configuration bundles, the ability to more easily compose multiple controller’s configurations out of different configuration bundles, CasC for CloudBees Operations Center and much more.

Community Credit

We would like to make a huge shout-out to the hard work from those within the Jenkins project. To start with CloudBees CasC is built on top of Jenkins Configuration as Code. But more importantly for the Tier-2-plugin phase of this project we were actually able to deliver early, because the community chipped in and helped CasC-enable certain key plugins. We would especially like to thank Alex Earl for his work on the Email Extension Plugin and Basil Crow for his work on the Timestamper Plugin. We would also like to thank all plugin maintainers that have helped review and merge the required changes. 

Feedback or Questions

Any feedback or questions regarding CloudBees Configuration as Code in general or support of Tier 1 and Tier 2 plugins is always welcome.

Stay up to date

We'll never share your email address and you can opt out at any time, we promise.