ARTH TASK 29
Jenkins Case Study
Hey, did you check the new filter on Instagram ?
We often are excited to use new features that come on various apps
Ever wondered how new features keep on coming in an app in such a short time?
For many enterprises, continuous delivery is key to enabling them to deliver software much more frequently, while greatly reducing the time between the creation of ideas and the delivery of production-ready software.
Continuous Integration (CI) allows you to continuously integrate code into a single shared and easy to access repository. Continuous Delivery (CD) allows you to take the code stored in the repository and continuously deliver it to production. CI/CD creates a fast and effective process of getting your product to market before your competition as well as releasing new features and bug fixes to keep your current customers happy.
What is Jenkins?
Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software.
Jenkins can be installed through native system packages, Docker, or even run standalone by any machine with a Java Runtime Environment (JRE) installed.
- Continuous Integration and 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.
2. Easy installation
Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with packages for Windows, Linux, macOS and other Unix-like operating systems.
3. Easy configuration
Jenkins can be easily set up and configured via its web interface, which includes on-the-fly error checks and built-in help.
With hundreds of plugins in the Update Center, Jenkins integrates with practically every tool in the continuous integration and continuous delivery toolchain.
Jenkins can be extended via its plugin architecture, providing nearly infinite possibilities for what Jenkins can do.
Jenkins can easily distribute work across multiple machines, helping drive builds, tests and deployments across multiple platforms faster.
Why Use Jenkins ?
Use Jenkins to automate your development workflow, so you can focus on work that matters most. Jenkins is commonly used for:
- Building projects
- Running tests to detect bugs and other issues as soon as they are introduced
- Static code analysis
Execute repetitive tasks, save time, and optimize your development process with Jenkins.
Here are some case studies of Jenkins:
At Instagram, they deploy their backend code 30–50 times a day…
Before continuous deployment, engineers deployed changes on an ad-hoc basis. They’d land changes, and if they wanted them deployed soon, they’d run a rollout. Otherwise they’d wait for another engineer to come along and do so. Engineers were expected to know how to do a small scale test beforehand: they would do a rollout targeting one machine, log into that machine and check the logs, and then run a second rollout targeting the entire fleet. This was all implemented as a Fabric script, and we had a very basic database and UI called “Sauron” which stored a log of rollouts.
They already had a test suite, but it was only run by engineers on their development machines. Code reviewers had to take the author’s word that the tests passed, and they didn’t know the test status of the resulting commit in master. So they setup Jenkins to run tests on new commits in master and report the result to Sauron.
Some tasks include doing a rollout when things were normal simply consisted of answering “yes” a couple times (accepting the suggested commit, starting the canary, and continuing to the full deploy). So they allowed these questions to be answered automatically, and got Jenkins to run the rollout script. At first engineers implementing this only enabled Jenkins when they were at their desks supervising, until they didn’t need to supervise it anymore.
Red Hat provides opensource software products to enterprises. Jenkins allowed them to automate mundane tasks so developers can focus on more important things, like optimizing and innovating.
Automatically run the software development process at a specific time while accommodating enough room for quality checks — all while avoiding having production come to a full halt while waiting for stakeholder approval.
With Jenkins’ help, Red Hat was able to accelerate the delivery of higher-quality enterprise software to their customers and the opensource community.
ITK-Engineering is a tech company that develops tailored software programs for customers in various industries. With each project team creating its own workflows and toolchain, they build a company-wide solution.
To enable software teams to provide high-quality software with fast delivery cycles for very complex domain-specific problems, they needed a solution that was well tested, widely used, and very flexible.
One CI to rule them all: Jenkins provided a common CI/CD platform for all different kinds of projects and technology domains
Cloudologia is a cloud consulting firm specializing in DevOps-as-a-Service. With Jenkins, they were able to boost their software development cycle by creating a unified CI/CD system.
To ensure that the release and deployment pipelines for Jenkins would accommodate 50+ teams of developers, all accessing centralized system settings.
Cloudologia relied on Jenkins to created a centralized system for multiple development teams that is easy to deploy in numerous clouds like AWS, GCP, and Azure.