Jenkins Smart Pipeline — Part 1
In this article we will talk about how we use Jenkins Smart Pipeline across all of our projects at Rezdy.
We‘ll cover the approach we are using and how it helps our engineering teams build & release through Jenkins.
The series will be split across 3 episodes:
- The different types of projects we manage with Jenkins at Rezdy
- What is Jenkins Smart Pipeline?
- Using Jenkins Smart Pipeline
Rezdy Projects
First, let’s take a look at the various tech stacks we have here at Rezdy.
We currently have a wide variety of projects, crafted using different languages & deployment processes
- Java WAR running on Payara and deployed on AWS ECS
- Spring boot projects deployed on AWS ECS
- Node project deployed on AWS ECS
- PHP running on an Apache server deployed on AWS ECS
- Java and Typescript libraries published in our Nexus repository
- Java and Node Lambdas deployed through the Serverless framework
- React projects deployed into S3 Buckets and served with Cloudfront
What we used to do with Jenkins
In order to reduce code duplication, we are using Jenkins Shared Libraries in all of our projects, with most of the logic inside the shared library, such as:
- Build process
- Unit & Integration tests
- Static code analysis
- Deployment process to AWS
- etc…
However, all the stages were still defined in the main Jenkinsfile for each project
The main issue with this approach is, that any changes to a specific stage or method would require an update to the Jenkinsfile for each project.
For example, adding a new stage for a React project would require an update that adds the new stage to each Jenkinsfile for all React projects.
As continue to grow and introduce more projects, it quickly became obvious that Jenkinsfile duplication was not a scalable solution.
Conclusion
On the first part of this article, we talked about the different type of projects we currently have at Rezdy, and how we were using Jenkins Pipeline to build and deploy these projects.
In the next episode we‘ll talk about how we are using Jenkins Smart Pipeline to overcome the challenges we faced when developing a scalable solution.