Jenkins — Industry use cases & case study
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.
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.
- 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) & 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):
- 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)
- 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.
- 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.
Jenkins Industry use cases & case studies :
- Looking at Jenkins customers by industry, we find that Computer Software (27%) and Information Technology and Services (11%) are the largest segments.
Here are the names of the companies which use Jenkins :
How Netflix uses Jenkins :
- 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.