Among all the existing CI / CD tools, two projects are definitely worth paying attention to for anyone looking for something from this area. This is Jenkins and the GitLab CI / CD tool, which is part of the GitLab platform. Both solutions have approximately the same rating on extensive review services, but it’s worth looking at not only this. Let’s take a look at what Jenkins and GitLab CI/CD are best suited to and their benefits.
GitLab CI / CD is one of the newest and most loved tools for DevOps engineers. This free, open-source tool is built into the GitLab version control system. The GitLab platform has a community version; it supports repositories, tools for tracking issues, organizing code reviews, and mechanisms focused on creating documentation. Companies can install GitLab locally, linking it to Active Directory and LDAP servers for secure user authorization and authentication.
GitLab CI / CD was released initially as a standalone project, but in 2015 this toolkit was integrated into GitLab 8.0. A separate GitLab CI / CD server can support over 25,000 users. Based on such servers, you can create highly available systems.
GitLab CI / CD and the main GitLab project are written in Ruby and Go. They are released under the MIT license. GitLab CI / CD, in addition to the usual capabilities of CI / CD-tools, support additional capabilities, such as work schedules.
It is effortless to integrate GitLab CI / CD into a project. When using GitLab CI / CD, processing the project code is divided into stages, each of which can consist of several tasks performed in a specific order. Fine-tuning of tasks is possible.
Tasks can run in parallel. After setting up the sequence of stages and tasks, the CI / CD pipeline is ready to go. You can monitor its progress by tracking the status of tasks. As a result, using GitLab CI / CD is very convenient, perhaps more convenient than other similar tools.
🔸 Excellent integration with Docker.
🔸 Easy scaling of runners.
🔸 Parallel execution of tasks that are part of the stages of the CI / CD pipeline.
🔸 Using the directed acyclic graph model when setting up problem relationships.
🔸 High level of scalability due to the possibility of parallel execution of runners.
🔸 Ease of adding tasks.
🔸 Simple conflict resolution.
🔸 Reliable security system.
🔸 For each task, you need to describe and load/unload artifacts.
🔸 You cannot test the results of merging branches before actually connecting them.
🔸 When describing the CI / CD pipeline stages, it is impossible to single out separate steps in them.
🔸 It is inextricably linked to Gitlab (i.e., you can pin it to Github or Bitbucket, but Gitlab will remain).
An extensible open-source solution for automating deployment. Jenkins is written in Java and also runs under the MIT license. It has a rich set of features to automate building, testing, deploying, integrating, and releasing software.
In addition to installation via a standard installation package, you can install it both standalone and as Docker on any machine with the Java Runtime Environment (JRE) installed.
There is also a subproject of the Jenkins team called Jenkins X, specializing in CI / CD within Kubernetes clusters.
The Jenkins team has released about 1,500 plugins so that you can use this tool with other solutions like co Slack, Jira, and others. Integration is also available for a range of DevOps testing tools. There is support for REST API for remote access to the system. It comes in three flavors: Python, XML, and JSON with JSONP support. As with GitLab, it helps develop a large, passionate community. It can also act as a servlet in Java containers such as GlassFish and Apache Tomcat.
🔸 A large number of plugins.
🔸 Full control over the installation of the tool.
🔸 Easy debugging of runners.
🔸 Simple configuration of nodes.
🔸 Easy code deployment.
🔸 Perfect credential management system.
🔸 Flexibility and versatility.
🔸 Support for various programming languages.
🔸 The system is intuitive.
🔸 Large and influential community.
🔸 Automated build process and detailed, clear documentation.
🔸 Sophisticated plugin integration.
🔸 The solution is not very suitable for small projects, as its setup is rather laborious.
🔸 Lack of general analytical information on CI / CD chains.
🔸 Simple pipelines are written in Jenkins’ internal language, while complex pipelines are written in Groovy (i.e., non-portable and incompatible with other CI systems).
Both Jenkins and GitLab CI / CD have strengths and weaknesses. The answer to the question of what to choose depends on a particular project’s needs and characteristics. Each of the CI / CD tools reviewed today differs in certain features, although these tools have been created to solve the same problem. Wherein Jenkins is a stand-alone tool, while GitLab CI / CD is part of a code collaboration framework.
When choosing a CI / CD system, it is worth considering the costs associated with it and what the DevOps engineers who support the project are used to working with in addition to its capabilities.