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.
Because Jenkins is open source, full of plugins, and is able to connect different services, it is the best solution available.
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:
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:
Plus, installation in production went from 30 minutes to 5 minutes!