What is CircleCI and why should we use it compare to other CI/CD?

What is CircleCI?

CircleCI is a continuous integration and continuous deployment (CI/CD) tool. It automates the build, test, and deployment of software.

It consists of a simple YAML file where we tell it what to run whenever it detects a change to the Git repo.

Why use CircleCI?

CircleCI is very promising for building, testing, and deployment of software. Following are some of the reasons for using CircleCI:

  • CircleCI is optimized for faster build
  • CircleCI can be configured to run very complex pipelines
  • CircleCI can be configured to use sophisticated caching
  • CircleCI can be configured to use docker layer caching
  • CircleCI can be configured to use resource classes for running on faster machines

Following are some more reasons of using CircleCI:

Build Isolation

  • Each build runs in a clean LXC Container, so you can be confident you’re getting a fresh run of your tests.
  • SSH directly to the containers running your build for advanced debugging.
  • Full scripting capabilities, including sudo.

Developer-Driven Configuration

  • Parallelism allows splitting your tests across any number of containers, each of which runs as completely clean build. Tests can be automatically split based on timing distribution, or you can manually configure your test splits.
  • A wide array of packages are pre-installed on the build containers and are ready to go, including most popular databases, languages, and frameworks.
  • Dependency caching saves time on subsequent builds.

Fast Builds

  • Build configuration lives in code via a circle.yml file, allowing each developer to tweak builds on a per-branch basis when needed.
  • No centralized plugins to manage, so no bottlenecks on DevOps needing to configure each change to your builds.
  • Store your secrets securely in env vars that will automatically be made available to your builds.

Broad, Extensible Coverage

  • First-class support for Docker builds
  • First-class support for iOS builds
  • Extensive API for custom integrations
  • Automated inference gets most projects building with little or no configuration, but you are unrestricted in what languages, frameworks, and dependencies you can use in your builds.

GitHub Friendly

  • Direct integration with GitHub for authentication and authorization, so you don’t need to reprovision accounts for your team.
  • Automatic creation of hooks make it a breeze to get your repos set up to build when anyone on your team commits code.
  • Quickly see the build status of your pull requests, and easily configure triggering builds when tagging your repo.

Compaines using CircleCI:

  • Instacart.
  • Stripe.
  • Lyft.
  • StackShare.
  • LaunchDarkly.
  • Delivery Hero.
  • Stack.
  • Tokopedia.

CircleCI vs GitLab

Following is the summary of CircleCI and Gitlab usage:

GitLab CircleCI
YESSelf Hosted and .comYES
YESEcosystem (https://about.gitlab.com/partners/)YES
NoMarketplaceYES
YESCD fully integrated – no 3rd party Plugins/tools needNo
YESBuilt in Kubernetes Deployment and MonitoringNo
YESAuto CI Pipeline ConfigurationNo
YESBuilt in CI Security Scanning – no 3rd party Plugins/tools neededNo
YESSecurity Dashboard enabling Security Team collaborationNo
YESSupports Hybrid CI Orchestration Model (SaaS CI Server and On-Prem Agent)No
Reference:

https://circleci.com/docs/enterprise/whycci/
https://about.gitlab.com/devops-tools/circle-ci-vs-gitlab/bdm/
https://stackoverflow.com/questions/44672893/is-there-a-way-to-trigger-a-circleci-build-on-a-pull-request
https://techcrunch.com/2019/08/07/circleci-brings-its-continuous-integration-to-microsoft-programmers-for-first-time/