What is Jenkins?
- Jenkins is a continuous integration automation tool (open source) which is installed on the server where build takes place. Continuous Integration refers to a process where developers commit their code into a commonly created repository as soon as they complete the development.
- In the CI/CD process also results in increased overhead and hence we have pipelines in Jenkins to maintain the users and permissions tagged to them. The same is applied to increasing projects.
- Once the building increase, the corresponding need increases to create test agents along with their maintenance.
Definition Of Jenkins –
- The definition provided for Jenkins by Jenkins.io is as follows –
“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”.
- So when the concept of continuous integration or continuous deployment is introduced then tools like Jenkins and circleCI come into the picture. But here we would be talking about Jenkins only.
Understanding Jenkins –
- Continuous integration pipeline is a set of sequential or parallel jobs, these jobs are designed to perform a set of tasks which are configured using the GUI interface.
- As it got difficult to maintain the increasing number of projects, build, build revisions and copies, so the concept of Jenkins pipeline is introduced. This pipeline is called as jenkinsfile.
- Jenkins also supports the docker and kubernetes like technologies where microservices are run.
- At times there appears certain kind of issues like slowness due to the massive amount of logs getting generated.
- Jenkins can result in high CPU usage, proportional to the number of users accessing the Jenkins.
- Jenkins is vertically ( requires the hardware upscaling) and horizontally scalable (requires multiple Jenkins masters).
- It is seen that having a single Jenkins master is pleasant, but the tradeoff has to be set between the availability and ease of handling, as in case the single master gets down then it will halt the business.
- Jenkins slaves equally contribute testing along with the building, Jenkins provides the concept of parallel testing that makes the pipeline faster too.
- High availability is provided along with failover handling with primary and secondary systems.
How Jenkins Works –
Before you start working with Jenkins there are certain pre-requisites those are to be met.
The recommended hardware is as follows –
- RAM >= 1GB
- Drive Space >= 50 GB would suffice.
The Software pre-requisites are as follows-
- Windows/Linux (preferably)
- JDK 8
- Servlet 3.1 compliant web containers have to be there.
There are two architectures in which we can make the design –
- Master-slave architecture
- Master-master architecture
- We can set up the slave nodes from “Manage Nodes” page. Then specify the nodes and their names, then set the properties of nodes, associate slaves to masters and then start the slave nodes.
- There are certain base technologies that shall be there are –
- Node package manager and GIT
- Eclipse IDE and Maven
- Junit or selenium like testing tools for automated testing
- Any environments like Docker (preferably) would do.
It works in three stages – Prebuild actions, Build Actions and Post Build Actions
In the PreBuild actions – There are JS minimizers to minimize and compress the code before putting it into the build, this is done using pre-build plugins. Along with this ant builder can be invoked in required cases, window batches, shell commands can be executed and maven targets can be invoked to provide the configuration files.
The prebuild plugins do code push, polling, compiling, packaging and publishing.
In the Build Actions stage – The code submitted to this stage from the previous stage is compiled and tested.
In the Post Build stage – here codes are archived to the deployable formats and finally, they are pushed.
Why shall we use Jenkins –
- Compatible to deploy the microservices with kubernetes and docker
- The next application era would be of microservices based development only, as the need for scalability and availability arises for certain services only in maximum application scenarios. So the deployments and services can be pushed in an automated manner with Jenkins, just you need to give it shell scripts in the input and it can do rest of task for you.
- The pipeline is supported.
What can you do with Jenkins –
- Create a process in two architectures as mentioned above.
- If you want just one master you can go with that approach, if you need to match the availability constraints then you can go with many masters.
- There are many open source plugins to handle multiple jobs in an automated manner
- Monolithic or microservices based applications are well supported.
Advantages of Jenkins –
- It is open source and continuous integration server in nature.
- Jenkins carries pipeline now.
- The delivery environment is provided from any language now.
- The product delivery process gets faster and thereby following the agile model in close conjunction.
- Jenkins is a CI/CD tool.
- Features like Role Based Access Control is provided.
- Jenkins is scalable thereby the availability and scalability issues can be met.
- Distributed teams can work and it’s easy to manage now.
- Container support is there.
- The LDAP server is an integral feature of its architecture.
- Jenkins 2.0 is backward compatible too.
- Job page configuration pages have come up in an improvised way with Jenkins 2.0
Why do we need Jenkins –
- For CI/CD process
- These processes can be designed in an automated manner, coders commit the code, build with corresponding new revisions are made with just a click ( running the given scripts).
- Is well supported by open source plugins and reporting tools like Ant, Maven, Gradle, BitBucket, NodeJs, etc.
Who is the right audience for learning Jenkins –
- Anyone in the DevOps role would love to incorporate this tool for automating the building process.
- The novice web developers seeking a career as DevOps shall know how this tool works and how can we configure the build creation process.
How this technology will help you in career growth –
- This tool has evolved continuously with time and new versions have come up with microservices architecture support, this is the architecture to be followed in all large scale projects like Netflix, all this is going to be handled with Jenkins in the building process.
Jenkins is a CI/CD tool, open source, compatible with various plugins, makes the life easy when software delivery has to be done on an agile basis.
This has been a guide to what is Jenkins. Here we have discussed How it works, Advantages and the Career growth of Jenkins. You may also have a look at the following articles to learn more –