Jenkins : Pros and ConsEzeelive Technologies
What is Jenkins?
Jenkins is an automation server software that is used frequently to achieve continuous integration and delivery in software projects. It is one of the most popular continuous integration tools available in the market today. Jenkins is open source and is available free of cost.
Traditionally, developers used to push their code (the process of code commit) to a version control server. Once there was enough code to build into a release, someone would invoke a build tool that took all the pushed code and created a build out of it that could be released into a specific environment (Dev, UAT or Production). With continuous integration, this ‘build’ operation is invoked each time a developer pushes his or her code to the repository. Jenkins, in this case, would also run tests to make sure that the build is stable and okay for delivery. If there are problems with the build, Jenkins would notify the developers that there is a problem.
Jenkins supports Windows, Mac OS X, and Unix operating system. It is supported by an active community that regularly contributes to the features and documentation of the tool. Developers invoke Jenkins in various ways. Some write a program that executes periodically (a cron job) that allows Jenkins to pick the latest code from the repository and build it. It can also be conditioned to act as soon as there is a new commit in the repository.
Jenkins’ rich plugin suite
Jenkins comes with a wide range of plugins as well that extend its functionality. The plugins from Jenkins range from ones that give control over the jobs they run to getting statistics on the builds done. Some of the popular plugins include Post + Build + Task that lets you perform specific actions depending upon the results of a build. If a build passes you can upload a success file and if it fails you can roll back your release. Jenkins also has plugins that help you integrate with different version control systems. This comes very handily when you are working with huge projects that have code bases scattered across different servers. Jenkins also offers plugins that let you do a specific task before doing a build. As mentioned before, Jenkins also has a plugin (called the JobGenerator Plugin) that lets you manage jobs using templates and role-based access.
The pros and cons of Jenkins
Jenkins is an immensely popular tool that is used in numerous projects needing continuous integration and delivery. Here are a few reasons why.
Jenkins is open source and free
Jenkins is free to download and the source code is also available. This has spawned a growing community of developers who are actively helping each other out and contributing to the Jenkins project. This ensures that you get better and more stable versions each year.
Jenkins comes with a wide range of plugins
Jenkins has a wide range of plugins that give a developer a lot of added features and power over the already feature-rich Jenkins installation. These plugins help developers extend Jenkins into their own custom tool for their projects.
Jenkins integrates and works with all major tools
Jenkins being the popular tool it is, integrates with all major version control tools like CVS, Subversion, Git, build tools like Apache Ant and Maven and even other tools like Kubernetes and Docker.
Jenkins is flexible
With its wide range of plugins and open architecture, Jenkins is very flexible. Teams can use Jenkins in projects of various sizes and complexity. Jenkins places no limits on the kinds and numbers of servers that can be integrated with it. Teams across the globe can work towards continuous delivery, seamlessly.
Jenkins comes with a decent API suite
Jenkins comes equipped with APIs that lets you tailor the amount of data that you fetch. This mechanism helps your server use simple web-hooks to invoke Jenkins for specific purposes.
Jenkins is easy to use
An active, vibrant community, regularly updated documentation and support for all major operating systems mean that a person with just decent skills can download and get Jenkins up and run in a few hours. The active community also readily answers questions on forums and groups that encourage newcomers into taking up this technology, more readily.
You have a ready talent base
We all know how difficult it is to find talent for very niche technologies. Jenkins has cemented itself to be a popular tool in software development and it is absolutely possible for a recruiter to find a decent developer who is also good with Jenkins.
The advantages of Jenkins have contributed to its growing popularity and fan-base. There are also certain cons of using Jenkins that one must be aware of.
The costs of hosting the server (which isn’t free) that Jenkins runs on cannot be predicted easily. It is not always possible to predict the kind of load (depending upon the number of commits, volume of code, volume of assets etc.) that the server is going to serve. Hence the cost factor, even if Jenkins itself is free, remains unpredictable.
Lack of governance
Jenkins’ management is generally done by a single user and that leads to tracking and accountability problems with the pushed code. There is tracking that exists on the Version Control Server but there is no tracking of that kind of Jenkins itself, which is a concern.
No collaboration features
Jenkins doesn’t allow one developer to see the commits done by another team member, readily. This makes tracking the overall release progress a rather difficult job for larger projects. This can cause a lot of trouble to the release manager.
Lack of analytics
Jenkins doesn’t provide any analytics (there are plugins but they are not enough) on the end-to-end deployment cycle. This again goes back to the lack of overall tracking that contributes to the lack of analytics as well.
While Jenkins is indeed a powerful and useful tool, managing a Jenkins server needs special attention and many times, a dedicated developer. This adds man hours to the project and pushes up the overall project cost as well.
Some Important Links :
|Jenkins Community Blog||https://jenkins.io/node/|
|Participate and contribute||https://jenkins.io/participate/|
|Google Summer of Code||https://jenkins.io//projects/gsoc/|
Jenkins is extremely powerful, extendable, and flexible and also remains one of the most popular continuous integration and delivery software in the world. With its new versions, one can hope that it eliminates some of the cons and grows, even more, to become every developer’s and IT company’s favorite continuous integration tool.