Sources reviewed May 2026
Methodology and sources
How rates are sourced, how the external-runner shootout is constructed, the calculation framework for the cost calculator and break-even math, what is in scope and out of scope, the monthly refresh cadence, and the corrections process.
Vendor and reference sources
Every per-minute rate, free-tier number, and runner-shootout figure on this site traces back to one of the sources below. Industry-coverage sources (DORA, samexpert, northflank, blacksmith.sh, CNCF surveys, Forrester / Gartner) are cited only as supplementary context, never as primary rate sources.
| Source | Cadence | What we take |
|---|---|---|
GitHub Actions https://docs.github.com/billing/managing-billing-for-github-actions/about-billing-for-github-actions | Monthly | Per-OS per-minute rates (Linux x86 $0.008, Linux ARM $0.004, Windows $0.016, macOS $0.080 at 12-core), free-tier minutes per plan (Free 2,000, Team 3,000, Enterprise 50,000), and self-hosted runner billing rules. Sourced from GitHub's own billing docs, not third-party trackers. |
GitLab CI https://about.gitlab.com/pricing/ | Monthly | SaaS compute minute rates and free-tier compute minutes per plan, and the self-managed Community Edition (free, unlimited minutes on your own infra). Pricing is taken from the public GitLab.com pricing page, not enterprise quotes. |
CircleCI https://circleci.com/pricing/ | Monthly | Plan tier prices and credit conversion: 1 credit = $0.0006. Default Medium Linux executor consumes 10 credits per minute, which is how the per-minute rate of $0.006/min is derived. CircleCI's resource-class table is the conversion authority. |
Atlassian Bitbucket Pipelines https://bitbucket.org/product/features/pipelines | Quarterly | Atlassian-bundled CI: per-user Standard / Premium tiers and bundled-minutes allowances. Pricing sourced from Atlassian's public Bitbucket Pipelines page. |
AWS CodeBuild + CodePipeline https://aws.amazon.com/codebuild/pricing/ | Monthly (US East 1) | Per-minute rates by instance size (Linux $0.005, ARM $0.004, Windows $0.020), per-second billing, and the 100 minutes/month free tier on general1.small. CodePipeline pricing taken from https://aws.amazon.com/codepipeline/pricing/. Rates quoted US East 1; other AWS regions can run 10 to 20 percent higher and are flagged on the page. |
Azure Pipelines https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/ | Monthly | Microsoft-hosted parallel-jobs pricing ($40/parallel job public; $52 private project), per-OS rate translation, and self-hosted (unlimited minutes) pricing. Sourced from Azure DevOps Services pricing page. |
Google Cloud Build https://cloud.google.com/build/pricing | Monthly | Per-build-minute rates by machine type (e2-medium $0.003/min, n1-highcpu-8 $0.016/min, n1-highcpu-32 $0.064/min). 120 free build-minutes per day. Sourced from Google Cloud Build's official pricing page. |
JetBrains TeamCity https://www.jetbrains.com/teamcity/buy/ | On change | TeamCity Cloud per-month pricing per build agent + included build credits. Pricing for TeamCity On-Premises (perpetual licence + maintenance) sourced from JetBrains' commerce page. |
Buildkite https://buildkite.com/pricing | Monthly | Per-user orchestration fees, free agent count, and the orchestration-only billing model (compute is your own infrastructure). Buildkite's pricing model is distinct from minute-based vendors and is treated separately in comparisons. |
GoCD https://www.gocd.org/ | On change | Free open-source CI software. No per-minute charge from the vendor. Cost is pure infrastructure, sourced from public Hetzner / DigitalOcean / AWS EC2 pricing pages. |
Jenkins (community) https://www.jenkins.io/ | On change | Free open-source CI software. Infrastructure cost references taken from AWS EC2 on-demand pricing (https://aws.amazon.com/ec2/pricing/). Maintenance-hours range ($75/h loaded) is a published industry range from DORA State of DevOps reports and engineering-blog post-mortems. |
Depot https://depot.dev/pricing | Monthly | Depot CI runners pricing pulled from depot.dev/pricing. Linux x86 $0.004/min, Linux ARM $0.002/min, macOS $0.040/min, minimum $50/month commit. SOC 2 Type II attestation is verified from Depot's public trust centre. |
Namespace https://namespace.so/pricing | Monthly | Namespace Workloads pricing for Linux x86 / ARM build runners. Sourced from namespace.so/pricing. Free tier and per-minute rates verified each cycle. |
BuildJet https://buildjet.com/for-github-actions | Monthly | BuildJet for GitHub Actions per-minute pricing. Sourced from buildjet.com. Linux x86 $0.003/min, Linux ARM $0.002/min, no minimum commit. |
Blacksmith https://blacksmith.sh/pricing | Monthly | Blacksmith CI runner pricing. Sourced from blacksmith.sh. Linux x86 $0.004/min, Linux ARM $0.002/min, free tier available. Industry-coverage references also sourced from blacksmith.sh's engineering blog. |
Ubicloud https://www.ubicloud.com/pricing | Monthly | Open-source-underpinning CI runner pricing. Sourced from ubicloud.com/pricing. Linux x86 $0.004/min, Linux ARM $0.002/min, no minimum commit. Listed as non-affiliate. |
RunsOn https://runs-on.com/pricing/ | Monthly | Managed control plane for self-hosted GitHub Actions on AWS. Per-month per-organisation fee + your AWS spot/on-demand cost. Sourced from runs-on.com/pricing. |
AWS EC2 (self-hosted reference) https://aws.amazon.com/ec2/pricing/ | Monthly | Self-hosted runner break-even math uses t3.medium ($30/month US East 1 on-demand) as the reference instance. Spot, savings plan, and reserved capacity are explicitly out of scope to keep the comparison apples-to-apples against published cloud-CI per-minute rates. |
Industry CI/CD economics coverage https://samexpert.com/ | On change | Industry-analyst and engineering-blog coverage cited for cross-checking vendor pricing pivots and self-hosted economics: samexpert.com (GitHub Actions billing analysis), northflank.com (managed runners economics), blacksmith.sh engineering blog (external-runner cost analyses). Cited as supplementary, never as a primary rate source. |
DORA State of DevOps + industry surveys https://dora.dev/research/ | Annual | DORA (DevOps Research and Assessment) State of DevOps reports for DevOps practice benchmarks, deployment frequency norms, and maintenance-hours range for self-hosted CI. CNCF Cloud Native developer survey for adoption trends. Forrester / Gartner CI/CD market sizing for context, not for individual vendor rates. |
In scope
- ●Published vendor list prices for cloud-hosted CI minute rates and per-user fees.
- ●Free-tier and bundled-minute allowances per vendor plan.
- ●OS and resource-class multipliers and their per-minute rate translations.
- ●ARM-multiplier savings on GitHub-hosted Linux runners and external-runner ARM parity.
- ●External-runner-provider list prices: Depot, Namespace, BuildJet, Blacksmith, Ubicloud, RunsOn.
- ●Self-hosted runner break-even math against GitHub-hosted minutes using public AWS EC2 on-demand pricing.
- ●Per-team CI cost attribution recipes using the GitHub Actions usage API, OIDC claims, and FinOps rollup tools.
- ●Optimisation playbook for caching, sharding, paths filtering, concurrency gates, Docker layer caching, monorepo affected-only logic.
Out of scope
- ○Enterprise-negotiated pricing and sales-led tiers (CircleCI Scale, GitLab Ultimate volume discounts, GitHub Enterprise Server site licensing).
- ○AWS spot, savings-plan, and reserved-instance discounts (excluded from self-hosted break-even to keep the comparison apples-to-apples).
- ○Regional surcharges (rates quoted assume US East 1 where AWS is the reference).
- ○Compliance add-ons (GitHub Advanced Security, GitLab Premium audit log, vendor-specific compliance bundles).
- ○Internal loaded-rate estimates for engineering maintenance time (a published industry range is used instead).
- ○Cold-start and benchmark numbers are point-in-time and depend on cache state, image warm-up, and vendor capacity.
Calculation framework
A build minute is wall-clock time from runner pick-up to job completion. Parallel jobs each count: a 5-minute workflow with 4 parallel jobs consumes 20 build minutes. Matrix entries each count separately. Idle time between jobs is not billed by hosted vendors but is billed by self-hosted EC2.
GitHub Actions: Linux x86 = 1x, Linux ARM = 0.5x, Windows = 2x, macOS = 10x. Included minutes are Linux x1 equivalent: a 3-minute macOS job depletes 30 of your monthly allowance. GitLab CI has no multipliers (one rate across OSes). CircleCI uses resource-class credit multipliers (Medium Linux = 10 credits/min). Each platform's multiplier table is shown on the platform page.
GitHub-hosted Linux ARM runners bill at 0.5x the Linux x86 rate ($0.004/min vs $0.008/min) since 2024. The arm-runners page documents the migration YAML, performance benchmarks across Node.js / Python / Go / Rust / Java / Ruby, and the legacy-C++ / Chromium-based-E2E gotcha. ARM-rate parity holds on Depot, BuildJet, Blacksmith, Namespace, and Ubicloud at $0.002/min.
Formula: monthly minutes * GitHub-hosted rate = total monthly billed cost cap. Compared against: EC2 instance cost + self-hosted platform fee + engineering maintenance time (industry-cited 2 hours/month at $130 fully-loaded hour). Worked example for 25,000 min/mo at GitHub Actions Linux x86 rates shown on /self-hosted-runners.
Six providers (Depot, Namespace, BuildJet, Blacksmith, Ubicloud, RunsOn) scored on identical axes: Linux x86 per-minute rate, Linux ARM per-minute rate, macOS support, cold start (seconds), cache mechanism (built-in / actions/cache compatible / limited), setup time (minutes), minimum commit (none / free tier / $X/month). Best and worst values per column are colour-coded. No provider is given preferential ordering or row position.
GitHub Actions 2,000 min/mo (Free), 3,000 (Team), 50,000 (Enterprise). GitLab CI 400 min/mo (Free). CircleCI 6,000 credits/mo. Azure DevOps 1,800 min/mo. AWS CodeBuild 100 min/mo. Free-tier exhaustion math (when does the next minute become billable) is part of the calculator's modelling.
Refresh cadence
Vendor pricing pages are re-verified on the first business week of each month. The verification date is held in a single LAST_VERIFIED_DATE constant imported by every page. Footer text, schema dateModified, and visible badges all read from that single source so cosmetic refreshes are not possible: rolling the constant forward updates every freshness indicator on the site by construction.
Out-of-cycle refresh triggers (we update sooner than the monthly cycle if any of these change):
- ●Vendor announces a list-price change on Linux, ARM, Windows, or macOS rates.
- ●A new external runner provider enters the shootout matrix.
- ●GitHub Actions, GitLab CI, or CircleCI change their billing model (e.g., self-hosted platform fee, multiplier change, credit conversion).
- ●A published case study (DORA, engineering-blog) materially changes the maintenance-hours range used in self-hosted break-even.
- ●A reader emails a correction (see corrections section below).
Limitations
- ●Calculator outputs are estimates. Production billing depends on enterprise agreements, regional surcharges, reserved-capacity commitments, and OS-mix particulars not covered here.
- ●Vendor pricing pages drift between verification cycles. Where a rate has changed since the LAST_VERIFIED date stamp, we publish the new number with a single-source roll, not silently in place.
- ●Cold-start, cache, and benchmark numbers in the runner shootout are vendor-published or independently measured at a single point in time. Real-world latency depends on geography, runner image warm-up, and provider capacity.
- ●Self-hosted maintenance-hours estimates are a published range (DORA, engineering-blog post-mortems), not a point estimate. Both ends of the range are shown.
- ●Affiliate participation is disclosed on every page. Affiliate links do not change ranking, pricing accuracy, or what we recommend.
Corrections process
Spotted a stale rate, a missing tier, a runner provider we have not covered yet, or a vendor change we have not caught? Email [email protected] with the page URL and the source you would like cited. Substantive corrections are typically actioned within five business days. The corrections log is kept in the site source under /about with a permanent disclosures section.