What Is Jenkins Used For?
What Is Jenkins?
Jenkins is the most popular open source CI/CD tool on the market today. What is Jenkins used for? In almost any discussion about open source continuous integration or continuous delivery (CI/CD) tools, Jenkins will inevitably be brought up. As automation is one of the key practices that allow DevOps teams to deliver “faster, better, cheaper” technology solutions, Jenkins has become an indispensable tool in helping them achieve those goals. Jenkins has been a key enabling technology that is increasingly helping DevOps practices gain widespread adoption in many organizations around the world.
The Evolution of Jenkins Functionalities: What Is Jenkins Used For?
Although it is used by many advanced DevOps teams delivering cutting-edge, cloud-native applications, Jenkins has been around for quite a while. The project (originally called Hudson) was developed in 2004 by Kohsuke Kawaguchi while working at Sun Microsystems and released in 2005. After Oracle acquired Sun, the project was forked to remain open source and the fork was named Jenkins in 2011. Although Kohsuke originally developed Jenkins to facilitate the continuous integration for Java applications, Jenkins has since evolved to orchestrate the entire software delivery pipeline for the most popular languages and technologies used by developers around the world today. Written in Java, with extensibility at the core of its architecture, there are hundreds of plugins available that extend Jenkins to provide the flexibility to automate every aspect of the software delivery pipeline.
Development Teams Before Jenkins
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.
Continuous Delivery with Jenkins
At a high level, Jenkins solves this problem by triggering 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.
Moving Forward with Jenkins for DevOps
Looking towards the future, Jenkins has found a sweet spot in many DevOps environments. Some have even called it “the engine of DevOps”. the use of the cloud and containers. Jenkins can run in the cloud (AWS, Google, Azure, IBM, etc.), and leveraging technologies like Docker and Kubernetes give Jenkins additional flexibility, speed, and reliability to meet the demands of today’s modern cloud-native, microservices-based applications. The future looks very bright for Jenkins as a key enabling technology for CI/CD pipelines for companies around the world.
Curious on how to build a proper DevOps environments? Try our free open source stack builder tool! Use the tool to get open source technology recommendations from our team of enterprise architects from OpenLogic by Perforce.