Continuous Integration is the most important part of DevOps that is used to integrate various DevOps stages. Jenkins is the most famous Continuous Integration tool, I know you are curious to know the reason behind the popularity of Jenkins, and if Jenkins is easy to learn. I am pretty sure after reading this What is Jenkins blog, all your questions will get answered.
What is Jenkins ?
Before coming to our main topic of discussion ‘What is Jenkins?,’ let’s begin this Jenkins article with an introduction to continuous integration.
What is Continuous Integration?
Continuous Integration (CI) happens to be one of the most vital parts of DevOps. It is primarily used to integrate various stages of DevOps together. In other words, it is a coding practice that essentially enables the development team to make and implement small changes in the code and version control methods quite frequently.
Continuous Integration is usually done in the form where all developers push the code onto a shared repository mostly multiple times a day. It is pretty fit for a project that should be coded and developed on different platforms with multiple tools. Currently, it has become important to have such a mechanism in place to integrate and validate the changes made to the code in a parallel way.
What is Jenkins ?
Jenkins is an automation tool written in Java with built-in plugins for continuous integration tasks. It is used to continuously build and test projects making it easier to integrate the changing codes to it.
Jenkins allows for faster delivery of software by working with a large number of deployment and testing technologies. It also accelerates the development phase via the automation of tasks. It is primarily a server-based app and requires a web server like Tomcat.
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. You can set up Jenkins to watch for any code changes in places like GitHub, Bitbucket or GitLab and automatically do a build a with tools like Maven and Gradle. You can utilize container technology such as Docker and Kubernetes, initiate tests and then take actions like rolling back or rolling forward in production.
Let us understand its importance with a use-case
Companies using Jenkins
We have data on 59,079 companies that use Jenkins. The companies using Jenkins are most often found in United States and in the Computer Software industry. Jenkins is most often used by companies with 10–50 employees and 1M-10M dollars in revenue. Our data for Jenkins usage goes back as far as 5 years and 1 months.
Jenkins Market Share and Competitors in Software Development Tools
We use the best indexing techniques combined with advanced data science to monitor the market share of over 12,500 technology products, including Software Development Tools. By scanning billions of public documents, we are able to collect deep insights on every company, with over 100 data fields per company at an average. In the Software Development Tools category, Jenkins has a market share of about 10.2%. Other major and competing products in this category include:
Top Industries that use Jenkins
Continuous Integration Example: Nokia
I am pretty sure you all have used Nokia phones at some point in your life. In a software product development project at Nokia, there was a process called Nightly builds. Nightly builds can be thought of as a predecessor to Continuous Integration. It means that every night an automated system pulls the code added to the shared repository throughout the day and builds that code. The idea is quite similar to Continuous Integration, but since the code that was built at night was quite large, locating and fixing of bugs was a real pain. Due to this, Nokia adopted Continuous Integration (CI). As a result, every commit made to the source code in the repository was built. If the build result shows that there is a bug in the code, then the developers only need to check that particular commit. This significantly reduced the time required to release new software.
Who uses Jenkins?
2834 companies reportedly use Jenkins in their tech stacks, including Facebook, Netflix, and Udemy.
- 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 datacenter, 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 ospackage(operation system package) plugin would be executed.
- Using the Nebula ospackage 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)
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.
Use Case of Jenkins with Actifio
Actifio’s Virtual Data Pipeline (VDP) software platform is a data virtualization tool that allows users in different environments to access data and databases instantly in a highly efficient manner. Typically, customers will face major challenges when provisioning multi-TB datasets (data and databases) to test environments.
The challenges are not having enough storage resources to hold the datasets, demands on backup administrator and DBA time, and a time consuming restore process. Actifio addresses these challenges by provisioning virtual copies of databases in minutes regardless of the size of those databases, whilst consuming only MBs of storage.
There are many benefits of Jenkins as compared with other CI tools. Actifio in a similar way also provides tremendous value to its customers.
Why Integrate Actifio with Jenkins ?
In a music orchestra concert, a conductor provides instructions to the musicians based on the interpretation of the musical piece. Each musician must be equipped with the best musical equipment to ensure the performance is phenomenal.
Similarly, in DevOps, Jenkins is analogous to that conductor. It orchestrates or assigns the different work to the different tools during the build process. Actifio is the best database provisioning tool and it can easily integrate into Jenkins. This will ensure the databases are successfully deployed and working properly before notifying the users of the provisioned environment.
The following are some of the reasons for integrating Actifio with Jenkins:
- Historical build data: Jenkins stores a log of every deployment. This information will be very useful for troubleshooting and auditing purposes. Every database, along with the settings and version, that was provisioned for testing are stored.
- Self Services: Users can refresh databases from the Jenkins portal, enabling self-service capabilities. There is no need for them to login to servers and restart applications & database services.
- Automated: By integrating with Source Code Management (SCM), developers can commit the code, and the entire automated build process is automatically triggered resulting in code build and databases provisioned using the latest data.
Governance: Actifio can ensure that sensitive data is masked using the automated workflow features, and users are only allowed access to the masked data. It also provides visibility of which target hosts have access to which database.
- Agnostic: By decoupling the databases from compute, Jenkins can easily refresh the Actifio-managed databases without impacting the host during the refresh process. Actifio is also agnostic to any storage or compute platforms and is available on-premises and in any public cloud.