Jenkins in Action
Tags: jenkins, devops, usecases, automation
Published: 2021-03-29 18:11:29

Hello Readers🎯

Here I will be discussing what is Jenkins and discussing the Industrial Use Cases of the same.
#Introduction to Jenkins

Jenkins is a self-contained, open-source automation server that can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software. With Jenkins, organizations can accelerate the software development process through automation. Jenkins integrates development life-cycle processes of all kinds, including build, document, test, package, stage, deploy, static analysis, and much more.

It works with multiple programming languages and can run on various platforms (Windows, Linux, and macOS). It is widely used as a CI (Continuous Integration) & CD (Continuous Delivery) tool.

By using Jenkins, software companies can accelerate their software development process, as Jenkins can automate a build and run tests to ensure the functionality is working fine. Jenkins supports the entire software development life cycle that includes building, testing, documenting the software, and deploying.
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sv4qb20k45nv8ntn2iy1.png)
#Continuous Integration with Jenkins

Continuous Integration is a software development process where a code is continuously tested after a commit, to ensure there are no bugs.

Let us imagine a scenario where the complete source code of the application was built and then deployed on a test server for testing:

First, a developer commits the code to the source code repository.
Meanwhile, the Jenkins server checks the repository at regular intervals for changes.
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4cmbn9v33eu0wqdm2em.png)
Soon after a commit occurs, the Jenkins server detects the changes that have occurred in the source code repository.
Jenkins will pull those changes and will start preparing a new build.
If the build fails, then the pertinent team will be notified.
If the build is successful, then Jenkins deploys the build in the test server.
You could configure the pipeline (the script to run) to create the build with several steps:
Prepare, test (unit and integration tests), package, publish, deploy.
After running it, Jenkins generates feedback, if these constraints are ok, the artifact is valid ( artifact is a source code compiled for testing, find more info here). And then Jenkins notifies the developers about the build and test results.
Jenkins will continue to check the source code repository for further changes made in the source code, and the whole process will keep on repeating.
#Continuous Delivery (CD):
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cidsoqfgbt6v8nhb6ffa.png)
Continuous delivery is the ability to make changes of all types such as new features, configuration changes, error fixes, experimenting with production in a safe and efficient manner using short work cycles.
#Continuous Deployment (CD) 
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jpzwgpedwjzs3juxz568.png)
Continuous deployment, also known as continuous implementation, is an advanced stage of continuous delivery that the automation process does not end at the delivery stage. In this methodology, every change that is validated at the automatic testing stage is later implemented at the production stage.
Automation

We need automation so that manually, time-consuming work can be replaced with an automated approach which has the capability to work efficiently with fewer errors.
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mrch7u2oehf7j8vp8fqr.png)
#Advantages of Jenkins

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. It is free of cost.
Easy Configuration Easily Configurable, Jenkins can be easily modified and extended. It deploys code instantly, generates test reports. Jenkins can be configured according to the requirements for continuous integrations and continuous delivery.
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 using its plugin architecture, providing nearly endless possibilities for what it can do.
Easy Distribution Jenkins can easily distribute work across multiple machines for faster builds, tests, and deployments across multiple platforms.
Easy support Because it is open source and widely used, there is no shortage of support from large online communities of agile teams.

#Top Industries that use Jenkins

Looking at Jenkins customers by industry, we find that Computer Software (27%) and Information Technology and Services (11%) are the largest segments.  
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qdzdyf59u36h3ld83bua.png)
Here are the names of the companies which use Jenkins:

    Facebook
    Netflix
    Udemy
    Instacard
    Robinhood
    Twitch
    Lyft
    Delivery Hero
    LinkedIn 
#How Netflix uses Jenkins:
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ac9oujot2tulalgjdcv0.png)
Netflix, the popular movie streaming site, deploys a hundred times per day, without the use of Chef or Puppet, without a quality assurance department and without release engineers.

Code is built and tested locally using Nebula
Changes are committed to a central git repository
A Jenkins job executes Nebula, which builds, tests, and packages the application for deployment
Builds are “baked” into Amazon Machine Images
Spinnaker pipelines are used to deploy and promote the code change

Deployment at Netflix is completely automated. When a service needs to be deployed, the developer first pushes the code to a source code repository. The code push is picked up by Jenkins, which subsequently performs a build producing an application package. Then, a fresh VM image (AMI) is produced based on a base image (containing a Linux distribution) and software that all Netflix servers run, including a JVM and Tomcat, possibly further customized by the team. On top of this base install, the application package is installed. From this, an AMI is produced and registered with the system.

Jenkins is used throughout Netflix for a variety of automation tasks above just simple continuous integration. Netflix started with a single massive Jenkins master in their data-center and have evolved to running 25 Jenkins masters in AWS. A Jenkins job is configured to invoke Nebula to build, test and package the application code.

So That’s It…
#Thanks For Reading….
#Keep Leaning, Keep Hustling🎯🎯🎯