Getting Started with Jenkins (Part I)

Basics of Jenkins…

Update: This article is part of a Jenkins series. Check out the full series: Part 1, Part 2, Part 3, Part 4

This is a series of tutorials for Jenkins, Install and Configure, Automate the builds, CI/CD using Jenkins, Jenkins Pipeline as a Code, etc. This is a Part I Getting Started with Jenkins. We are talking of Devops build and release mechanism. You know the code starts right away from the development machine i.e. from your local machine and it must need some sort of version control in place to track the each and every change over a period of time. A Version Control System(VCS) keep individual’s code in a consistent way by managing the replicas over the change. So, your written code reach the centralized repository i.e. Source Code Management(SCM) using the Pull Request(PR) or some sort of merging technique. Git is widely used version control system in most of the projects. Once your codebase is ready it can go through different environments like development, staging and production. And, in between lot of configuration task need to be done i.e building a stuff, then deploying it, configuring softwares and tools, setting up the servers, monitoring and logging mechanism, prevention alerts, etc. The most of the task needs automation in place as it’s impossible to configure hundreds of thousands of machines manually. So, there is a need for better tool which will automate the build, test your system in staging and deploy it to production. Hudson was a very popular open source Continuous Integration(CI) tool developed by Sun Microsystems. Oracle brought the Sun Microsystem and then it started from this project named as Jenkins. So, Jenkins has become more popular over the last few years.

Jenkins is an extensible, open source continuous integration server. It builds and tests your software continuously and monitors the execution and status of remote jobs, making it easier for team members and users to regularly obtain the latest stable code.

What is Continuous Integration(CI) ?

Continuous Integration(CI) is a continuous process of of merging new code into the centralized repository. You can easily find the issues if there are any. The static code checking is perform in this process to catch the bugs earlier. The unit test plays the important role in this process to validate the code merge into the centralized repository. It is best practice to have a build server designed specifically for performing these tests so your development team can continue merging requests even while tests are being performed.

“Continuous Integration(CI) doesn’t get rid of bugs, but it does make them dramatically easier to find and remove” — Martin Fowler, Chief Scientist, ThoughtWorks.

Code changes made by individual team members are merged together into end-to-end working software, which we called as Integration phase. It’s hard work which often results in code conflicts, difficult to find bugs, code redundancies and and difficult to fix them which leads to software delivery delay. So, with this above approach in agile methodology, we can overcome all these difficulties as today’s businesses need new features to be incorporated into application with a day or week. This required the change of software delivery lifecycle.

Jenkins is the ultimate CI tool. It is a cross platform continuous integration application. Jenkins is used to build and test softwares continuously making it easier for developers to build software rapidly. It’s a plug and play as it can not do most work without respective plug-in’s. As continuous integration evolved, the industry created the notion of continuous delivery and continuous deployment to render production deployments a non-issue. These automated tools allow us to achieve checking code from your machine to deploying it into production system seamlessly.