Industry Use-Cases Of Jenkins
Jenkins is an open-source automation server. provides hundreds of plugins to support building, deploying, and automating any project which in turn helps in continuous integration and build automation. The basic functionality of Jenkins is to execute a predefined list of tasks i.e. as soon as there is a change in repository, triggers a pipeline that executes different jobs and performs the tasks.
WHY DO WE USE JENKINS?
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.
Jenkins achieves Continuous Integration with the help of plugins. Plugins allow the integration of Various DevOps stages. If you want to integrate a particular tool, you need to install the plugins for that tool. For example Git, Maven 2 project, Amazon EC2, HTML publisher, etc.
History of Jenkins: —
Jenkins has an early mover advantage since it has been in development since 2011. Kohsuke Kawaguchi created Jenkins (then called ‘Hudson’) while working at Sun Microsystems. Hudson was created in the summer of 2004 and the first release was in February 2005.
After the acquisition of Sun Microsystems by Oracle, a proposal was approved by the Hudson community for creating the Jenkins project. In February 2011, Oracle intended that the development of Hudson should continue hence, Hudson was forked instead of renaming it to 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.
Advantages of Jenkins
🔸 Jenkins is an open-source tool with great community support.
🔸 Jenkins is easy to install.
🔸 Jenkins has 1000+ plugins to ease your work. If a plugin does not exist, you can code it and share it with the community.
🔸 Jenkins is free of cost.
🔸 Jenkins is built with Java and hence, it is portable to all the major platforms. with well over 1,500+ plugins that allow it to integrate with most of the development, testing and deployment tools.
🔸 Jenkins is a preferred CI/CD tool by early-stage startups as well as large corporations since it has been under development since a long time.
🔸 Jenkins can be integrated with popular cloud platforms such as Amazon EC2, Google Cloud, VMWare vSphere, Digital Ocean, and more.
🔸 Jenkins Pipelines can be extremely useful for realizing CD requirements for large-scale projects.
USE CASES OF JENKINS
CASE: Netflix & 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 os package(operation system package) plugin would be executed.
Using the Nebula os 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).