CircleCI vs GitHub Actions: Comparing CI/CD Platforms

The right CI/CD platform can make or break an organization’s application development efforts. Although CI/CD platforms and tools serve the same general purpose, success depends on an IT organization’s programmers and their specific development processes.

CircleCI and GitHub Actions are two important CI/CD platforms to consider. Each tool has its own unique features, processes, and pipeline workflows that appeal to programmers.

Also, each offers both a free and paid tier. Free tiers come with features like on-demand compute instances to build, test, and deploy your app; a configuration file written in YAML to define CI/CD processes; a handy dashboard to monitor project construction status and other features.

Let’s compare CircleCI and GitHub Actions for CI/CD platform options and look at the features dev teams should look for.

Breakdown of functionality between CircleCI and GitHub Actions

CircleCI and GitHub Actions are available as a self-hosted platform or as a SaaS product.

Repository compatibility. When using the SaaS option, a programming team’s repository needs continuous access to the platform to retrieve the application source code. CircleCI works with public or private repositories stored in GitHub or Bitbucket. Comparatively, GitHub Actions is only available for repositories stored in GitHub. Before finalizing a decision on CircleCI vs. GitHub Actions, team members will need to confirm that their repositories are supported by their preferred platform.

CircleCI works with public or private repositories stored in GitHub or Bitbucket. Comparatively, GitHub Actions is only available for repositories stored in GitHub.

User interfaces. Some IT organizations prefer GitHub actions because they are more tightly integrated with their code repositories on GitHub. Development teams will love the familiar user interface. If a team’s repositories are not linked to GitHub, CircleCI has UI features that could prove beneficial. For a team that wants to host an application’s pipeline and code repository in one place, GitHub Actions might have the advantage.

Amount of computation time. Users of the public repository will have free, unlimited compute times on GitHub Actions. However, users of the GitHub Action free tier private repository are limited to 2,000 minutes of compute time per month.

The free tier of CircleCI offers 30,000 credits – how CircleCI measures users and compute instance usage per build – each month for private and public repositories. For example, the 30,000 credits in the free tier would provide 3,000 build minutes when using a Docker or Linux average compute instance at 10 credits per minute. Here’s another way to frame this:

  • The free tier of GitHub Actions has unlimited minutes for public repositories.
  • The free tier of GitHub Actions has a limit of 2,000 minutes for private repositories.
  • CircleCI’s free tier makes no distinction between public and private pensions.
  • CircleCI’s free tier typically offers 3,000 minutes.

GitHub Actions is more profitable for users of public repositories. However, CircleCI may offer a better deal for projects with private repositories.

When the teams compare the two platforms, they find that GitHub Actions is more profitable for users of public repositories. However, CircleCI may offer a better deal for projects with private repositories.

Paid versions. A team that upgrades to the paid tier of CircleCI will benefit from larger compute instance sizes and more credits per month. These features allow programmers to run more builds with additional credits and run builds faster with more computing power. Paid tiers of CircleCI also allow more users, which applies to private repositories. On GitHub Actions, paid tiers unlock more minutes of build time. The vendor details the features available in the Free, Team, and Enterprise versions here.

Calculation specification options. CircleCI allows to run builds on different compute instances. For some projects, it may make sense to use a larger instance size to improve build times at the cost of spending more credits. However, GitHub Actions only offers the ability to run on a Windows, MacOS, or Linux machine with particular non-modifiable specs.

Separation of files. While CircleCI forces pipelines to exist as a single configuration YAML file, GitHub Actions pipelines can be split into separate YAML files for each workflow. For example, GitHub Actions programmers can create multiple YAML files; a team can divide the files according to the environment for which a team has tested and created an application. This feature can help developers create a cleaner design for applications that use a different build process for a development and production environment.

Build access. CircleCI offers SSH access to builds, unlike GitHub Actions. With SSH access, programmers will be able to easily debug issues with commands or files not present in unexpected directories.

Orbs vs Actions

Both CI/CD platforms offer a reusable and simplified command that allows a pipeline to extract commonly used predefined processes. In GitHub Actions, the feature is called Actions. CircleCI’s counterpart is called orbs. With this feature, development teams can save time and reduce process complexity.

Design differences. Many orbs – i.e. commands – exist for often used services from cloud providers, such as AWS, Azure and Google Cloud Platform. For example, programmers can use a CircleCI orb to invoke a command like aws-ecr/build-and-push-image.

With this orb, CircleCI will create a Docker image and automatically push it to the desired ECR repository. For sensitive internal processes, programmers can create private orbs only available to their IT department.

GitHub actions are also supported by cloud providers, but do not offer the option to publish an action privately. For example, building and pushing an image to ECR with GitHub Actions looks like this:

- name: Login to Amazon ECR

id: login-ecr
uses: aws-actions/[email protected]
- name: Build, tag, and push image to Amazon ECR
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: my-ecr-repo
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG

While the equivalent operation using CircleCI’s orbs looks like this:

- aws-ecr/build-and-push-image:
account-url: AWS_ECR_ACCOUNT_URL
region: AWS_REGION
repo: '${MY_APP_PREFIX}'
tag: '${CIRCLE_SHA1}'

When programmers use CircleCI, they will likely find that the platform provides the parameters to form an operation and the orb can handle the rest. In contrast, GitHub Actions requires more input and specifically requires Docker commands. CircleCI’s design could be considered cleaner and simpler, while GitHub Actions offers more granular control by exposing commands that CircleCI keeps behind the curtain.

Final Considerations for CircleCI vs GitHub Actions

While CircleCI and GitHub Actions accomplish the same tasks, each service has a different feel and ethos.

Teams may feel pressured to use one platform over another based on their selection of repositories and perceived process compatibility. If teams can, they should try out each service so that programmers can evaluate each option and best determine which tool is best suited for their organization’s build and test processes.

Jack L. Goldstein