Jenkins is the way to facilitate day-to-day work

Automating Dev Processes with Jenkins

Submitted By Jenkins User Anti Asko
CERN's Application and Services division (APS) is responsible for a leading role in all technical matters, including collaborating with users, partners, and service providers. That's why automation is key. And that's exactly what was achieved with Jenkins.
Logo
Organization: CERN's Controls Applications Services; Funding provided by Member States
Company Website: https://home.cern/
Project Website: https://be-dep-co.web.cern.ch/applications-and-services-aps
Programming Languages: Java, Node.js, Python **Platform** : Docker/Kubernetes, Linux, MacOS, Windows**Version Control System:** GitLab**Build Tool:** Gradle
Community Support: Relied on Jenkins Users Google Group or IRC Chat, Jenkins.io websites & blogs, networking at Jenkins event, and spoke with colleagues and peers

Accelerating high-quality application delivery and reducing overhead by automating dev processes.

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.

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.
Jenkins has helped our developers be much more innovative as they are no longer needed to also be infrastructure engineers.
profile picture
Anti Asko, Software Engineer, CERN

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