One Pipeline To Build 'Em All
Submitted By Jenkins User Eduardo Mandry
Improving the time to market of all microservices and websites for this Chilean digital solutions company in support of a fintech client.
Industry: IT, Financial
Programming Language: Java, Node.js
Version Control System: GitLab
Build Tool: Maven, npm
Community Support: Jenkins.io websites & blogs
Great plugins and a shared library are the making of
a super flexible CI/CD platform.
Background: The company I work for provides platforms and services that are 100% digital, so the management of our solutions is more agile and simple. We found that it’s best to have a single point of integration and deployment for all teams, from developer to operations.
To have a standardized way to build and deploy applications, they need to be fully configurable as well as able to integrate with servers, code repositories and binary repositories — all while being a flexible solution, based on code.
Goals: Minimize time to market of all microservices and websites.
Solution & Results: I developed a full shared library using some plugins, direct API calls, and a brand new process. In order to simplify the use of Jenkins, the pipeline file was the same for all the projects and the shared library reads a configuration file, in a key-value format, so it handles the behavior of Jenkins.
In the new pipeline, the building, testing and validation were consistently executed. It is now able to report security issues or quality degradation. Using the same principle for the deployment part, I made building blocks – download artifacts, install, validation check, git tagging – as different procedures. So depending on the stage, whether it’s development, testing, UAT, or production, you could use one set or another. With this approach, we were able to reuse a lot of the code.
I worked with a shared library in one hand and with these great plug-ins in the other:
- Publish over SSH
- Active Choices
- Mask Password
Because Jenkins is open source, full of plugins and able to connect different services, it is the best solution available. With the help of Jenkins, we were able to:
- standardize the development and deployment process
- include quality verifications and metrics
- minimize the onboarding time for new projects
Plus, installation in production went from 30 minutes to 5 minutes!