Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Selecting Your Local Continuous Integration Tool

DZone's Guide to

Selecting Your Local Continuous Integration Tool

Before selecting your Continuous Integration system, you should identify what functionalities this system should have.

· DevOps Zone
Free Resource

The Nexus Suite is uniquely architected for a DevOps native world and creates value early in the development pipeline, provides precise contextual controls at every phase, and accelerates DevOps innovation with automation you can trust. Read how in this ebook.

DevOps teams should support creating workflows that better fit the development group. During workflow creation, it is important to take into account which Continuous Integration tool is going to be used.

Sometimes, selecting a local Continuous Integration solution is a needed or a political requirement in teams or enterprises, so the installation and configuration of the system are activities inside the whole infrastructure. There are many Continuous Integration systems that have this feature. How do you make the best choice? 

Before selecting your Continuous Integration system, you should identify what functionalities this system should have.

Recommended Functionalities

Each development team needs different functionalities from the Continuous Integration tool. However, the following items should be included for all development teams.

Pipeline

Deploying an application and orchestrating all the tasks for a good deploy is difficult. Continuous Integration systems should have an interface showing the current process state and all task transitions during the deployment process.

These systems should manage tasks in both the sequential and parallel. They also should give the option for the DevOps team to handle manual actions in order to specify when they need something to be deployed.

Build as Code

Writing the workflow in a file permit executes the same workflow every time you need it. This method is the philosophy of "write once and run forever," but applied to the Continuous Integration process. Now, you don't have to remember or record each step you do during the system configuration. The human error is reduced to zero.

The files are included in the root of projects as another piece and therefore are added into the version control system. Once the files are included in the version control system, you can track over the changes.

Work With Containers

Containers have proven to be of great importance in system development. Docker is a main tool in the development process. Continuous Integration systems have been adding functionalities to manage containers and images as part of daily routines.

Multi-Platform

You should be able to execute constructions in Unix, Windows, and Mac OSX to allow include all system architectures to develop into the team.

Now, we are going to see three Continuous Integration systems that include these functionalities. These systems can be installed and configured in local machines into the development infrastructure.

Jenkins

Current version: v2.19.4 LTS.

Jenkins uses the Pipeline Plugin to manage and describe the deployment process. This plugin uses Jenkinsfile to register all steps that should be executed by the pipeline module. Jenkinsfile uses Groovy syntax. Jenkins also has the Blue Ocean Plugin to improve user experience during the use of Pipeline Plugin.

The Docker Plugin allows Jenkins users to manage topics related to containers and images. Jenkins uses node philosophy to run jobs on external machines. These machines can have different operating systems allowing runs cross-platform functionalities.

GitLab

Current version: v8.14.4.

GitLab CI is a part of GitLab that allows you to manage jobs with tasks through a .gitlab-ci.yml file. This file is used to describe all tasks in a single file with the YAML format.

GitLab CI allows the use of Docker to build and deploy projects. GitLab offers a Private Docker Registry to store your own images. GitLab Runner can be installed cross-platform and it is responsible for running jobs on external machines.

Concourse

Current version: v2.5.1.

Concourse is a Continuous Integration tool created with the pipeline as a first-class citizen. The system shows us a new way to manage jobs in the server. Concourse uses files with the format YAML to describe jobs and tasks.

In Concourse, every process run inside a container. Concourse workers can be installed cross-platform and they are responsible for running the jobs described in the YAML format inside containers.

Conclusion

The Continuous Integration systems mentioned in this article should be taken into account during the selection of this tool in a development group. These functionalities should be included in your workflow in order to deploy correctly and quickly.

The DevOps Zone is brought to you in partnership with Sonatype Nexus.  See how the Nexus platform infuses precise open source component intelligence into the DevOps pipeline early, everywhere, and at scale. Read how in this ebook

Topics:
devops ,continuos integration ,software development

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}