Introduction to Jenkins and its Industry use cases

Rohit Raut
4 min readJul 19, 2021

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 Integration is the practice of testing each change done to code automatically and as early as possible.

Continuous Delivery

Continuous delivery (CD) is a software engineering practice in which teams develop, build, test, and release software. In this phase, testing can be done with the manual approach.

Continuous Deployment

Continuous delivery is software practice in which development, build, test and release of the software is done in a short cycle without human intervention. Event testing is also an automated process in continuous deployment

Automation

Jenkins can be used to automate repetitive tasks like backup, running scripts, etc. Also used for continuous delivery and continuous deployment. To do automation Jenkins used the concept of plugins.

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?

Jenkins is, fundamentally, an automation engine that supports a number of automation patterns. Pipeline adds a powerful set of automation tools onto Jenkins, supporting use cases that span from simple continuous integration to comprehensive CD pipelines. By modelling a series of related tasks, users can take advantage of the many features of 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

Ableton Live dates back to 2001. It combines multitrack recording and sequencing with virtual instruments and sound manipulation tools that can be used to assemble a track in the studio or in a live performance setting.

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 came to Ableton from Spotify, where I worked on their Android app, third-party SDKs, and their desktop client. But previously, I’ve worked with audio apps for years, targeting end-users rather than developers. I started here working on Link, Ableton’s open-source protocol that allows devices to sync to a tempo wirelessly.

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.

Thank you for reading…

--

--