Introduction to Jenkins and its Industry use cases

Jenkins is an open-source continuous integration server that helps developers by orchestrating a chain of actions to achieve the continuous Integration process in an automated way. Jenkins is an open-source automation tool written in java that automates some of the software development lifecycle tasks like build, test, deploy, and more. In this article, we will discuss how to configure the Jenkins master-slave setup also called master-slave or master-agent architecture.

Continuous Integration

Continuous Delivery

Continuous Deployment

Automation

What is Jenkins Pipeline?

From Google

Jenkins Pipeline (or simply “Pipeline”) is a suite of plugins that supports implementing and integrating continuous delivery pipelines into Jenkins.

A continuous delivery pipeline is an automated expression of your process for getting software from version control right through to your users and customers.

Jenkins Pipeline provides an extensible set of tools for modelling simple-to-complex delivery pipelines “as code”. The definition of a Jenkins Pipeline is typically written into a text file (called a Jenkinsfile) which in turn is checked into a project’s source control repository. [1]

For more information about Pipeline and what a Jenkinsfile is, refer to the respective Pipeline and Using Jenkinsfile sections of the User Handbook.

Why Pipeline?

  • Code: Pipelines are implemented in code and typically checked into source control, giving teams the ability to edit, review, and iterate upon their delivery pipeline.
  • Durable: Pipelines can survive both planned and unplanned restarts of the Jenkins controller.
  • Pausable: Pipelines can optionally stop and wait for human input or approval before continuing the Pipeline run.
  • Versatile: Pipelines support complex real-world CD requirements, including the ability to fork/join, loop, and perform work in parallel.
  • Extensible: The Pipeline plugin supports custom extensions to its DSL [1] and multiple options for integration with other plugins.

Case Study

Twenty-One Years of Ableton Live

Musicians around the world compose, record, mix and edit audio and MIDI data in Ableton Live. Our intuitive arrangement and session views provide a blank canvas for musicians looking to create their next masterpiece.

There’s a lot of competition in this market. Apple bundles GarageBand with every Mac and iOS device. At the other end of the spectrum, professional recording studios have been using Avid’s Pro Tools to record, mix, and master audio for over 31 years.

Our other commercial and open-source competitors include Apple’s professional-grade Logic Pro X, FL Studio, and Audacity.

Live is a mature product in a mature market. But we are continually adding new features, integrating new hardware, and making sure our product is compatible with the current and legacy versions of multiple operating systems.

We are now at version 10 of Ableton Live. Every major upgrade and minor maintenance release comes with its share of challenges. That’s why we go through a rigorous development and testing cycle to ensure that every time we refresh our application, everything works from day one.

This process can be extremely complicated because Live contains millions of lines of C++ code and a sizeable legacy codebase. Compared to newer languages such as Java and Python, C++ can be tricky to develop and debug.

Learning About Application Testing at Spotify

I didn’t have much experience working on back-end services when I started here, but I understood how the development cycle worked. Back at Spotify, we used the BVT — build verification test — method to accelerate the release of our desktop player. We’d select perhaps a dozen of the most important tests and run them on every commit and pull request.

On merges to master, we’d run a larger number of acceptance tests, which took longer. These builds rarely failed, but when they did, we knew that the new version was indeed broken, and we could go back and repair our code before merging again.

Follow me for more interesting articles.

Aspiring Cloud DevOps Engineer