Continuous integration takes code from source control to deployment readiness in a centralized repository. DevOps teams can also turn code into an artifact for a build pipeline. The benefits of a CI/CD pipeline are significant and tangible, but how should a DevOps team choose its CI tool?
Consider Jenkins, a long-established and well-known CI platform. The automation server is free and open source, though enterprise developers can pay for supported versions, such as CloudBees CI. As a CI automation server, Jenkins automatically kicks off steps in the CI/CD pipeline. The platform interacts with other tools in the pipeline, such as artifact and source code repositories, configuration management software and automation tools.
Jenkins isn't the only option for CI, but its characteristics make the server a contender for diverse development scenarios. The top five benefits of Jenkins are found in procurement, plugins, hosting options, community and integration. These benefits encapsulate what a DevOps team should look for in CI/CD tools.
1. Open source and free
Developers and DevOps teams don't want to worry about procurement costs for code pipelines. They simply want to build code into an artifact, or have a central location to standardize code deployments. To evaluate a CI tool, these software teams want access for trial scenarios. Tool evaluators also have to ensure that a tool's use can scale up across the team or company without creating a budget problem.
Paid tools require developers to get spending approval from different parts of the organization, including management. A free Jenkins download enables software teams to focus on the CI process, not an approval process.
The open source automation server can run on premises in a virtual environment or on the cloud in a VM. It also can run in a Docker container for high portability and scalability, as described later.
2. Plugins and integrations
One of the primary advantages of Jenkins is the range of plugins available for the platform. Jenkins plugins can be developed by anyone, for anyone.
Jenkins provides some of the top plugins for CI. They're diverse, ranging from on-premises to cloud. Companies that use major cloud providers can integrate their deployments with Jenkins via plugins. For example, Microsoft Azure users can run CI processes from Azure DevOps to Jenkins and vice versa.
Since plugin variety is a major benefit of Jenkins, you should get familiar with some of the top plugins available:
- Dashboard View: to view and monitor the status of all CI tasks from the Jenkins dashboard.
- Test analysis plugins: a group of plugins to test code at the CI stage, before the software team deploys the code to development, staging or production environments.
- Build Pipeline plugin: to view the jobs in the pipeline and define manual tasks and triggers for tasks that may need intervention prior to any type of execution.
3. Hosting options
Hosting Jenkins on premises? How about the cloud? In a container? All these setups are options for Jenkins.
Jenkins installs and deploys on Microsoft Windows, any Linux distribution and Apple MacOS. Because Jenkins can run on any OS, the IT team can install the CI server regardless of the company's systems.
Organizations run Jenkins in the cloud by downloading and deploying it on a VM. Alternatively, use one of the prebuilt images from providers like AWS and Azure.
Jenkins can run on a Docker container. The IT team can scale and orchestrate the CI tool using Kubernetes. Use the free official Jenkins image on Docker Hub.
4. Community support
Jenkins officially began in 2011 and developed for years before that in other permutations. It has a long history of operations for a CI/CD tool. Its availability as open source code enables the creators, community contributors and users to participate in the tool's functionality, maintenance and roadmap, as an open source product.
The Jenkins community estimates it has more than 1,000,000 users, and it operates nine special interest groups, at time of publication.
5. Integration with other CI/CD platforms
Jenkins offers distinct benefits for software development, but that doesn't mean it's the only option for a CI/CD pipeline, or the only CI choice in the organization.
Jenkins, for example, can work alongside another platform a software team uses for continuous delivery. Or, a team might integrate the CI and build portion of a pipeline with another tool, then use Jenkins to build and store the application's artifacts.
Several plugins for Jenkins let users tie into other CI/CD platforms. Two examples are the plugin for Azure DevOps and Azure DevOps Server (the plugin is called Azure DevOps and Team Foundation Server due to Microsoft's former name for the product) and the GitLab plugin.