September 7, 2022

What is CircleCI? A Look at Features and Use Cases

Table of Contents

CircleCI is a leading CI/CD platform offering robust features like the Insights Dashboard, clean environments, and reusable configurations called Orbs. It supports various infrastructures and simplifies DevOps practices, though its complex pricing model may be a challenge for users.

In this review, we go over what continuous integrations is, what CircleCI is, pros and cons, use cases, and how it compares to Harness CI. It is less well-known though, that CircleCI can do continuous deployments. They have only been offering this capability since the acquisition of a small company in that space called Vamp

What is CircleCI? CircleCI is both a company and a product. The product is a continuous integration system hosted by the company. It was founded in San Francisco, CA in 2011. Since then, it has raised several hundred million dollars in financing and has consolidated as a leading player in the CI space. CircleCI was built in Clojure, which at the time was one of the newest programming languages. It has two fundamental types of setups: Cloud and Server. Their Cloud offering is a hosted solution: everything runs on CircleCI’s premises. Their clients just log on to that hosted platform and run all their builds, tests and pipelines there. Their On-Premise offering is the opposite: their clients install and maintain CircleCI on their own infrastructure.  


How does CircleCI work? CircleCI is served as a SaaS and on prem. It builds, tests and deploys applications. CircleCI targets several different environments and architectures like Linux, macOS, Windows, ARM, and Android to name a few. CircleCI hence is a CI CD platform that automates builds, testing and deployment of software applications. Their solution is proprietary and it connects to a number of services to consume their artifacts. For example, they connect to several Git services to listen to events that trigger pipelines or consume source code that is used for builds and tests. 

What is Continuous Integration? How does CircleCI help software teams?

What is continuous integration? Continuous Integration is a set of software development best practices where members of a team integrate their work frequently, ideally several times a day. Each integration is verified by an automated build (including the complete test suite or the incremental portion of it) to detect integration errors as quickly as possible. The benefits of continuous integration leads to significant reductions in integration conflicts and allows teams to develop cohesive, quality software more rapidly. 

CircleCI helps with the adoption of these best practices by providing speed, ease of use, and security to their build pipelines. It claims to do so by simplifying some parts of the DevOps process. These benefits are achieved through several features.

Also if you want to learn about CI/CD, check out: What is CI/CD?

CircleCI Features and Use Cases

Insights Dashboard – This is the main interface to interact with CircleCI. This is the place to monitor all CI CD pipelines. In it you can find workflow status, duration, and consumption data. It will allow users to:

  • Track status: the status of the jobs and pipeline improvement in general can be undergone with this feature.
  • Monitor Duration: This is the feature to identify opportunities to cache, insert parallelize, and to speed things up in general.
  • Optimize consumption: Credit spend and all the financial consumption activities are collected here, including credit spend per job and/or workflow and predictability. 

Clean Environments – This feature allows you to run clean images and provision them. 

Workflows – This feature allows users to define and orchestrate job executions. 

Orbs – An orb is a reusable CircleCI configuration. You have three kinds of configuration you can re-use:

  1. Jobs: a job to which you can also pass environment variables to. 
  2. Executors: an environment in which to execute code (Docker image, VMs, etc).
  3. Commands: a set of steps that can be reused.

CircleCI is mostly used for CI projects rather than continuous delivery. It can deploy software, of course, but its architecture was designed with developers in mind. Those build and test source code rather than deploy it. 

CircleCI Pricing

CircleCI’s pricing can get a bit complicated. Simply put, CircleCI is popular for providing fairly fat bills to its users, mostly their hosted plan user seats. Presumably, this has something to do with how the pricing model is based on credits, not only on prices per user or seat. This adds a layer of complexity that makes it unnecessarily obscure for users to figure out or plan for their upcoming bills. 

Customers pay $15 as soon as a Pull Request is performed (an event that triggers any pipeline). On top of that, they are charged based on the compute resources they use. Credits are bundled in credit packages and their value per unit of time depends on the compute instance that is chosen to run the client's jobs. 

In other words, CircleCI offers multiple types of compute (Linux, Windows, macOS, Docker, and others), and each type of compute costs a given number of credits per minute. For example, the medium Docker compute resource (the default for Docker) costs 10 credits ($0.006) per minute, so a job running for 3 minutes on a medium Docker resource costs 30 credits ($0.018). You can check all the different credit package options depending on the infrastructure they are run on here

For the average CircleCI user to plan ahead, consulting and calculating for their persistent data egress and ingress is vital to keep their invoices in shape. This involves forecasting for consumption from caching dependencies or artifact consumption/delivery. Workspace optimization that will feed their jobs data. And, eventually, network and storage use. I don’t find it clear at all in the Pricing page how to figure out their network transfer and network storage prices. 

This makes CircleCI’s insistence on pitching their performance now so obvious. It seems then that their pricing is designed to incentivize high performant usage regardless of customer needs, not so much based on efficiency, elastic scale and cost management. 

H2: CircleCI Ratings

Usability ⭐⭐⭐

Likeness to Renew ⭐⭐

Onboarding ⭐⭐⭐

Performance ⭐⭐⭐

Verifications ⭐⭐

Integrations ⭐⭐⭐⭐

Support ⭐⭐

CI CD Integration ⭐⭐⭐⭐

Scalability ⭐⭐

CircleCI Pros and Cons

Pros

  • Huge range of infrastructure options across all performance ranges and operating systems making it easy to set up and move quick
  • First cloud CI CD system to be FedRamp and SOC2 compliant
  • Low barrier to entry with Free plan and free credits for open source community
  • Docker Layer Caching Concurrency Limits and resource class options make it one of the fastest CI tools out of the box

Cons

  • Pricing is way too complex, and it feels that it is designed for obscurity. Credits are very difficult to calculate. Running by number of users, the machine size, the concurrency amount, if Docker Layer Caching is used, if there is network transfer occurring (CD) and if there is Network Storage (Caching) – if being used as CircleCI intends, CircleCI can turn out to be an expensive tool
  • It seems to be missing a lot of capabilities beyond the core CI focus. A product that calls itself a CI/CD platform could do better beyond CI. 
  • Outages - CircleCI regularly has downtime lasting over 6 hours long. Stability is a major issue.
  • No Native governance - all project roles-based access control must be handled by the SCM that CircleCI is attached to.
  • Not SCM agnostic. Only connects with BitBucket, GitHub and just very recently GitLab. A new account would be needed for each SCM an organization uses.

Looking for More? Check Out Harness CI

There are plenty of alternatives in the CI space. From the legacy systems such as Jenkins, TeamCity, or Bamboo to the more modern ones like GitLab CI or Drone, which was founded in 2012 and is now part of the Harness platform. Drone is the free and open source version of Harness CI module.

Harness CI is an enterprise ready, cloud-native CI product. Developers can build at speed with self-service, cloud native pipelines that scale elastically. Easy templating, RBAC, and governance done programmatically, as code or through our GUI, ensures any code meeting all quality and security standards.

Continuous Integration