Industry Usecases Of Jenkins
Hello connections!! In this blog i am going to talk about Jenkins which is a automation tool/ software, mostly used in industry to automate the software development to building, testing and deploying.
What is Jenkins ?
Jenkins is free and open source software, used for automation. Jenkins helps to automate the parts of software development related to building, testing and deploying. It implements the concept of continuous integration and continuous delivery. Jenkins is the most widely adopted solution for continuous delivery.
Jenkins supports the complete development lifecycle of software from building, testing, documenting the software, deploying and other stages of a software development lifecycle. Jenkins is free and is entirely written in Java. It is a server-based application and requires a web server like Apache Tomcat. The reason Jenkins became so popular is that of its monitoring of repeated tasks which arise during the development of a project. Jenkins manages and controls software delivery processes throughout the entire lifecycle, including build, document, test, package, stage, deployment, static code analysis and much more.
History
The Jenkins(initially known as Hudson) project was developed by Kohsuke Kawaguchi, in 2004. He worked for Sun Microsystems. he was a developer at sun and got tired of incurring anger of his team every time when his code failed to build. He created Jenkins as a way to perform continuous integration. Continuous Integration(CI) is a development practice where developers integrate code into a shared repository frequently, preferably several times a day. Each integration can then be verified by an automated build and automated tests.
What are the Jenkins Features?
- Free Open Source :- Jenkins is an open-source resource backed by heavy community support.
- Easy Installation :- Jenkins is a platform-agnostic, self-contained Java-based program, ready to run with packages for Windows, Mac OS, and Unix-like operating systems.
- Easy Configuration :- Jenkins is easily set up and configured using its web interface, featuring error checks and a built-in help function.
- Available Plugins :- There are hundreds of plugins available in the Update Center, integrating with every tool in the CI and CD toolchain.
- Extensible :- Jenkins can be extended by means of its plugin architecture, providing nearly endless possibilities for what it can do.
Jenkins Architecture
- Developers commit changes to the source code, found in the repository.
- The Jenkins CI server checks the repository at regular intervals and pulls any newly available code.
- The Build Server builds the code into an executable file. In case the build fails, feedback is sent to the developers.
- Jenkins deploys the build application to the test server. If the test fails, the developers are alerted.
- If the code is error-free, the tested application is deployed on the production server.
Jenkins Master-Slave Architecture, as you can see in the diagram provided above, on the left is the Remote source code repository. The Jenkins server accesses the master environment on the left side and the master environment can push down to multiple other Jenkins Slave environments to distribute the workload. Supported on a master-slave architecture, Jenkins comprises many slaves working for a master. This architecture - the Jenkins Distributed Build - can run identical test cases in different environments. Results are collected and combined on the master node for monitoring.
Use Cases
Continuous Integration :- Continuous Integration (CI) is the development practice where developers integrate code into a shared repository frequently. A good CI setup speeds up your workflow and encourages the team to push every change without being afraid of breaking anything. It also brings great business benefits as well.
Continuous Delivery :- Jenkins helps in making changes like configurations, error fixes in production in a safe and efficient manner using short work cycles.
Automation :- Jenkins can be used to automate repetitive tasks like backup/restore databases, turn on or turn off machines, collect statistics about a service and other tasks.
Jenkins with GitHub
GitHub is a web-based repository of code which plays a major role in DevOps. It provides a common platform for multiple developers working on the same code/project to upload and retrieve updated code, thereby facilitating continuous integration. Jenkins needs to have GitHub plugin installed to be able to pull code from the GitHub repository.
With the help of the Git Plugin Jenkins can easily pull source code from any Git repository that the Jenkins build node can access. The GitHub extends upon that integration further by providing improved bi-directional integration with GitHub. Allowing you to set up a Service Hook which will hit your Jenkins instance every time a change is pushed to GitHub.
Jenkins with Netflix
Jenkins has been a central part of the Netflix build and deploy infrastructure for several years now, since it started in 2011. The year was 2012 and operating a critical service at Netflix was laborious. Deployments felt like walking through wet sand. Canarying was devolving into verifying endurance (“nothing broke after one week of canarying, let’s push it”) rather than correct functionality. Researching issues felt like bouncing a rubber ball between teams, hard to catch the root cause and harder yet to stop from bouncing between one another. All of these were signs that changes were needed.
Netflix 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.
Hope you got knowledge about Jenkins from this blog
Thank you!