Jenkins is an open source automation server (aka build server or CI server) for Continuous Integration and Continuous Delivery. Jenkins is a Java application and has many plugins available. As such, the tool can be integrated into a multitude of tools and platforms. (Website: jenkins.io)
The general goals of CI/CD are stability, increased security, and minimizing defective artifacts. Attaining these goals can be made more difficult as a result of manual processes in error analysis and during the build process. This is exactly where Jenkins comes in. Pipelines take over any consistently recurring tasks, often in the form of build jobs and automated tests.
Popular open source CI server
History of Jenkins
Jenkins was developed by Kohsuke Kawaguchi. The Java developer, who was working at Sun Microsystems at the time, created the automation solution under the name “Hudson”. After Sun was acquired by Oracle, Kawaguchi left the company and continued to lead the open source project under the name “Jenkins”, because Oracle owned the rights to the name “Hudson”. Kawaguchi chose the name “Jenkins” (and also the former name “Hudson”) because this was, in his mind, a common name for British butlers, which serves an analogy for functionality of the tool he developed.
Jenkins is an excellent example of how well open-source software can measure up in comparison with proprietary software. The tool is often named as one of the most popular CI servers. This popularity is based on the following three benefits:
- Jenkins has a very large and active community, who collaborate in developing the tool.
- The large community develops and shares a great number of plugins. There is already a way to integrate Jenkins into practically any tool you can think of.
- Jenkins lowers costs, as it is an open source solution that does not involve licensing fees.
Continuous Integration Server
The core tasks of a CI server are deploying builds and running tests for software projects. The challenge we face with this tool is ensuring that it offers sufficient flexibility to be used for a wide range of projects and target platforms.
Usually, the CI server retrieves the data to be built from a source code administration system, such as Git or SVN, after a commit and deploys the build.
Depending on the configuration, a build may consist of several levels, ranging from the very simple “checkout – build – deploy” to processes involving many different steps. A succession of steps like this is also known as a “pipeline”.
In addition to the build, executing unit tests and a static code analysis are also common steps.
Jenkins in the Cloudogu EcoSystem
In the Cloudogu EcoSystem, Jenkins works with the following tools:
- SCM-Manager: The tool manages Git, Subversion, and Mercurial repositories. Using the SCM-Manager plugin for Jenkins, builds can automatically be deployed based on commits in repositories.
- SonarQube: During a build, Jenkins can initiate a static code analysis via SonarQube. This way, quality gates can be integrated into the development process. Depending on configuration, builds can be terminated or continued with a warning based on the results of the analysis.
- Sonatype Nexus: Build artifacts can be stored and documented in the Artifact Repository Manager.
In addition to tool integration, there are also other features available for integration:
- Automatic generation of PDF documents from Markdown documents: Combined with the Smeagol wiki, this presents a very simple way of creating and editing documents. After each change is implemented, a PDF of the current status is generated automatically.
- Running automated UI tests: Using this library, it is very easy to include Selenium-based test cases in the pipeline.