Background: The Application and Services section of CERN (APS) provides generic data management services and comprehensive software solutions needed within the Accelerator & Technology Sector. APS is responsible for a leading role in all technical matters, collaborating with users, partners, and service providers. This collaboration covers requirement analysis and data modeling, design and implementation of the corresponding data repositories, server-side processes, client APIs, and generic user-oriented applications. That’s why it was imperative that CERN’s software was error-free and that CERN developers were able to focus on building high-quality applications as opposed to QA and testing processes. Automation was key.**
Goals: The main challenge we hoped to solve with Jenkins was to facilitate day-to-day work by automating repetitive, error-prone steps in delivering our tools to our end-users. We wanted to lower daily work overhead by automating the building and testing process through merge requests integration between Gitlab and Jenkins. Moreover, we sought to automate the continuous integration and delivery of our web applications to eliminate any human errors from the process.
"Jenkins has helped our developers be much more innovative as they are no longer needed to also be infrastructure engineers."
Solution & Results: We put Jenkins in the middle of our development process. Here’s how: **
We merged every request trigger to build on the branch. In this way, we are able to make sure no failures are faced while it deploys a provision dockerized instance.
We merged every branch trigger on dev as an integration build on dev branch. It automatically deploys a dev instance of our applications (with the help of Ansible software) to make sure everything works as expected.
We automated a release process with a series of Jenkins jobs that builds the applications and deploys them to the appropriate servers.
By adding Jenkins into development, we significantly lowered our delivery time and removed overhead from the process. The integration with Gitlab and Artifactory was also a huge help in this endeavor. Since we could now run our e2e tests with the help of xvfb plugin, it allowed us to automate parts of the QA process on Jenkins. By automating our development process, Jenkins does the heavy work of building, testing, releasing, and deploying, giving developers more time to focus on developing new features and delivering high quality applications. It also drove significant results, including:**
improved product quality proven by user’s feedback
significant shorter release cycles
lower development overhead and manual intervention
faster delivery of hotfixes