Job-As-Code Building Blocks
Submitted By Jenkins User Gábor Barna
A modernized CI/CD enables developers to move faster and implement smarter CI executions.
Programming Language: C/C++, Java, Python, Perl, Bash, Groovy
Platform: Docker or Kubernetes, Linux, Custom Unix
Build Tool: Maven, Custom Tools
Community Support: Jenkins.io websites & blogs
Multimedia telephony application server supported with powerful CI/CD.
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.
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:
- faster development
- less coding required
- more test coverage and fewer issues with the CI executions
- shared knowledge within the organization