Skip to content
compiler.dev

CircleCI vs GitHub Actions with compiler.dev runners

Last updated

CircleCI is a hosted CI platform that bills in credits. GitHub Actions is built into GitHub and bills per minute. If your code is on GitHub and your main complaint is build time or cost, you can often stay on Actions and run it on faster machines, which is what compiler.dev does. This page compares the two honestly, including the places where CircleCI is better.

How CircleCI pricing works

CircleCI sells credits. On its pricing page (checked October 2026) the Free plan gives 30,000 credits a month, the Performance plan starts at $15 a month, and extra credits cost $15 per 25,000, which is $0.0006 per credit. Open source projects on the Free plan can get up to 400,000 credits a month for Linux, Arm and Docker.

Credits are spent per minute, depending on machine size. From CircleCI's price list (checked October 2026), an x86 Docker executor costs:

SizevCPU / RAMCredits per minApprox. $ per min
Medium2 / 4 GB10$0.006
Large4 / 8 GB20$0.012
X-large8 / 16 GB40$0.024

The dollar column is our arithmetic at $0.0006 per credit. Your effective rate depends on your plan and any prepaid discount, so treat it as a list-price estimate. CircleCI also lists a "Gen 2" Docker class at slightly higher credit rates.

Side by side

CircleCIGitHub Actions + compiler.dev
Pricing modelCredits, plus a plan feePer minute, prepaid credit
Comparable 8 vCPU Linux40 credits/min (about $0.024)$0.012/min (16 GB RAM)
2 vCPU Linux10 credits/min (about $0.006)GitHub $0.006/min, or compiler.dev 2 vCPU at $0.003/min
macOSM4 Pro Medium (6 vCPU) 200 credits/min, about $0.12M4 Pro 7-core VM $0.028/min (early access)
Config.circleci/config.yml.github/workflows/*.yml
Cachingsave_cache / restore_cache, plus Docker layer cachingactions/cache, plus caches on the machine
Self-hostedSelf-hosted runnersSelf-hosted runners
EcosystemOrbsMarketplace actions
Where it runsCircleCI cloud, or your own runnersGitHub, with jobs on compiler.dev machines

The 8 vCPU comparison is not perfectly like for like: CircleCI's x-large has 16 GB and a different CPU. Run your own job on both before you trust any single number.

Where CircleCI is genuinely better

  • Test insights. CircleCI tracks flaky tests, slowest tests and timing trends per job in the UI. Actions has no built-in equivalent; you need a third-party tool.
  • Automatic test splitting. circleci tests split --split-by=timings balances shards by past timing data. In Actions you build this yourself, see test sharding on GitHub Actions.
  • SSH into a failed job. "Rerun job with SSH" is built in. Actions needs a community action for the same thing.
  • Orbs and config reuse. Orbs package jobs, commands and executors with parameters. Reusable workflows in Actions cover a lot of this, but orbs are tidier for some patterns.
  • Same platform for Bitbucket and GitHub repos. If you are split across hosts, one CI is simpler.

If those features carry your workflow, moving is a real loss, and a runner change will not give them back.

The case for GitHub Actions on faster runners

If the code is already on GitHub, Actions sits next to the pull request: checks, required statuses, merge queue, Dependabot and CODEOWNERS all work without a second system and a second login. Marketplace actions cover most tools.

The usual objection is that standard hosted runners are slow. That is a runner problem. compiler.dev runs the same workflow on 8 vCPU / 16 GB machines, a fresh VM per job, at $0.012 per minute, against GitHub's 8-core larger runner at $0.022. In our benchmarks of full CI runs, jobs were a median 1.5× faster across 18 measured stacks (15 faster, 2 the same, 1 slower) than GitHub-hosted runners, for example an Angular + Spring Boot + Postgres pipeline went from 6m57s to 2m18s. We did not benchmark against CircleCI, so we make no claim about that gap. See pricing for current rates.

If credit runs out or something fails, jobs fall back to your original runners, so CI keeps running.

Migration sketch

A typical CircleCI Node job:

version: 2.1
jobs:
  test:
    docker:
      - image: cimg/node:20.11
    resource_class: xlarge
    steps:
      - checkout
      - restore_cache:
          keys: [deps-{{ checksum "package-lock.json" }}]
      - run: npm ci
      - save_cache:
          key: deps-{{ checksum "package-lock.json" }}
          paths: [~/.npm]
      - run: npm test
workflows:
  main:
    jobs: [test]

The GitHub Actions equivalent, on compiler.dev runners:

name: ci
on: [push, pull_request]
jobs:
  test:
    runs-on: [self-hosted, Linux, compiler-ci]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: npm
      - run: npm ci
      - run: npm test

Notes for a real migration:

  1. Move one repository first and run both CIs side by side for a couple of weeks.
  2. Replace CircleCI contexts with GitHub environments and secrets.
  3. Replace parallelism and tests split with a matrix, see matrix builds.
  4. Replace orbs with actions or reusable workflows.
  5. Cloud auth moves from CircleCI OIDC to GitHub OIDC, see OIDC to AWS.

To undo the runner change later, put runs-on back to ubuntu-latest. Get started by installing the GitHub App, or read the broader alternatives guide.

FAQ

Is CircleCI cheaper than GitHub Actions?

At list price, a 2 vCPU job costs about the same ($0.006 per minute on both). At 8 vCPU, CircleCI's list rate works out to about $0.024 per minute, and compiler.dev's is $0.012. Plan fees, free allowances and discounts change the picture, so model your own usage with the cost calculator.

Is CircleCI faster than GitHub Actions?

Not inherently. Speed depends on machine size, caching and test splitting. CircleCI's timing-based splitting is a real advantage if you do not already shard tests.

Can I use CircleCI and GitHub Actions together?

Yes. Many teams migrate one repository at a time and keep both running until the checks match.

What happens to my orbs?

Most orbs wrap a CLI. Install the CLI in a step, or use the matching marketplace action. Complex orbs may need a reusable workflow.