Industry use cases of Jenkins
What is Jenkins?
Jenkins is an open-source Continuous Integration server written in Java for orchestrating a chain of actions to achieve the Continuous Integration process in an automated fashion. Jenkins supports the complete development life cycle of software from building, testing, documenting the software, deploying, and other stages of the software development life cycle.
Jenkins is a widely used application around the world that has around 300k installations and growing day by day. By using Jenkins, software companies can accelerate their software development process, as Jenkins can automate build and test at a rapid rate.
It is a server-based application and requires a web server like Apache Tomcat. The reason Jenkins software became so popular is that it monitors repeated tasks that arise during the development of a project. For example, if your team is developing a project, Jenkins will continuously test your project builds and show you the errors in the early stages of your development.
What is Continuous Integration?
There are a lot of developers writing the code for the same application there is a need for the developers to know what are the changes made by other developers and they also need to update their changes to the code this is the basic need during the development of the code this kind of development is called as continuous integration. The main benefit of Continuous Integration is it helps in detecting errors quickly.
What is Continuous Delivery?
After the code passes the testing it will be further forwarded to the Quality Assurance(QA) team to check the quality, efficacy, and performance of a software release. Once the QA team finds that the code is working fine then the code is saved to the production branch. Whenever the code is saved to the production branch the code is deployed onto the production server this process of Deploying the code after the code is saved to the production branch is called Continuous Delivery.
If we look at Continuous Integration there are various steps like monitoring the code on the development branch which we need to say when to build the code and test the code here the role of Jenkins comes into play we can automate with Jenkins such a way that whenever there is a change in the code the build process needs to be started, if the build fails the code must be sent back to the developer by saying there is an error in the code causing the build to fail, if the build is successfully created then the testing must be done, if the testing fails then we need to send the code back to the developer saying that so and so test case is failing if the code passes the test cases then the code must be sent to the QA team. If humans are involved to do all these steps before deployment then it will take a lot of time and there will also be human errors hence we can use Jenkins to automate the process of continuous integration. Every step after the code is saved on the development branch can be automated which will reduce the delay a lot.
Features of Jenkins:
- Continuous Integration & Continuous Delivery — As an extensible automation server, Jenkins can be used as a simple CI server or turned into the continuous delivery hub for any project.
- Easy Installation — Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with packages for Windows, Mac, and other Unix operating systems.
- Easy Configuration — Jenkins can be easily set up and configured via its web interface.
- Plugins — Hundreds of plugins are available in its marketplace to easily integrate Jenkins with any tool.
- Extensible — It can be extended via its plugin architecture, providing nearly infinite possibilities for what Jenkins can do.
- Distributed — It can be easily distributed across multiple machines, helping drive builds, tests and deployments across multiple platforms faster.
Case Study: Netflix
Netflix is a streaming service that offers a wide variety of award-winning TV shows, movies, anime, documentaries, and more on thousands of internet-connected devices. So Netflix greatly uses Jenkins for its use case. Once a line of code has been built and tested locally using Nebula, it is ready for continuous integration and deployment. The first step is to push the updated source code to a git repository. Teams are free to find a git workflow that works for them.
Once the change is committed, a Jenkins job is triggered. Netflix’s use of Jenkins for continuous integration has evolved over the years. They started with a single massive Jenkins master in their data center and have evolved to running 25 Jenkins masters in AWS. Jenkins is used throughout Netflix for a variety of automation tasks above just simple continuous integration.
A Jenkins job is configured to invoke Nebula to build, test, and package the application code. If the repository being built is a library, Nebula will publish the .jar to our artifact repository. If the repository is an application, then the Nebula os package plugin will be executed.