In this blog, we are going to see how the industry uses Jenkins as a tool to simplify their CI/CD.
WHAT IS JENKINS??
Jenkins is an open-source automation tool written in Java programming language that allows continuous integration. It builds and tests our software projects which continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build.
It also allows us to continuously deliver our software by integrating with a large number of testing and deployment technologies.
Jenkins offers a straightforward way to set up a continuous integration or continuous delivery environment for almost any combination of languages and source code repositories using pipelines, as well as automating other routine development tasks.
With the help of Jenkins, organizations can speed up the software development process through automation. Jenkins adds development life-cycle processes of all kinds, including build, document, test, package, stage, deploy static analysis, and much more.
Jenkins achieves CI (Continuous Integration) with the help of plugins. Plugins are used to allow the integration of various DevOps stages. If you want to integrate a particular tool, you have to install the plugins for that tool. For example Maven 2 Project, Git, HTML Publisher, Amazon EC2, etc.
For example: If any organization is developing a project, then Jenkins will continuously test your project builds and show you the errors in the early stages of your development.
Possible steps executed by Jenkins:
- Perform a software build using a build system like Gradle
- Execute a shell script
- Archive a build result
- Running software tests.
How does Jenkins work?
Jenkins is a server-based application and requires a web server like Apache Tomcat to run on various platforms like Windows, Linux, macOS, Unix, etc. To use Jenkins, you need to create pipelines which are a series of steps that a Jenkins server will take.
Jenkins Continuous Integration Pipeline is a powerful instrument that consists of a set of tools designed to host, monitor, compile and test code, or code changes, like:
- Continuous Integration Server (Jenkins, Bamboo, CruiseControl, TeamCity, and others)
- Source Control Tool (e.g., CVS, SVN, GIT, Mercurial, Perforce, ClearCase and others)
- Build tool (Make, Ant, Maven, Ivy, Gradle, and others)
- Automation testing framework (Selenium, Appium, TestComplete, UFT, and others)
By default, Jenkins comes with a limited set of features. If you want to integrate your Jenkins installation with version control tools like Git, then you need to install plugins related to Git. In fact, for integration with tools like Maven, Amazon EC2, you need to install respective plugins in your Jenkins.
Features of Jenkins:-
- Continuous Integration & 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.
- Easy Installation — Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with packages for Windows, Mac, and other Unix operating systems.
- Easy Configuration — Jenkins can be easily set up and configured via its web interface.
- Plugins — Hundreds of plugins are available in its marketplace to easily integrate Jenkins with any tool.
- Extensible — It can be extended via its plugin architecture, providing nearly infinite possibilities for what Jenkins can do.
- Distributed — It can be easily distributed across multiple machines, helping drive builds, tests, and deployments across multiple platforms faster.
➽ USE CASES OF JENKINS ➽
- Netflix uses Jenkins for continuous integration and deployment. As soon as a line of code has been built and tested locally using Nebula(A collection of Gradle plugins built by Netflix). The first step is to push the updated source code to a git repository.
- Once the change is committed, a Jenkins job is triggered. Netflix started with a single massive Jenkins master in their data center, and now they run 25 Jenkins masters in AWS.
- Jenkins Job is configured to invoke Nebula to build, test, and package the application code. If the repository built is a library, Nebula publishes the .jar to the artifact repository and if the repository built is an application, then the Nebula package(operation system package) plugin would be executed.
- Using the Nebula package plugin, an application’s build artifact would be bundled into either a Debian or RPM package whose contents are defined via a simple Gradle-based DSL(Domain Specific Language).
In short, the most important thing is that complex workflows were solved in an easy way.
Thanks for Reading !! 🙌🏻📃, see you in the next blog.