Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 400 plugins to support building and testing virtually any project.
Ranked in these QuestionsQuestion Ranking
Pro Free and open source
Pro Safe to store key environment variables
Self-hosting provides a safe location to store key environment variables since it is the user who is in charge of the server and environment where Jenkins is hosted.
Pro Highly customizable
Even though Jenkins is pretty functional and useful out of the box, there's a large plugin ecosystem from which the user can choose plugins to integrate into their Jenkins build. This is needed for when the user wants to extend any of the tool's features.
Pro A lot of resources and tutorials available
Jenkins has been in development since 2004 and is one of the most popular tools of its kind. This means that its technology is very mature and there is a lot of documentation and resources available for it.
Pro Stable release line for users who want less changes
This is called the Jenkins Long-Term Support (LTS) version and helps to provide the most stable and assuring version of the Jenkins CI possible. Every 3 months, a version (which has been deemed the most reliable by the community) is chosen. After this, its branched, well-tested features are added (if they are missing), it is tested with the new features, bug fixes are then carried out if necessary, and from there it is released as the official Jenkins LTS version.
The distributed builds in Jenkins work effectively, thanks to the Master and Slave capabilities.
Pro Easy to get up and running
A Jenkins install is very simple and the user can have the service up and running within minutes. To install Jenkins, the command
java -jar jenkins.war is all that is needed - nothing more.
Pro User can source control their chain of automation
Starting with Jenkins 2.0, the pipeline capability, which has been available as a plugin before this version, has been built into Jenkins itself. This allows developers to describe their chain of automation in text form, which can be version controlled and put alongside the source tree.
Con Poor quality plug-ins that are difficult to combine
There have been several complaints by users regarding the quality of the plug-ins found in Jenkins' official plugin repo. A lot of plugins found in the default plugin directory are no longer actively maintained and as a result, they may be incompatible with later versions of Jenkins or other plugins.
Con High overhead
Unlike some of the simple and hosted alternatives, users need to host and setup Jenkins by themselves. This results in both a high initial setup time, as well as time sunk into maintenance over a project's duration.
Con Poor documentation
The most useful available information regarding Jenkins is on StackOverflow and various strange corners of the internet that careful Googling may be able to uncover. The actual documentation for Jenkins is poorly organized and extremely vague and outdated. Documentation for plugins, even the plugins most heavily relied upon, is almost non-existent.
Con Unstable and lack of plugin integration QA process
Jenkins without plugins is almost useless. All plugins are treated equal and published almost right away.
Because there is no process for testing Jenkins' integration, the overall Jenkins experience is not that great. Furthermore, Jenkins' core and plugins are released on a regular basis, all requiring instant restarts, meaning that updates appear more than once a day!