Guides
How to reduce GitHub Actions costs
The CI bill grows faster than the team and nobody is sure why.
8 min read
The CI bill grows faster than the team and nobody is sure why.
Symptoms
- Bill grows despite flat headcount
- Nobody owns CI spend
- macOS is a large share of the invoice
Why it happens
Cost is the product of minutes, runner rate and OS multiplier. Most overspend comes from uncancelled runs, oversized runners and macOS minutes.
How to fix it
- Add concurrency cancellation — usually the single biggest saving available
- Move anything that does not need macOS off macOS
- Right-size runners against measured utilization
- Set job timeouts so hung jobs cannot burn six hours
- Use arm64 where your dependencies support it — it is cheaper and often faster
- Attribute spend per workflow and give each one an owner
Your next build could be twice as fast, at half the price
Start free. Migrating away is the same one line, and we publish that diff too.
Related
How to measure CI cost per pull requestYou know the monthly total but not what a single pull request costs.How to attribute CI cost to teamsCI spend is one line on the invoice and no team feels responsible for it.How to set a CI minutes budgetSpend is discovered at the end of the month rather than controlled during it.When larger runners actually save moneyA larger runner costs more per minute, so it is unclear whether it is cheaper overall.