Continuous Integration (CI) is a part of modern software development. CI represents the process of building and testing an application. With the help of CI, errors can be found and corrected faster. The idea of continuous integration is that developers check changes into version management early and regularly. These changes should be functional so that the entire application can be checked for integration problems. This ensures the availability of an executable version that can then be used for other testing or distribution purposes, for example. A typical application are so-called nightly builds, where the current program code is compiled at a specified time and tests are automatically executed with the created software. If problems are found, a developer can then be informed about the found problem e.g. directly by mail.
Jenkins (formerly Hudson) is a CI (continuous integration) tool that enables users to build software projects automatically and to deliver the resulting artifacts automatically (continiuous delivery). Jobs are assigned to the respective projects in the Jenkins, in which the above-mentioned steps can be carried out. Besides Jenkins offers the possibility a whole set of Plugins to merge in order to measure e.g. the code quality of the projects.
Since version 2.x of the Jenkins it is in addition possible to write pipeline scripts in which several Jenkins jobs can be controlled. In this way, deployments (e.g. to a production server) can be mapped through a pipeline. The pipeline scripts are written in a groovy DSL (domain specific language) and can therefore be versioned via git repositories (configuration as code).
Jenkins is web-based, written in Java and platform independent. The Jenkins base supports numerous tools including SVN, Ant, Maven and JUnit. Through the community, additional features can be added using plugins. This allows Jenkins to be customized for each project. Jenkins is also suitable for projects with other languages/technologies such as PHP, Ruby or .NET. Test tools can be integrated via plugins via the intuitive user interface. Builds can be started by different triggers: e.g. GIT changes or schedule (e.g. Nightly Builds). Nightly Builds are especially common in Open Source projects and mean that the application is built and tested at night.