CI/CD tools, compared
Each provider is profiled from its own documentation, with the source recorded against every figure. Job duration limits and whether the pipeline can run against your own hardware decide more choices here than the marketing feature list does.
CI/CD
| Provider | Entry paid plan | Max job duration | Self-hosted runners |
|---|---|---|---|
| Buildkite | Pro plan: $30 per active user/month. | 4 hours on the Free plan; unlimited on the Pro and Enterprise plans. This is the maximum time before a running job times out. | Self-hosted agents are the default execution model, not an add-on. Free: up to 10 concurrent jobs. Pro: up to 250 agents, 10 included, then $3.50 per agent/month. Enterprise: unlimited. |
| CircleCI | Performance plan: starting at $15/month, including 30,000 free credits plus additional paid credits. | Maximum job runtime is 1 hour on the Free plan, 3 hours on Performance and 5 hours on Scale. | Supported on every tier: 5 concurrent self-hosted tasks on Free, 20 on Performance, unlimited on Scale. No per-minute charge for self-hosted runner builds. |
| GitHub Actions | GitHub Team: $4 USD per user/month (Free $0, Enterprise $21 USD per user/month). | Up to 6 hours of execution time per job on GitHub-hosted runners. A job that exceeds this is terminated and fails. | Free for self-hosted runners — no usage charges beyond the runner's own infrastructure cost. |
Which to consider
Teams that already run their own compute and want a CI product built around that from the start, rather than one that treats self-hosting as an escape hatch from a hosted-minutes model.
Teams running mostly on self-hosted runners, where build-minute cost disappears entirely and the credits system only meters users and premium features.
Repos already on GitHub — no separate CI product to wire up, and self-hosted runners cost nothing to use beyond the hardware itself.

Comments are hosted by EchoThread, which sets cookies and offers social sign-in. Like the analytics on this site, it does not load until you accept — see the privacy page.