In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project.

Jenkins is a tool in the Continuous Integration category of a tech stack.

Jenkins is an open source tool with 17.9K GitHub stars and 7K GitHub forks. Here’s a link to Jenkins’s open source repository on GitHub.

Jenkins is usually installed on the server where the central build takes place. Continuous integration ensures frequent builds by developers. The usually followed practice ensures that as soon as code commit is done, a build is triggered. It is also great for integration as integration is automated. The great support community is also available.

Some of industry use-cases of Jenkins are as follows:-

with the uses of Jenkins, one can convert a command prompt code into a GUI button click. This can be done by wrapping up the script as a Jenkins job. Parameterized Jenkins jobs can be created for customization or to take user input. Thus, hundreds of lines of code writing can be saved.

Jenkins jobs are usually small tools. They serve small purposes and quite simple. Jenkins provides pipeline plugin using which multiple jobs can be combined. Pipelining provides such benefit which Linux users can understand more than anyone. Both sequential or parallel combination is possible.

A large team uses a centralized platform for communication. Slack is one such most popular platform. Slack integration can be done to Jenkins and thus communication such as activities have been triggered, its time, users name, results etc. can be shared with other people.

Jenkins jobs, when run, capture console output from stdout as well as stderr. Troubleshooting with the uses of Jenkins is also very clear. For performance tuning each individual job, run timing can be measured and slowest step can be identified using Time stamper plugin.

For project management, each activity is wrapped as a Jenkins job. For each Jenkins job, success or failure can be identified, and job completion time can be measured.

Jenkins supports REST API or SDK to measure success, failure or time.

Some useful Jenkins plugins are given below:

  • Pipeline Plugin,
  • Slack Plugin,
  • thinBackup,
  • Timestamper,
  • Dashboard View,
  • JobConfigHistory Plugin,
  • Build-timeout,
  • Naginator Plugin,
  • Git Plugin, and
  • GitHub pulls request builder plugin.

Sometimes things work great locally but fail when pushed on a central system. This happens because, by the time they push, things change. Continuous Integration tests the code against the current state of a code base and is done in the production-like environment.

CI servers such as Jenkins can check code for test coverage. Tests increases code coverage. This inspires transparency and accountability in team members. Results of tests are displayed on build pipeline which ensures team member follow required guild lines. Code coverage similar to code review ensures that testing is a transparent process among team members.

Jenkins or another CI system can deploy code to staging or production automatically if all the tests written for the same within a specific feature or release branch are green. This is formally known as Continuous Deployment as well. Changes before a merge activity can be made visible too. This can be done in a dynamic staging environment, and after they are merged it is deployed directly to a central staging system, pre-production system or even a production environment.

Continuous integration ensures that code coverage is good, it is tested well and only merged when all tests are successful. This makes sure that the master builds are not broken, and no broken code is shipped to a production environment. In case, the master build is broken, such systems can trigger a warning to all developers.

CI systems such as Jenkins and Version Control System such as Git can communicate with each other and inform the users when a merge request is suitable for merge. This is usually when all the tests are passed, and all other requirements are met. In addition to that, the difference in code coverage can also be reported in the merge request itself. This dramatically reduces the time taken to review a merge request.

Thank you for reading!!