TL;DR: GitHub Actions gives every public repository unmetered CI/CD minutes - the 2,000-minutes-a-month figure only applies once a repo goes private. GitLab includes 400 compute minutes a month on its Free tier, CircleCI gives 30,000 credits (about 6,000 build minutes on its small resource class), and Azure DevOps pairs one hosted parallel job (1,800 minutes a month) with a second, self-hosted job that has no minute cap at all. A starting credit is not a free tier - Railway burns through its $5 in 30 days, then bills $1 a month - so it is left out of the tables below. Everything you see was checked against the vendor’s own pricing page on 2026-09-20.
Free minutes are not the same offer twice
Every CI/CD vendor gives away compute, but the unit changes from page to page: GitHub
counts minutes, CircleCI counts credits, AWS counts both minutes and seconds depending on
the compute type, and Buddy counts GB-minutes. None of these convert cleanly into each
other, because the underlying machine size differs too. A CircleCI credit buys less on a
large resource class than a small one; an AWS CodeBuild minute on general1.small and one
on lambda.arm.1GB are not the same silicon.
Read the unit before you compare two vendors on it, and check whether the number resets every month or only applies for a fixed window after signup. The two tables below split general-purpose CI/CD pipelines from mobile and app build services, because the second group measures its free tier in device builds rather than pipeline minutes.
Table 1: hosted CI/CD runners
| Platform | Free compute | Users | Concurrency | Notes |
|---|---|---|---|---|
| GitHub Actions | 2,000 minutes/month, 500 MB Packages storage | Unlimited | Varies by plan | Both figures are unmetered on public repositories; the caps apply to private repos only |
| GitLab | 400 compute minutes/month | 5 | - | 10 GiB storage per project |
| CircleCI | 30,000 credits/month (~6,000 build minutes, small class) | 5 | 30 concurrent jobs | 2 GB storage, 1 GB network transfer for self-hosted runners |
| Azure DevOps | 1 Microsoft-hosted job, 1,800 minutes/month | 5 | 1 self-hosted job, unlimited minutes | 2 GiB Azure Artifacts storage |
| Bitbucket Pipelines | 50 build minutes/month | 5 | - | 1 GB Git LFS storage |
| AWS CodeBuild | 100 EC2 build minutes or 6,000 Lambda build seconds/month | - | - | Does not expire at the end of the 12-month AWS Free Tier term |
| AWS CodePipeline | 1 active V1 pipeline; 100 V2 action-execution minutes/month | - | - | V2 minutes reset monthly and do not carry over |
| Buildkite | 2,000 Linux vCPU minutes/month | 5 | 10 concurrent jobs | 30-day build retention, 250k test executions/month |
| Buddy | 300 pipeline GB-minutes/month | 1 | 1 concurrent pipeline | 1 GB pipeline cache, 300 sandbox CPU-minutes |
| AppVeyor | Unlimited public projects | - | 1 concurrent job | 5 self-hosted jobs also included |
| Cirun | Unlimited runners for open source | - | Unlimited | ARM and GPU runners included, on any supported cloud |
GitHub’s own pricing page states both the 2,000 minutes and the 500 MB of Packages storage are free for public repositories, full stop - no minute count applies until the repository is private. That single line answers the question most people actually have when they search for GitHub Actions pricing: whether an open source project needs to watch the clock at all. It does not.
The bottom three rows of that table trade breadth for a narrower entry condition. AppVeyor and Cirun both limit their free tier to public projects, and both are generous inside that limit. AppVeyor runs unlimited public projects and throws in five self-hosted jobs. Cirun puts no cap on runner count at all, and its free tier covers ARM and GPU runners across every cloud provider it supports. Buddy goes the other way. It accepts private work, but it seats one person and runs one pipeline at a time. Its 300 GB-minutes are also the hardest figure on the table to compare against anything else, because a GB-minute prices memory and time together instead of counting wall-clock minutes.
Railway is left out of the table above. Its free offer is a one-time $5 credit that expires after 30 days, after which the account moves to $1/month. That is a starting credit, not a sustained free tier.
Table 2: mobile and app build services
General-purpose runners above build for Linux and Windows targets well. iOS and Android builds need macOS machines and code-signing tooling that most CI vendors do not run in-house, which is why a separate set of vendors specializes in mobile builds.
| Service | Free build allowance | Team | Notes |
|---|---|---|---|
| Codemagic | 500 macOS M2 build minutes/month | Unlimited apps, 1 user | 1 parallel build, 30-day build history |
| Bitrise | 300 credits/month | Team of one | 1 private app, unlimited public apps, 90-minute build timeout |
| Expo | 15 Android + 15 iOS builds, 60 CI/CD minutes/month | Unlimited members | Updates reach up to 1,000 monthly active users |
| Appcircle | 20 builds/month | - | 1 concurrent build, 30-minute max build time, 1,000 CodePush updates/month |
| Diawi | 50 MB max upload, 3-day app availability | - | Up to 10 installs per uploaded app, no signup needed for a smaller no-account tier |
A “build” on this table means one compile-and-package run, so the real ceiling depends on how often your app changes. A solo developer shipping a weekly TestFlight build fits comfortably inside Bitrise’s 300 monthly credits or Expo’s 15-and-15 allowance; a team merging several times a day will hit the wall inside the first week and needs to budget for a paid plan from the start.
Table 3: checks that run inside the pipeline
Coverage, code quality, and visual regression tools plug into the CI run itself rather than running it, so they carry their own, separate free tiers. Most of them report back to the pull request as a status check. A project can therefore outgrow its CI minutes while every check in this table still fits inside its free tier, or run into the reverse. Budget the two separately.
The unit changes again here. None of these tools meters build minutes. Each one caps the thing it actually measures: screenshots for Argos, repository count for Codacy, seats for Mergify, and runner minutes for CodSpeed.
| Tool | What it checks | Free tier |
|---|---|---|
| Coveralls | Test coverage | Always free for open source projects, no stated limit |
| Codacy | Code quality and security | Up to 100 private repos and unlimited lines of code for open source projects |
| CodSpeed | Performance regression | 5 users, 600 macro runner minutes/month, unlimited for open source |
| Argos | Visual regression | Up to 5,000 screenshots/month |
| Mergify | Merge queue and CI insights | Up to 5 users on private repositories |
| DeepScan | JavaScript/TypeScript static analysis | Unlimited public projects, 3 months of trend history |
Coveralls and Codacy both waive their normal limits entirely for open source, which is the pattern across most of this table: paid tiers gate private-repo usage, and public repos stay free regardless of volume.
Left out, and why
Four more products in the CI/CD pipeline category did not make either table above:
- Scrutinizer and DeepSource both run on a time-boxed trial rather than a sustained free plan: 14 days, then a paid subscription for anything beyond public repositories. A trial is not a free tier.
- sourcehut’s public-alpha pricing page explicitly carves out
builds.sr.ht, its CI service, as one of the two products that require payment even during the free alpha period for everything else. The CI product itself is not free, so it does not belong on a free-tier CI/CD list. - SonarQube Cloud does not publish its free-tier limits in a form that can be read off its pricing page, so it is left out.
Picking a starting point
For a solo project or a small open source repository, GitHub Actions is the default for a reason: the minutes cap does not apply at all as long as the repository stays public, and the platform is already where most public code lives. Move to GitLab or CircleCI once a project goes private and needs more than a token amount of monthly compute - GitLab’s 400 minutes and CircleCI’s 30,000 credits both outlast GitHub’s 2,000-minute private-repo allowance by a wide margin, though CircleCI’s 5-user cap and GitLab’s 5-user cap both bite before GitHub’s unlimited collaborator count does.
Azure DevOps is worth a second look specifically for its self-hosted parallel job: point it at your own runner and the minute cap disappears entirely, which none of the hosted-only plans in Table 1 offer. AWS CodeBuild and CodePipeline both make more sense as a piece of a larger AWS-native pipeline than as a standalone choice - the free minutes are real, but narrow, and both integrate most cleanly with other AWS services you would already need an account for.
For mobile builds, Expo’s 15-and-15 monthly allowance and 60 CI/CD minutes cover an early project comfortably, since Expo also handles the store-submission side that plain CI runners leave to you. Codemagic’s 500 macOS minutes give more raw build time if the project needs native iOS tooling Expo does not cover. Both beat paying for Mac-hosted CI minutes on a general-purpose runner, where macOS jobs typically cost several times a Linux job on the same platform.
Add a coverage or code-quality check once the pipeline itself is running: Coveralls and Codacy both stay free indefinitely for public repositories, so there is no reason to wait until a project outgrows its CI budget to add one.