The Jenkins Who?
“Jenkins!!” Well my first confrontation with this word was way earlier when I had little to no idea about coding… In blur remembrance it was when I was finding a rhyming word, where I came across this & was definitely mesmerized by its cute phonetic yet was unable to grasp its meaning. (P.S. : I of course didn’t use it in my poetry then).
Yet, it’s somehow destiny we met again, while I was exploring Open Source programs, particularly GSOD (Google Summer of Docs). While understanding the SDLC (Software Development Life Cycle), & keenly understanding how any software updates take place, I understood the basics.
My Perception about Jenkins a while earlier..
↳ To give a quick context, let’s say a game developer unit releases a version of the game app by making the SDK available on the playstore & the codebase at a centralized place(Github/Gitlab or public repos for Open Source or Any other cloud storage/private services for others) with a copy they will be working on in future.
↳ Now, while you are busy playing it, the different teams are working on certain enhancement features, each team after finishing work on those individual features push their code to the centralized place.
↳ While this is being done it has to pass a few constraints like: the new feature available doesn’t crash or cause any problem in the existing app, here comes the role of testing & deploying.
↳ And then the new/updated code should be available to all : both users & other developer teams.
This procedure is very well needed in all the software where there are frequent updates, where code should be available to users irrespective of what changes are happening on the developer side & as soon as changes are finalized they should be updated centrally. This is basically DevOps.
For all of you already using GIT or any VCS (version control system) this concept is as similar as fetching changes, making PRs & so on. So, what role does Jenkins play in doing all this? It automatically allows you to do periodic actions for syncing your code base with the original source.
Jenkins is an Open Source Automation Server that helps this testing & deploying while any project is live up/hosted anywhere. The underlying idea of it is to support the CI/CD i.e. Continuous Integration and Continuous Delivery for any project.

Learning Jenkins through CLOUD BEES’ DevOps World.
Recently I applied for attending a DevOps event & found Resources about CI/CD & Jenkins. So, in following paras sharing the learning through it in a summarized form:
The basic course introduced the following topics:
- Jenkins & its role in SDLC, Code Management System
- Importance of Continuous Workflow
- Testing & Contributing
In today’s world technology is rapidly changing & so are the requirements, hence the product goals don’t remain the same until completion of a project. Thus, creating a need to adapt the project process to be inclusive of changes in requirements in development phase itself, meaning if a XYZ project requires a few features: 1,2,3 to be implemented with m1, m2, m3 methods not necessarily means only that are to be delivered at the final changes, the client may say to scrap features 2 & 3 and bring the requirement of let’s say a new feature 4 with altogether different implementation strategies as per market requirements. In order to suffice these kind of adapting needs, new SDLC supplementary models are practiced. A few well- known approaches are:
1. Agile: Emphasizes adaptive planning and evolutionary development wherein the work is planned and completed in “sprints” (short periods, usually few weeks), with frequent “scrums” or reporting meetings/discussions.
2. DevOps: Advocates for the automation and monitoring of all steps in the development cycle, thus making Agile more operational.
3. Continuous: Implements Agile and Devops philosophies with tools that thoroughly test each code modification before it is integrated into the official source. It aims to automate the complete build-test-deploy cycle by triggering builds automatically based on commit and merge actions.
The difference between Agile, DevOps & Continuous Approach is its utilization in various SDLC Stages. Out of all 3, Continuous process is which is implemented for the longest time being associated with Testing, Deploying Phase apart from basic Code, Build, Integration Phases. The advantage of this: “Build and test each code modification” approach is to find problems sooner, when they are easier to fix.

Continuous Integration (CI) is the frequent, automatic integration of code. Automatically tests all new and modified code with the master code
Continuous Delivery (CD) is the natural extension of CI. Ensures that the code is always ready to be deployed. Manual approval is required to actually deploy the software to production
Continuous Deployment automatically deploys all validated changes to production. Frequent Feedback enables issues to be found and fixed quickly.
What does Jenkins do?
Jenkins ensures out of all the above mentioned activities required ones are automatically performed to deliver your software. So it’s moreover like the orchestrator of all those sub- tech tools to achieve automation in CI/CD flow.

Set-up Steps for Jenkins:
- You specify how to build and test your software and when/where/how to deploy it by using a tool such as Apache Maven, Gradle, npm, Apache Ant, or make to define the specific actions required at each step
- You define a Jenkins Pipeline to run each activity in the same order every time which is glue for the activities defined, while doing this note that you do NOT code build actions directly in the Pipeline!
The built Pipeline runs each time the code is modified. Furthermore, the knowledge of VCS & Testing would help to understand in depth & design the pipeline. The course also covered this part well. You could check it here.
Contribution:
Various ways to contribute to Jenkins are:
- Provide feedback or Join a chat channel and answer questions
- Review and/or test or create new code and documentation changes
- Contribute to Jenkins Core and plugin localization