Methodology
How CICDCost.com verifies CI/CD pricing, counts build minutes, computes self-hosted break-even, and decides what to publish. Every number on the site should be re-derivable from a vendor's own public pricing page using the formulas shown here.
Vendor sources
Each platform page on the site cites the vendor's own public pricing or billing documentation as the source of record. Cross-vendor cost comparisons additionally cite AWS EC2 and low-end VPS providers for self-hosted break-even math. Industry coverage is referenced for general framing only, not for point-in-time pricing claims.
| Source | Refresh cadence | What we take from it |
|---|---|---|
| GitHub Actions | Monthly | Per-OS per-minute rates (Linux, Windows, macOS), free tier minutes per plan (Free, Team, Enterprise), and self-hosted runner billing rules. The pricing structure is taken directly from GitHub's own billing documentation, not from third-party trackers. |
| CircleCI | Monthly | Plan tier prices (Free, Performance, Scale) 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. |
| GitLab CI | Monthly | SaaS compute minute rates ($0.010/min, no OS multipliers), 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. |
| Buildkite | 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 the comparison table. |
| AWS CodeBuild | Monthly (US East 1) | Per-minute rates by instance size (general1.small $0.005/min, ARM $0.004/min, Windows $0.020/min), per-second billing, and the 100 minutes/month free tier on general1.small. Rates quoted are US East 1; other AWS regions can run 10 to 20 percent higher and are flagged on the page. |
| Bitbucket Pipelines | Quarterly | Atlassian-bundled CI: Free 50 min/month, Standard $3.30/user (2,500 min), Premium $6.05/user (unlimited). Overage rate $0.010/min. Sourced from Atlassian's public pricing page. |
| Drone CI / Harness Community Edition | 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 | 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 DevOps surveys and engineering-blog post-mortems. |
| AWS EC2 (self-hosted runner reference) | 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. |
| DigitalOcean / Hetzner (low-end self-host) | Monthly | Drone CI / Harness CE self-host cost range ($5-20/month) is sourced from DigitalOcean ($6/month basic droplet) and Hetzner Cloud ($5/month CX22). Higher band reflects 4-vCPU options needed for parallel build agents. |
| Industry CI/CD economics coverage | Reference only | General framing of CI/CD pricing trends and vendor pricing-model shifts is cross-referenced against samexpert.com and northflank.com industry coverage. Specific dated claims are not made; the site uses these sources for category framing, not point-in-time announcements. |
In scope
- ●Published per-minute (or per-credit) rates from each vendor's public pricing page.
- ●Free-tier minute allocations per plan tier.
- ●Vendor-published OS rate differentials (Linux vs Windows vs macOS).
- ●Self-hosted runner break-even math using published cloud rates and AWS EC2 on-demand instance prices.
- ●Per-user orchestration fees (Buildkite, Bitbucket Premium per-user model).
- ●Build-minute counting rules: from runner pick-up to job completion, parallel jobs each count, queued time excluded.
Out of scope
- ●Enterprise-negotiated pricing. Volume commitments, contract minimums, and custom MSAs are deliberately excluded.
- ●Sales-led pricing tiers where the vendor does not publish a public per-user or per-minute rate (CircleCI Scale, GitLab Premium uplifts to specific tier features).
- ●Spot, savings plan, and reserved-capacity discounts on AWS EC2. Self-hosted break-even uses on-demand rates to keep the comparison consistent.
- ●Regional surcharges beyond US East 1 / generic SaaS. AWS pricing varies 10 to 20 percent by region; the comparison uses US East 1 unless flagged.
- ●Compliance add-ons: SOC2 audit pack pricing, FedRAMP overlays, GitHub Enterprise Cloud advanced security uplifts.
- ●Engineering hour cost for CI maintenance is a published range ($75/h loaded) not an internal estimate; teams should substitute their own loaded cost.
Calculation framework
A billed minute starts when a runner picks up the job and ends when the job finishes. Queued time is not billed. Parallel jobs each count against the minute total. Matrix builds count each matrix entry as a separate job. This is GitHub Actions' explicit rule and applies, with vendor-specific nuance, to CircleCI, GitLab, Bitbucket, and CodeBuild.
GitHub Actions applies hardcoded multipliers: Windows 1.67x base Linux, macOS 8x base Linux. The site computes effective per-minute cost at each OS for the team-size examples. GitLab CI applies no OS multipliers on SaaS compute (a deliberate differentiation). CircleCI applies different credit multipliers per resource class; the table shows the default Medium Linux conversion.
break-even minutes per month = (monthly server cost) / (cloud per-minute rate - self-hosted variable cost per minute). For GitHub Actions cloud at $0.006/min vs a t3.medium at $30/month, with no platform fee the formula gives $30 / $0.006 = 5,000 minutes/month. With a hypothetical $0.002/min platform fee the denominator collapses to $0.004/min, raising the break-even to 7,500 minutes/month (or 16,000 if the fee applies even to the self-hosted runner usage as a flat orchestration charge). The site shows the formula on every page that uses it so users can substitute their own server cost.
Jenkins maintenance time uses 5-10 hours/month at a $75/hour loaded engineering rate. The hour range is taken from published DevOps maintenance-time research; the loaded rate is a deliberate conservative anchor based on US fully-loaded developer cost. Teams should substitute their own loaded rate when re-running the math.
1 credit = $0.0006. Medium Linux executor consumes 10 credits/minute. Therefore Medium Linux per-minute cost = $0.0006 x 10 = $0.006/min. Resource classes scale: Large 20 credits/min ($0.012/min), XLarge 40 credits/min ($0.024/min). Free plan includes 30,000 credits/month; the page shows the equivalent in Medium Linux minutes (3,000 min/month).
Free-tier minutes are shown alongside paid per-minute rates. Worked examples at common team sizes show whether the team falls under or over the free tier. Minutes do not roll over month-to-month on any of the listed vendors; this is mentioned explicitly on each vendor page.
Refresh cadence
The site is re-verified against each vendor's pricing page on the first business week of each month. The visible "Prices verified" label and the dateModified field in every page's Article JSON-LD read from a single constant ( LAST_VERIFIED_DATE) so the on-page text, the schema, and the footer are always in lockstep. Cosmetic date refreshes are structurally impossible: bumping the date is a single line change that touches every page at once.
Out-of-cycle refreshes trigger on:
- ●Vendor-announced rate change (e.g., GitHub Actions January 2026 rate cut).
- ●New plan tier introduced or removed (e.g., CircleCI plan reshuffles).
- ●New self-hosted billing model (platform fees, orchestration fees, per-runner charges).
- ●AWS EC2 / DigitalOcean / Hetzner public rate changes that affect break-even references by more than 10 percent.
- ●Vendor pricing-page restructure that changes how rates are published.
Refreshes that move per-minute rates by less than 5 percent are batched into the next monthly pass. Refreshes that introduce a new billing model (platform fees, agent fees, orchestration fees) or that shift a vendor's free tier ship as soon as the change is confirmed against the vendor's own pricing page.
Limitations
Calculator and break-even outputs are estimates. Production CI/CD pricing depends on enterprise agreements, regional surcharges, reserved-capacity commitments, and per-workspace minute pools that are out of scope here. Always verify with the vendor before purchasing or making a self-hosted migration commitment.
Vendor pricing pages can drift between monthly verifications. Where a number on the site is known to be in flux (e.g., during a vendor billing-model transition), the page flags the uncertainty explicitly rather than pick a single point estimate.
Jenkins maintenance hours and the loaded engineering rate are conservative anchors, not internal estimates. Teams with lower or higher loaded rates should substitute their own number; the formula is shown so the math is portable.
Corrections process
Spotted a stale price, a missing tier, or a vendor change we have not caught yet? Email [email protected] with the page URL and the source you would like cited. Substantive corrections (per-minute rate changes, free-tier minute changes, new billing models) are typically actioned within five business days. Non-substantive corrections (typo fixes, link rot, structural edits) batch into the next monthly pass.
See also the about page for the site's editorial position, disclosures, and full coverage map.