GitLab CI vs. Circle CI

GitLab compared to other tools

GitLab is the next-generation development toolset that covers 100% of your software development lifecycle.

GitLab unifies chat, issues, code review, CI, CD, and cycle analytics into a single UI. Unlike other source code management tools that only support a portion of your development lifecycle, GitLab delivers a unified experience for every step of the development lifecycle providing the most efficient approach to software delivery. So no matter what line of business you're in, GitLab gives you the edge to compete, innovate, and win.

FEATURES

Extensible

GitLab CI is extensible through an API.

Learn more about GitLab's API

Built for containers and Docker

GitLab ships with its own Container Registry, Docker CI Runner and is ready for a complete CI/CD container workflow, while Jenkins requires you to install, configure and maintain additional plugins to create a similar workflow.

Cloud Native

GitLab CI/CD is Cloud Native, purpose built for the cloud model. GitLab ships with Red Hat OpenShift and Kubernetes support out of the box.

Environment monitoring

GitLab ships with Prometheus allowing you to monitor the performance of your deployed environments without any additional setup.

Learn more about Prometheus

Integrates with Cycle Analytics

GitLab CI integrates with GitLab Cycle Analytics allowing you see how much of your cycle time from idea to production is spent on development, testing and review.

Preview your changes with Review Apps

With GitLab CI you can create a new environment for each one of your branches, speeding up your development process. Spin up dynamic environments for your merge requests with the ability to preview your branch in a live environment.

Learn more about Review Apps

Comprehensive pipeline graphs

Pipelines can be complex structures with many sequential and parallel jobs. To make it a little easier to see what is going on, you can view a graph of a single pipeline and its status.

Learn more about pipeline graphs

Browsable artifacts

With GitLab CI you can upload your job artifacts in GitLab itself without the need of an external service. Because of this, artifacts are also browsable through GitLab's web interface. Travis CI relies on having an AWS S3 account in order to upload artifacts.

Learn more about using job artifacts in your project

Support for Canary Deployments monitoring

GitLab Enterprise Edition Premium can monitor your Canary Deployments when deploying your applications with Kubernetes.

Learn more about configuring Canary Deployments

Scheduled triggering of pipelines

You can make your pipelines run on a schedule in a cron-like environment.

Learn how to trigger pipelines on a schedule in GitLab

Code Quality

Code Quality reports, available in the merge request widget area, give you an early insight into how the change will affect the health of your code before deciding if you want to accept it.

Learn more about Code Quality reports

Multi-project pipeline graphs

With multi-project pipeline graphs you can see how upstream and downstream pipelines are linked together for projects that are linked to others via triggers as part of a more complex design, as it is for micro-services architecture.

Learn more about multi-project pipeline graphs

Protected secret variables

You can mark a secret variable as "protected" to make it available only to jobs running on protected branches, therefore only authorized users can get access to it.

Learn how to use protected secret variables

Environments history

Environments history allows you to see what is currently being deployed on your servers, and to access a detailed view for all the past deployments. From this list you can also re-deploy the current version, or even rollback an old stable one in case something went wrong.

Learn more about history of an environment

Group-level Secret Variables

You can define variables at group level and use them in any project in the group.

Learn how to configure secret variables

Customizable Path for CI/CD Configuration

You can define a custom path into your repository for your CI/CD configuration file.

Learn how to configure a custom CI/CD configuration file

Run jobs on Windows

GitLab Runner supports Windows operating system and can run jobs natively on this platform. You can automate build, test and deploy for Windows based projects leveraging powershell or batch files.

Install GitLab Runner on Windows

Run jobs on OSX

GitLab Runner supports OSX operating system and can run jobs natively on this platform. You can automate build, test and deploy for OSX based projects leveraging shell scripts and command line tools.

Install GitLab Runner on OSX

Run jobs on Linux ARM

GitLab Runner supports Linux operating system on ARM architectures and can run jobs natively on this platform. You can automate build, test and deploy for Linux ARM based projects leveraging shell scripts and command line tools.

Install GitLab Runner on Linux

Run jobs on FreeBSD

GitLab Runner supports FreeBSD operating system and can run jobs natively on this platform. You can automate build, test and deploy for FreeBSD based projects leveraging shell scripts and command line tools.

Install GitLab Runner on FreeBSD

Show code coverage rate for your pipelines

GitLab is able to parse job output logs and search, via a customizable regex, any information created by tools like SimpleCov to get code coverage. Data is automatically available in the UI and also as a badge you can embedd in any HTML page or publish using GitLab Pages.

Learn how to generate and show code coverage information in GitLab

Manage JUnit reports created by CI jobs

Many languages use frameworks that automatically run tests on your code and create a report: one example is the JUnit format that is common to different tools. GitLab supports browsing artifacts and you can download reports, but we're still working on a proper way to integrate them directly into the product.

Read more on the issue

Details on duration for each command execution

Other CI systems show execution time for each single command run in CI jobs, not just the overall time. We're reconsidering how job output logs are managed in order to add this feature as well.

Read more on the issue