Industry Use Case of Jenkins
Harshita Kumari
DevOps Engineer | Terraform/RHCSA/AWS/Azure Certified | AWS,Docker, Ansible, Kubernetes ,Terraform ,Python ,Jenkins,
WHAT IS JENKINS??
It is a free and open source automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration and continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat. It supports version control tools, including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase and RTC, and can execute Apache Ant, Apache Maven and sbt based projects as well as arbitrary shell scripts and Windows batch commands.
The Jenkins project was started in 2004 (originally called Hudson) by Kohsuke Kawaguchi, while he worked for Sun Microsystems. Kohsuke was a developer at Sun and got tired of incurring the wrath of his team every time his code broke the build. He created Jenkins as a way to perform continuous integration – that is, to test his code before he did an actual commit to the repository, to be sure all was well. Once his teammates saw what he was doing, they all wanted to use Jenkins. Kohsuke open sourced it, creating the Jenkins project, and soon Jenkins usage had spread around the world.
Jenkins is a popular self-contained, open-source automation server to perform continuous integration and build automation. Its elementary functionality is executing a predefined list of phases or jobs. In other words, every change in a repository triggers a pipeline of jobs that evaluates and executes different tasks to accomplish what has been previously defined. Each phase is monitored and allows you to stop the entire process and the change will be reported to the user by Jenkins. In large companies, it is common for multiple teams to work on the same project without knowing what the other teams are doing on the same code base. Those changes can create bugs that will only be revealed when both codes are integrated into the same branch. Since Jenkins can run its predefined jobs for every commit, it will be able to detect and notify developers that something is not right and where it is.
Features Of Jenkins
Jenkins is more functionality-driven rather than UI-driven hence, there is a learning curve involved in getting to know what is Jenkins. Here are the powerful developer-centric features offered by Jenkins:
1. Easy Installation & Configuration
Jenkins is a self-contained Java-based program, it is available for almost all the popular operating systems such as Windows, different flavors of Unix, and Mac OS.
2. Open-Source
As it is open-source, it is free for use. There is a strong involvement of the community which makes it a powerful CI/CD tool.
3. Thriving Plugin Ecosystem
The backbone of Jenkins is the community and the community members have been instrumental in the development (and testing) of close to 1500+ plugins available in the Update Center. Jenkins integrates with practically every tool in the continuous integration and continuous delivery toolchain.
4. Easy Distribution
Jenkins can easily distribute work across multiple machines, helping drive builds, tests and deployments across multiple platforms faster.
5. 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.
6. Extensible
Jenkins can be extended via its plugin architecture, providing nearly infinite possibilities for what Jenkins can do.
7. 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.
Advantages of Jenkins
● It is an open-source tool with great community support.
● It is easy to install.
● It has 1000+ plugins to ease your work. If a plugin does not exist, you can code it and share it with the community
● It is free of cost.
● It is built with Java and hence, it is portable to all the major platforms. Jenkins Features The following are some facts about Jenkins that makes it better than other Continuous Integration tools:
● Adoption: Jenkins is widespread, with more than 147,000 active installations and over 1 million users around the world.
● Plugins: Jenkins is interconnected with well over 1,000 plugins that allow it to integrate with most of the development, testing and deployment tools.
It is evident from the above points that Jenkins has a very high demand globally. Before we dive into Jenkins it is important to know what is Continuous Integration and why it was introduced.
Jenkins use cases -
Continuous Integration (CI) - Continuous integration is a practice that forces developers to frequently integrate their code into a central repository. Instead of building out new features to the end without any quality measurement, every change is tested against the central repository in order to anticipate errors. Every developer commits daily to a shared mainline and every commit triggers an automated process to build and test. If building or testing fails it can be detected and fixed within minutes without compromising the whole structure, workflow, and project. In that way, it is possible to isolate problems, solving them faster and provide higher-quality products.
Continuous Delivery (CD) - Continuous delivery is the ability to make changes of all types—such as new features, configuration changes, error fixes, experiments—into production in a safe and efficient manner using short work cycles. The main goal in continuous delivery is to make deployments predictable as routine activities that can be achieved upon request. To be successful, the code needs to always be in a deployable state even when there is a scenario with lots of developers working and making changes on a daily basis. All of the code progress and changes are delivered in a nonstop way with high quality and low risks. The end result is one or more artifacts that can be deployed to production.
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.
The fail fast strategy is always of the utmost importance when deploying to production. Since every change is deployed to production, it is possible to identify edge cases and unexpected behaviors that would be very hard to identify with automated tests. To fully take advantage of continuous deployment, it is important to have solid logging technology that allows you to identify the increasing error count on newer versions. In addition, a trustworthy orchestration technology like Kubernetes that will allow the new version to slowly be deployed to users until the full rollout or an incident is detected and the version is canceled.
Automation - As a job executor, 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. Since every job can be scheduled, repetitive tasks can have a desired time interval (like once a day, once a week, every fifth day of the month, and so forth).
SOME MORE USE CASES OF JENKINS -
1. Jenkins lowers the Effort of repeated coding - with the uses of Jenkins, one can convert a command prompt code into a GUI button click. This can be done by wrapping up the script as a Jenkins job. Parameterized Jenkins jobs can be created for customization or to take user input. Thus, hundreds of lines of code writing can be saved.
2. Integration of Individual Jobs - Jenkins jobs are usually small tools. They serve small purposes and are quite simple. Jenkins provides a pipeline plugin using which multiple jobs can be combined. Pipelining provides such benefits which Linux users can understand more than anyone. Both sequential or parallel combinations are possible.
3. Synchronization with Slack - A large team uses a centralized platform for communication. Slack is one such most popular platform. Slack integration can be done to Jenkins and thus communication such as activities have been triggered, its time, users name, results etc. can be shared with other people.
4. Effortless Auditing - Jenkins jobs, when run, capture console output from stdout as well as stderr. Troubleshooting with the uses of Jenkins is also very clear. For performance tuning each individual job, run timing can be measured and the slowest step can be identified using Time stamper plugin.
CASE STUDY:
Avoris Travel
Reinventing travel with an inventive technology platform
Challenge:
With over 200 developers relying on the company’s infrastructure, they needed a secure, easily customizable, and powerful CI/CD platform.
Solution:
Avoris Travel, a unique travel company seeking to reinvent the travel industry, relies on an equally inventive technology platform fueled by Jenkins.
Results:
- reduced build times over 50% with the flexibility of Jenkins plugins
- increased the speed of delivery with Jenkins Pipelines
- Much less problematic and simple deployments for the team
- scalable infrastructure supporting 675 agencies and over 2.8 million international consumers
Tymit
Challenge:
Create a solidly reliable CI/CD platform that provides the technology team with the agility and the flexibility needed to innovate while ensuring the security and scalability their fintech service requires.
Solution:
Tymit, a revolutionary credit card processing company, leveraged Jenkins to build a compliant, transparent and secure modern DevOps platform to drive product innovation, handle instant financial transactions and support thousands of users in real-time.
Results:
- faster delivery of mobile, microservices and operational services
- reduced software testing and release cycles by 50%
- ability to support thousands of users for real-time transactions
- created a secure, controlled and compliant fintech environment.
Benefits of Jenkins
1. Jenkins is an open-source tool that is extremely easy to install and use. You need no extra components to use it
2. It is free and available to be used with different platforms, such as Windows, Linux, macOS, and others
3. It is widely used, so finding support on online communities is not a big problem
4. Jenkins automates all integration work. Integration issues are scarce, and so, it helps in saving time and money over the project lifecycle.
5. It is easy to configure, extend, and modify. It allows the instant generation of tests and building, automation, and deployment of code on different platforms
6. Jenkins can be configured to run CI and CD concepts properly
7. It can easily detect and fix issues. The software is always ready for a sudden release
8. Supports a variety of plugins, which allows better flexibility
9. It helps in detecting errors very early, thus saving developers a lot of time and hard work
Hope you find it informative. THANKYOU :)