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.
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.
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:
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.
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.