The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. Jenkins is an open source automation server written in Java. The project was forked from Hudson after a dispute with Oracle. Released under the MIT License, Jenkins is free software.
Jenkins helps to automate the non-human part of the whole software development process with now common things like continuous integration and by empowering teams to implement the technical aspects of continuous delivery.
It is a server-based system running in a servlet container such as Apache Tomcat.
It supports version control tools, including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clear case and RTC, and can execute Apache Ant, Apache Maven and sbt based projects as well as arbitrary shell scripts and Windows batch commands. The creator of Jenkins is Kohsuke Kawaguchi.
Builds can be triggered by various means, for example by commit in a version control system, by scheduling via a cron-like mechanism and by requesting a specific build URL. It can also be triggered after the other builds in the queue have completed.
Jenkins functionality can be extended with plugins.
A Jenkins file is a text file that contains the definition of a Jenkins Pipeline and is checked into source control. This is the foundation of “Pipeline-as-Code”; treating the continuous delivery pipelines a part of the application to be version and reviewed like any other code. Creating a Jenkins file provides a number of immediate benefits:
- Automatically create Pipelines for all Branches and Pull Requests
- Code review/iteration on the Pipeline
- Audit trail for the Pipeline
- Single source of truth for the Pipeline, which can be viewed and edited by multiple members of the project. While the syntax for defining a Pipeline, either in the web UI or with a Jenkins file, is the same, it’s generally considered best practice to define the Pipeline in a Jenkins file and check that in to source control.
Benefits of Jenkins
Continuous Integration and Continuous Delivery
As an extensible automation server, Jenkins can be used as a simple CI server or turned into the continuous delivery hub for any project.
Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with packages for Windows, Mac OS X and other Unix-like operating systems.
Jenkins can be easily set up and configured via its web interface, which includes on-the-fly error checks and built-in help.
With hundreds of plugins in the Update Center, Jenkins integrates with practically every tool in the continuous integration and continuous delivery tool chain.
Jenkins can be extended via its plugin architecture, providing nearly infinite possibilities for what Jenkins can do.
Jenkins can easily distribute work across multiple machines, helping drive builds, tests and deployments across multiple platforms faster.