Background: To support a carrier-class application server for voice and multimedia, we wanted to achieve a more reliable CI/CD system. We needed a stable platform that would allow any developer to contribute to a 400-machine-worthy distributed system.
Goals: Simplify and modernize CI/CD architecture for the product.
Solution & Results: We used Jenkins Job Builder and Pipeline to build up a "Job-as-a-Code" deployment process and a lightweight framework of pipeline building blocks to support our requirements. This enables individuals with varying skill sets to contribute or build their own jobs to meet their project needs.
With these building blocks, we could reach feature parity with the new implementation much faster, with less code. Best of all, we could distribute our solution to other parts of the organization, reducing overall fragmentation and parallel efforts.
Jenkins provides the base infrastructure for our CI/CD pipeline. It is easy to reuse the building blocks and customize them for our specific needs. It means less boilerplate code, and more focus on actually getting things done.
To make this happen, we used Jenkins Pipeline plugins for the foundation of the solution. We also used the Lockable Resources plugin for custom test channels and Jenkins Job Builder for job deployment.
Jenkins provides the base infrastructure for our CI/CD pipeline. It is easy to reuse the building blocks and customize them for our specific needs. It means less boilerplate code and more focus on actually getting things done. This new architecture has delivered excellent results, including: