Jenkins is open-source automation server, which is written in Java. Jenkins helps automate part of the process of software development with continual integration and simplifies technical aspects of continual deliveries. It is a server system, which runs on servlet containers as is Apache Tomcat.

Jenkins supports tools for versioning control as are e. g. AccuRev, CVS, Subversion, Git, Mercurical, Perforce, ClearCase or RTC. It can execute projects in Apache Ant, Apache Maven and sbt similarly as the separate shell scripts and Windows batch commands. Jenkins creator is Kohsuke Kwaguchi. It is accessible under MIT license.

Plugins

Jenkins can be used for projects, which are written in other language than Java. Plugins then allow integration with most of systems for version and quality management. There are plugins, which change displaying or add new functionality. Plugin’s set supports unit testing and generating reports in different formats and automation testing.

  • Mailer. It allows email notification configuration of build results. Jenkins sends emails, if the specific conditions are met, e. g. collapsed build, nonstable build, successful build after unsuccessful build or collapsed build after successful build.
  • Credentials. It allows saving user data for Jenkins. It offers standardized API for other plugins to save and solicit different types of login information.
  • Monitoring external jobs. It allows following results of externally executed jobs.
  • SSH Agents. This plugin allows agent management (earlier called as slaves) running on Unix machines via SSH. It adds new types of methods for executing agents.
  • Javadoc. This plugin adds Javadoc support to Jenkins. It used to be part of a Jenkins core, but then it was divided into individual plugin.

Advantages of using Jenkins

  • Open-source. Jenkins is possible to install for free and has access to source code. It has wide community of developers, who actively help each other and contribute to the Jenkins project.
  • Wide scale of plugins. Jenkins has many plugins, which give the opportunity to spread functionality and adjust Jenkins to concreate project, on which it is used.
  • Integration of tools. Jenkins offers integration of most used tools as are CVS, Subversion, Git, Apache Ant, Maven or Kubernetes and Docker.
  • Flexibility. Thanks to plugins and open architecture is possible to use Jenkins for differently big projects with different complexity. There isn’t set any limit for type and number of servers, which are possible to integrate, therefore is possible to work in teams throughout the planet.
  • Practical API. API allows choosing how much data you display. Thanks to that it can adjust well to the specific purposes.
  • Simple usage. Jenkins has active community, often actualized documentation and support for all main operating systems. Jenkins is possible to implement relatively quickly.

Disadvantages of using Jenkins

  • Unpredictable costs. Costs on the host server are difficult to guess. It is not always possible to guess, what load, according to the number of commits, volume of the code and other aspects, will the server have to manage. Therefore, the costs are relatively unpredictable, although the program is free.
  • Responsibility. Usually the Jenkins is managed by one user, which leads to the problem with determining responsibility in case of problem with added code. There is tracking within server for version control, but Jenkins doesn’t solve this.
  • Absence of functionalities for cooperation. Jenkins doesn’t allow developer to see commits of other members of the team. It means that watching the progress of the team is relatively difficult at larger teams. For manager’s release it can cause many problems.
  • Absence of analytic tools. Jenkins doesn’t contain sufficiently extensive tool for the analysis of development cycle.
  • Labour-intensive. Jenkins server needs special attention and often reserved time of the developer. It adds the severity of the project for work and can also influence the cost’s side of project.