He is a gifted driver. Famed for speed, reverse J, and drifts. He can breeze through the Moscow and Mexico traffic without sweating a drop. Of course, no one gets cracking on Bengaluru roads 😛 But despite being so adept behind the wheels, he sometimes fails to champ the street races. Screeching tyres buzz in his head doesn’t let him sleep at times. I wish to tell him it’s not always about the driver, sometimes it’s the engine. That’s what happens when the right dev talent uses wrong, inefficient, incompatible CI/CD tools. The DevOps technologies you chose can abruptly break or smoothly accelerate your software development cycle. This article explores the Ford & the Ferrari of the CI/CD world in detail, CircleCI vs. GitLab, to help you pick the right one.
Modern software development approaches prioritize automating repetitive processes. ‘Lean, modular, iterative’ development is the new mantra of the dev community.
CI/CD tools help in boosting ROI by:
- Cutting costs.
- Speeding up time-to-market. Check how Financial Times optimized the test cycle from about 10 days to less than a day.
Winning & retaining customers.
Streamlining the process of integrating independently developed software modules.
Continuously testing application components independently as well as in an integrated state.
Continuously delivering new features as an integrated application.
According to marketsandmarkets, QA automation testing is growing at a whopping 18% CAGR and is estimated to hit USD 28.8 Bn in 2024. The upsurge in the adoption of automation tools further bolsters the belief in CI/CD development approach. Can there be any smoke without a fire?
How CI/CD Works?
If you’re new to CI/CD, you must be thinking, “okay! I get the benefits, but how is all this implemented under the hood?”. Basically,
- You use a hooked CI tool (hooks are a way to listen for change requests in the repository constantly) to your code repository.
- As soon as you try pushing the code to the repository, CI scripts get triggered. These scripts are lines of code in Python, C#, or any scripting language of your choice. The CI scripts build the application with newly pushed code and checks for any defects by subjecting it to automated unit tests & integration test scripts. These tests can be functional and non-functional. If there are errors, CI tools can be configured to alert the responsible authorities automatically.
- If the new code passes all tests, it is pushed to the continuous delivery stage and subsequently to the continuous deployment stage.
Each stage of CI/CD is critically dependent on robust automation tests. In short, continuous testing is the backbone of the entire CI/CD pipeline. Follow these CI/CD best practices to harvest optimum benefits out of it.
Now having answered what CI/CD pipeline is and highlighting the three obvious benefits of using DevOps tools, let’s briefly list some of the popular open-source and commercial CI/CD tools. Then we jump to the meat of this article, i.e., nose-to-nose comparison of CircleCI vs. GitLab.
Jenkins is the jack of all things in CI/CD. It’s server-based & open-sourced. Using Jenkins, you can automate almost the entire SDLC, everything from development & integration to testing, delivery, and deployment.
TeamCity, CircleCI, Bamboo, Codeship, GoCD, GitLab, Semaphore are some other popular CI/CD tools every DevOps engineer can play around with. Some of these are open-sourced, some commercially managed-solutions. Other than these, a DevOps guy would also have following gears up his sleeves.
- Configuration automation tools
- Ansible, Chef, Puppet, SolarWinds, CFEngine
- Container runtimes & orchestration tools
- Docker, Kubernetes, Amazon ECS, Containers
CircleCI, like GitLab, is a modern CI/CD solution. This tool automates the “build, test, deploy workflow of an SDLC.” CircleCI can be used in the cloud as a SaaS tool with an option to run self-hosted runners for better supervising security aspects. Alternatively, you may also consider installing the CircleCI platform on your private server and have 100% control over it.
CircleCI integrates with your code version control system, say GitHub or Bitbucket. Now, every time a developer pushes code to the repository, CircleCI creates a pipeline to process the code and test it against pre-scripted test-cases at various stages.
CircleCI automatically runs this newly committed code in an isolated container or a virtual machine. Suppose the new code fails any predefined tests. In that case, CircleCI can be configured to notify your authorized team-mates so that appropriate action, say debugging, code revision, or code roll-back, can be initiated. And if the committed code successfully passes the pipeline, it gets pushed to your target staging or deployment environment.
CircleCI orbs are
- Condensed lines of reusable build config script.
- Shareable packages.
- Open-sourced and helps in speeding up CI/CD setup.
- Reduce the complexity and number of code lines you need to write for integrating your stack with the CI/CD pipeline. Here’s a demo.
- Custom build environments & language support.
- CircleCI can be configured to imitate your target deployment environment by configuring your pipeline execution environment using a Docker image or a LINUX/Windows/macOS virtual machine(VM).
- You can use a pre-built docker image provided by CircleCI, or you may choose your own Docker Hub image as the runtime environment.
- CircleCI pre-installs Android SDK, NDK, and other dependencies and enables you to build and test Android apps on a Linux VM.
- Cloud, as well as Self-hosted CI/CD solution.
As already discussed, CircleCI can be leveraged to orchestrate CI/CD pipeline either in the CircleCI’s cloud-hosted computes or, you can also implement CI/CD by running CircleCI on your infrastructure. This would give you complete authority to control functionalities and maintenance work.
Note- macOS environment is limited to CircleCI’s cloud-hosted solution.
- Highly extensible with integrations.
- You can integrate CircleCI with AWS cloud ecosystem, Azure, DeployHub, Cloud Foundry, Google Cloud, OpenShift, Serverless, and several other environments/platforms to deploy your application.
- For testing, you can integrate CircleCI with platforms like LambdaTest.
- Find the full set of integrations here.
- Security and Performance
- With CircleCI, you have application-level security and isolated runtime environment security.
- CircleCI is SOC II, and fedRamp certified.
- If your CI/CD pipeline implemented using CircleCI fails, you can SSH into your failed build and quickly debug it.
- Effectively uses caching to speed-up builds.
- Minimal setup overheads.
- CircleCI Orbs speeds-up CI/CD pipeline setup process.
- Single config.yml file contains all configuration details in a declarative style.
Who uses CircleCI?
Facebook, Kickstarter, Spotify, Lyft, Coinbase, Expedia, and more.
GitLab positions itself as a SaaS-based holistic DevSecOps platform. What does that mean? It means it is a web-based git repository that allows you to plan your software and manage the entire development & operations cycle from managing source code to issue tracking, code integration, continuous testing, delivery, and deployment. It attempts to eliminate toolchain complexities involved in agile development methodology. In short, GitLab is a complete ecosystem for DevSecOps. For brevity and fair comparison, let’s limit ourselves to a niche GitLab product, i.e., GitLab CI/CD.
GitLab CI/CD is a UI based web application that manages your projects or builds. It is also accessible through APIs. GitLab Runner processes your builds, i.e., runner applications execute the code in .gitlab-ci.yml configuration file. It runs the script by working in tandem with GitLab CI/CD via an API interface. Runners can run tests in any language across platforms.
- You need to install and register a runner for your project. Define your CI/CD jobs in a structured order and with well-defined actions if certain conditions are met while executing these jobs. Save this YAML file as .gitlab-ci.yml file in the root directory of your project.
- When you push config files to your repository, the runner runs these specified jobs.
- Usually, a GitLab CI/CD pipeline would contain four stages – build, test, staging, and production. If your code commit passes all these stages, it is successfully delivered/deployed.
Related Read: How to build an Automated Testing Pipeline With GitLab CI/CD & Selenium Grid.
- Multi-environment, multi-platform, multi-language.
- GitLab CI/CD can be used to execute your build scripts on any platform that supports GO, including Windows, macOS, Unix, etc. It works with any language of your choice, including PHP, Python, Java, C, Ruby, etc.
- GitLab CI/CD Cloud vs. Self-hosted.
- You can use GitLab cloud, i.e., gitlab.com, or you can self-host it. You can self-host it on your infrastructure, including on a bare-metal server or in Kubernetes on a public cloud, totally up to you.
- GitLab CI can be used with GitHub, BitBucket, or any other GIT based server.
- GitLab platform can be used with Jenkins CI too.
- HipChat, Slack, Auth0, SAML, Bitbucket, Vault, and several other integrations are available to streamline project lifecycle management.
- Security & performance
- Autoscaling, autoDevOps, parallel builds, and container registry features aim to improve the performance of GitLab CI/CD.
- GitLab provides SAST, DAST, Dependency scanning, fuzz testing, secret detection, and license compliance features for delivering highly secure applications.
Who uses GitLab?
Thomson Reuters, Siemens, HotJar, Nvidia, Goldman Sachs, and more.
Automation saves so much time. What do nerds do with the extra time? We debate which tool is better—just kidding. We channelize the extra time at hand in doing more productive work and growing company revenue. But a DevOps team isn’t a DevOps team if they haven’t discussed which CI/CD tools are better, easy to use, and efficient. CircleCI vs. GitLab is one such hot topic in the automation community. Both CircleCI & GitLab were launched around the same time in 2011. Let’s evaluate their strengths & shortcomings:
What does the StackShare, G2 community have to say?
Do you know G2 awards 4.4 stars to both GitLab & CircleCI? Just like GitHub stars, StackShares stack counts reflect the popularity of technology. CircleCI boasts around 7.4k stacks, while GitLab enjoys 31.1k stacks. Besides, GitLab as well as GitLab CI are open-source technologies and have garnered 22k+ stars on GitHub. Wait, this is not a reflection of how good GitLab is at CI/CD. These numbers reflect overall popularity. CircleCI is primarily “a niche-focused continuous integration tool” while GitLab wears multiple hats, including “version control & code collaborator.”
CircleCI fans on StackShare are gaga about:
- GitHub integration
- Easy Setup
- Fast build
- Competitive price
- Slack Integration
GitLab fans on StackShare cherishes:
- Community edition
- Familiar interface
- Easy setup
A major differentiating factor between the two is:
- CircleCI works in integration with any version control system (VCS), say GitHub or bitbucket. CircleCI can be integrated with 50+ tools & services, including Slack and LambdaTest.
- GitLab provides out-of-the-box, in-built Git VCS, but it can also be used with GitHub for 400 free CI pipeline minutes. Beyond that, a user needs to upgrade plans. GitLab CI/CD can be used for Bitbucket cloud as well. GitLab chatOps enables working with CI/CD from slack chat interface. Plus, it can work with 160+ other tools and platforms, including LambdaTest.
How this impacts your choice of CI/CD tools?
The main intent behind implementing CI/CD pipelines is optimizing workflows. If your CI/CD tool natively supports the source control hosting service you’re using or external tools you want to integrate, then managing & addressing tickets would be easier and quicker. If you have to wait for days to solve issues, then the automation purpose is diluted. Both the tools provide flexibility in choosing your repository hosting but being an all-in-one solution, GitLab would have the edge over CircleCI as the learning curve gets shorter when you’ve to learn only one tool.
Both CircleCI & GitLab can speed up the CI/CD pipeline processes by executing jobs in parallel. CircleCI workflow achieves this by running each build in an isolated containerized environment. In GitLab, you can configure the YAML file to perform parallel operations based on runner availability.
Distributed job execution means horizontally scaling builds based on stages to multiple machines. CircleCI’s SaaS version distributes by default to several builder machines and is subject to availability, and there might not be any job queue. If you’re using the self-hosted CircleCI version, CircleCI still provides all the tools in-built to manage your clusters. GitLab too supports distributed scaling.
Docker Container Registry & Docker CI Runner comes pre-integrated with GitLab CI and avails complete CI/CD container workflow. Circle CI supports container build environments and runs each build in an isolated environment reset after every run. This translates into easy-identification of environment-born bugs.
All GitLab plans except the free version have a next business day support system. CircleCI provides premium support for customers who need it, and for others, it provides email-support. For free tier users, community support is available. Cloud CI plan or CircleCI is fully automated and doesn’t need any maintenance service.
Hosting, Platform, Language, API, Plugin Support
GitLab CI is available over the web and can run builds on any platform supporting GO, i.e., Windows, Unix, and macOS. It supports all major scripting and test automation languages, including Java, PHP, Ruby, C, Python. CircleCI is a cross-platform CI/CD solution; it supports Windows, macOS, managed cloud hosting, and you may even self-host on your dedicated infrastructure. Like GitLab, CircleCI supports all popular scripting technologies.
|MAINTENANCE||EMAIL, PREMIUM, COMMUNITY||COMMUNITY, NEXT BUSINESS DAY SUPPORT, PRIORITY SUPPORT|
|PARALLEL & DISTRIBUTED BUILDS||YES||YES|
|SCHEDULING||YES||USING CRON LIKE SETUP, YES|
|CONTAINER/ DOCKER||YES||SHIPS WITH DOCKER|
As you would have noticed, I referred to this comparison as Ford Vs. Ferrari. It was for a reason. Both the tools are equally good for streamlining your SDLC and implementing CI/CD for business agility. What is best suited to you is dependent on the tools you wish to integrate them with. LambdaTest cloud Selenium Grid allows easy integration with both CircleCI and GitLab. Evaluate wisely before coming to a decision. Wrong tools can push developer productivity in the valley; the right compatible tools can peak it. For automation testing, the LamdaTest platform has got your back; pick your CI/CD tool, and integrate it with LambdaTest.