Jenkins is used to build and test your product continuously, so developers can continuously integrate changes into the build. Jenkins is the most popular open source CI/CD tool on the market today and is used in support of DevOps, alongside other cloud native tools.
Before Jenkins, many development teams employed a nightly build as part of their software delivery process. The nightly build process required teams to commit their code to the source code repository at a certain cut-off time each day. This was even more of a challenge when working with geographically dispersed teams. A nightly build time of say, 11 pm PST would equate to 12:30 PM IST in India.
So, developers in India would be forced to commit their code in the middle of the day and then wait for the “nightly” build to run, affecting their productivity. Then, once the build completed, the development teams would often be faced with the question of, “Who broke the build?”. At this point, the development teams would scramble to determine who’s commit broke the build and the finger-pointing would begin. There had to be a better way.
How Does Jenkins Work?
Jenkins triggers a build upon every commit to the source code repository, typically to a development branch.
Jenkins can be configured to run an initial suite of unit tests to ensure that the commit did not “break the build”. If the tests do not pass, the developer can be immediately notified to take corrective action. This puts to rest the question of “Who broke to build?” as it is easy to determine which commit caused the build to fail. If all the unit tests pass, then the build pipeline can proceed to the next phase with integration tests which typically take longer to run.
Jenkins provides the ability to run a build in parallel across multiple machines to minimize the total amount of time it takes to complete many of these activities. Finally, Jenkins can deploy the build to an environment that allows for any needed user acceptance testing (UAT) before releasing it into production. These simplified steps encompass the spirit of a continuous integration (CI) environment.
To reach the holy grail of continuous delivery (CD), these UAT tests can be automated as well using a tool like Selenium, where if those tests pass, the code can be merged into the master branch were a “golden” build can be created and deployed directly into production without manual intervention. Companies that have reached the continuous delivery milestone can deploy to production many times a day, such as Amazon, Facebook, and Google.
Some of the advantages of Jenkins are -
- It is an open-source tool with great community support.
- It is easy to install.
- It has 1000+ plugins to ease your work. If a plugin does not exist, you can code it and share it with the community.
- It is free of cost.
- It is built with Java and hence, it is portable to all the major platforms.
Getting enterprise support for Jenkins can help you accelerate CI/CD.
Continuous Integration is a development practice in which the developers are required to commit changes to the source code in a shared repository several times a day or more frequently. Every commit made in the repository is then built. This allows the teams to detect the problems early. Apart from this, depending on the Continuous Integration tool, there are several other functions like deploying the build application on the test server, providing the concerned teams with the build and test results, etc.
In DevOps, when you make changes to your product, such as modifying configuration or adding new features quickly and safely by keeping the code in a deployable state all the time, we call it Continuous Delivery.
Continuous Delivery makes deployments routine affairs. The deployments could be of an embedded system or an extensively distributed system. In this process, the changes in your code get automatically prepared, tested, and built. You do so by removing the hardening, testing, and integration phases that are usually present in ‘dev complete.’
To promote open science practices and support scientific communities while serving 11k registered users in 45 countries, D4Science introduced a new delivery pipeline that replaced their pre-existing build platform.
Of course, they had to build and release their software framework (gCube) in a way that would support multi-project releases at scale — from 200+ Git repositories within the same day! It had to be fast, automate all release activities, and it had to deliver incremental releases to address user requirements quickly. Most of all, the solution had to be cost-effective.
Using Jenkins, they created an innovative approach to software delivery: a continuous integration/continuous delivery (CI/CD) pipeline, scalable, easy to maintain, and upgradable at a minimal cost.
Gainsight’s customer service experience platform helps customer success teams at more than 100 leading IT and healthcare clients. How? By driving engagement for tens of thousands of their customers.
That’s why the engineering team at Gainsight approached the customer experience by building a smarter, faster DevSecOps platform using Jenkins. They stuck to an infrastructure-as-code approach while integrating various tools and programming languages all within the platform. And they secured processes with better visibility and air-tight quality control.
The result was a flexible DevSecOps infrastructure, 95% of which is scalable with code. And the cost of infrastructure costs was 40% less. That provides Gainsight with ease of collaboration, keener operational insight, and — because builds are 30% faster — the ability to stay a step ahead of the competition.