CI / CD tool selection: Jenkins or gitlab CI / CD?

Time:2022-4-16

Over the past decade, great progress has been made in the fields of continuous integration (CI) and continuous delivery (CD). The rise of Devops testing has led to a rapid demand for CI / CD tools. Existing solutions are always improved over time, and a large number of new products or versions are entering the QA field. When you have so many options at hand, choosing the right tool can be a little challenging.

Of all the optional CI / CD Tools for testing, Jenkins and gitlab CI / CD are definitely two tools you should consider. Jenkins has 16000 + likes on GitHub, while gitlab CI / CD has 2012 likes. Jenkins likes more than 8 times more than gitlab CI / CD. However, CD / CI is not the only tool for viewing numbers. Although there is a huge gap in the number of likes, Jenkins vs gitlab CI / CD still has fierce competition on multiple review platforms.

Taking G2 as an example, Jenkins has an average score of 4.3 stars on G2, with 288 comments; Gitlab CI / CD has an average score of 4.4 stars on G2 and 270 comments. It can be said that Jenkins vs gitlab CI / CD is an equal competition. Interestingly, Jenkins was released in 2011, and it has always been the first choice for testers in the CI / CD business. However, since its release in 2014, gitlab CI / CD has been at the top of the list with cutting-edge functions. When we published this article, we conducted a poll on social media.

 

 

Another tool most mentioned is gitlab CI / CD. As a Devops testing expert, you need to carefully review these tools according to your own project, budget and other needs. To help you, I will make an in-depth evaluation of Jenkins vs gitlab CI / CD to help you determine the appropriate CI / CD tools to meet your project needs.

1、 Jenkins introduction

 

 

Jenkins is a famous extensible open source CI / CD tool for automated deployment. Jenkins is written entirely in Java and released under MIT license. It has a set of powerful functions, which can automate the construction, testing, deployment, integration and release of software. This automated CI / CD tool for testing can be used on MacOS, windows and various UNIX versions (such as openSUSE, Ubuntu, red hat, etc.). In addition to installing through the local installation package, it can also be installed separately on any machine that has installed the Java runtime environment (JRE) or as a docker.

The Jenkins team also has a sub project called Jenkins x, which is dedicated to running an out of the box pipeline seamlessly connected with kubernetes. Jenkins x cleverly integrates helm, Jenkins CI / CD server, kubernetes and other tools to provide a standardized CI / CD tool pipeline with built-in best practices, such as using gitops to manage the environment.

One bonus of using Jenkins is that its script is well structured, easy to understand and readable. The Jenkins team has developed nearly 1000 plug-ins that allow applications to be mixed with other familiar technologies. In addition, you can also use plug-ins such as credentials command. This makes it easy to add hidden authentication credentials, etc. to the script.

Once Jenkins pipeline starts running, you can also verify whether each stage passes or not and the total number of each stage. However, you cannot check the status of a particular job in the graphical overview provided. What you can do is track the progress of the work in the terminal.

Jenkins core features

Jenkins is famous for its ease of configuration, automation of the build process, and the large number of documents it provides to users. When it comes to Devops testing, Jenkins is considered to be very reliable and there is no need to monitor the whole construction process, which is not so reassuring for other CI / CD tools. Let’s take a look at some of the most important features provided by Jenkins——

1. Free, open source and easy to install

Jenkins is easy to install on MacOS, UNIX, windows and other platforms. It can be combined with docker to bring higher consistency and additional speed to automated jobs. It can run as a servlet in Java containers such as Apache Tomcat and GlassFish. You can find a lot of support and documentation to guide the entire installation process.

2. Extensive plug-in ecosystem

The plug-in ecosystem of this tool is more mature than other CI / CD tools. At present, this ecosystem provides 1500 + plug-ins. Because these plug-ins range from language specific development tools to build tools, customization becomes very simple and convenient. Therefore, you don’t need to buy expensive plug-ins. Jenkins plug-in integration is also applicable to some Devops testing tools.

3. Easy installation and configuration

The configuration process of this tool is very simple. You only need to operate some steps during installation. Jenkins’ upgrade process is not cumbersome and very direct. Moreover, the supporting documents provided by it are also very helpful for you to configure tools according to your own needs.

4. Useful communities

As you know, this is an open source project with a huge plug-in ecosystem. The functions of all plug-ins are supported by a large number of community contributions. Jenkins’ amazing community participation is also a major reason for its maturity.

5. Provide rest API

Jenkins provides a rest style application program interface to facilitate expansion. Jenkins’s remote access API has three different styles — python, XML and JSON (supporting jsonp). There is a page in the Jenkins website with descriptive documents about the Jenkins API, which helps to expand.

6. Support parallel execution

Jenkins supports parallel testing. You can easily integrate it with different tools and be notified of the success of the build. Developers can even execute multiple builds in parallel on different virtual machines to speed up the testing process.

7. Easily assign work

It can run distributed work effortlessly, that is, tasks run on different machines without affecting the GUI (user graphical interface). It is worth mentioning that compared with other CI / CD tools, only this tool can use the same instance of running GUI related tasks.

2、 Introduction to gitlab CI / CD

 

 

 

Of all the CI / CD tools used for testing, gitlab CI / CD is undoubtedly the latest and most appreciated choice. It is a free and self hosted continuous integration tool built into gitlab CI / CD. Gitlab CI / CD has a community version that provides git warehouse management, problem tracking, code reviews, wikis, and event subscriptions. Many companies install gitlab CI / CD locally and connect it to active directory and LDAP servers for security authorization and authentication.

Gitlab ci/cd was previously released as an independent project and has been integrated into gitlab main software since gitlab 8.0 was released in September 2015. A single gitlab CI / CD server can manage more than 25000 users. It can also form a high availability configuration with multiple active servers.

Gitlab CI / CD and gitlab are written in ruby and go and released under MIT license. In addition to the CI / CD functions that other CI / CD tools focus on, gitlab CI / CD also provides functions such as planning, packaging, source code management, publishing, configuration and review.

Gitlab CI / CD also provides a warehouse, so the integration of gitlab CI / CD is very simple and direct. When using gitlab CI / CD, the phase command contains a series of phases that will be implemented or executed in a precise order. After implementation, each job is described and configured with various options.

Each job is a part of a phase and will automatically run in parallel with other jobs in similar phases. Once you do that, the job is configured and you can run the gitlab CI / CD pipeline. The results will be demonstrated later, and you can check the status of each job you specify at a certain stage. This is also the difference between gitlab CI / CD and other CI / CD Tools for Devops testing.

 

Gitlab CI / CD core features

Gitlab CI / CD is one of the most popular CI / CD Tools for Devops testing. Gitlab CI / CD is rich in documentation, easy to control and has a good user experience. If you have just come into contact with gitlab CI / CD, I listed the main functions of gitlab CI / CD, which will help you understand it. Let’s have a look.

1. High availability deployment

It is widely used and is one of the latest available open source CI / CD tools. Gitlab CI / CD is easy to install and configure. It is a free and self hosted continuous integration tool built into gitlab. Gitlab CI / CD has gradually developed into one of the most popular free CI / CD Tools for automated deployment.

2. Jekyll plug-in support

Jekyll plug-in is a static website generator. It has good support for GitHub pages, which makes the construction process easier. The Jekyll plugin supports the use of HTML files and markdown to create a completely static site based on your layout preferences. You can edit your_ config. YML file to easily configure most Jekyll settings, such as plug-ins and themes for your website.

3. Milestone setting

Milestone setting in the tool is a good way to track problems, improve a series of problems, and draw warehouse requests. You can easily assign project milestones to any question, or merge requests that are not common in the project, or assign group milestones to a group of questions, or merge requests for any item in the group.

4. Continuously integrated operator with automatic expansion

The automatically scalable gitlab continuous integration operator can easily manage and save 90% EC2 cost. This is really important, especially for parallel test environments. Moreover, for component level or project level runners, they can be used across code bases.

5. Problem tracking and problem discussion

Due to its powerful problem tracking and problem discussion functions, gitlab is the preferred CI / CD tool for countless open source projects. It cleverly allows you to test pull requests and branches in parallel. For simple and convenient monitoring, the test results are displayed on the GitHub UI. Due to its simple user interface, it is more user-friendly than Jenkins.

6. use access control to manage git warehouse

You can easily manage the GIT repository with access rights. You can easily grant write / read access to collaborators in a single warehouse, and even members of a specific organization can have finer grained access control over the organization’s warehouse.

7. Active community support

An active and progressive community is a major bonus point for gitlab CI / CD. All the support provided is out of the box and does not need to be modified in the installation of additional plug-ins.

8. Code review and merge request

Gitlab CI / CD is used not only to build code, but also to review code. It allows for improved collaboration using simple merge requests and merge management systems. It supports almost all version control systems and build environments. A large number of collaboration schemes have been implemented under the GitHub project, which contribute to the expansion of gitlab CI / CD.

 

3、 Functional comparison of Jenkins vs gitlab CI / CD

Jenkins and gitlab CI / CD both have areas where they are very good at and their respective technology followers. However, many features will be discussed when discussing the Jenkins vs gitlab CI / CD dispute. The following figure is a comparison of all the functions provided by the two CI / CD tools.

 

 

4、 Jenkins vs gitlab CI / CD differences

Now that you’ve seen the functional comparison between Jenkins vs gitlab CI / CD, it’s time to take a look at the differences between the two Devops testing tools. These differences will help you understand the real reasons behind the Jenkins vs gitlab CI / CD battle.

With the help of gitlab CI / CD, you can control the GIT warehouse through full control of branches and other aspects, so as to protect your code from sudden threats. However, when using Jenkins, although you can control the code base, there are only a few aspects. Jenkins does not allow full control of branches and other aspects.

Jenkins is “internally hosted” and “free and open source”, which is why programmers choose it. On the other hand, gitlab CI / CD is “self hosted” and “free”, which is why developers prefer it.

In gitlab CI / CD, each project has a tracking program, which will track problems and conduct code review to improve efficiency. In the Jenkins tool, it changes some setting support and a simple installation and configuration process.

 

Advantages and disadvantages

I hope you understand Jenkins vs gitlab CI / CD now. To go further, I listed the main advantages and disadvantages related to Jenkins vs gitlab CI / CD. I know you have decided which Devops test tool you want to use. This section will help you strengthen your belief in choosing the right CI / CD tool.

1. Advantages of Jenkins

  • A large number of plug-in libraries;
  • Self hosting, such as full control of the workspace;
  • Easy to debug and run, due to the absolute control of the workspace;
  • Easy to build nodes;
  • Easy to deploy code;
  • Very good voucher management;
  • Very flexible and diverse functions;
  • Support different languages;
  • Very intuitive.

2. Jenkins’ shortcomings

  • Complex plug-in integration
  • For smaller projects, the cost is higher, because you need to build it yourself
  • Lack of analysis of the entire pipeline trace

3. Advantages of gitlab CI / CD

  • Better docker integration
  • It is easy to expand or shrink the program
  • Jobs in stages are executed in parallel
  • The opportunity of directed acyclic graph pipeline
  • It is very easy to expand and shrink due to running programs concurrently
  • Merge request integration
  • Easy to add jobs
  • Easy to handle conflict issues
  • Good security and privacy policy

4. Disadvantages of gitlab CI / CD

  • You need to define build and upload / Download for each job
  • It is impossible to test the merge status before the actual merge occurs
  • Subdivision phase is not supported yet

 

How to choose

Jenkins and gitlab CI / CD have their own advantages and disadvantages. Your final choice between these two tools depends on the project requirements and specifications. Each CI / CD tool has its own advantages and disadvantages. When it is released, it realizes exactly the same requirements: automating the process of CI / CD (continuous integration and delivery). Jenkins is used for continuous integration, while gitlab CI / CD is used for code collaboration and version control.

When selecting the best CI / CD tool for Devops testing, in addition to the prominent features, you should also check the price list and internal proficiency.

By Rahul Jain

Recommended Today

Curl command usage instance

header curl -i –header “access_token=0e0fddab-6a29-4db7-abc2-6b93961087be” http://localhost:3000/external cookie curl -i –cookie “token=566812eb-43c8-425f-a640-264a38003848” http://localhost:3000/external post curl -i -d “user_id=xixicat&pwd=demo” -X POST http://localhost:3000/login get curl -i -X GET http://localhost:8080/api/repository/tasks File upload curl -v -F”[email protected]/Users/xixicat/downloads/1472807724.png” http://localhost:3000/api/tasks/197510/attachments\?name\=t1&type\=application/octet-stream curl -i -X POST -H “Content-Type: multipart/form-data” -F “[email protected]/Users/xixicat/downloads/1472807724.png” http://localhost:3006/api/tasks/197510/attachments\?name\=t1 doc Curl website development guide