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.
Each development team needs different functionalities from the Continuous Integration tool. However, the following items should be included for all development teams.
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.
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.
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.
Current version: v8.14.4.
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.
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.
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.