Both GitHub Actions and GitLab CI offer free tiers. GitHub Actions provides "Free" while GitLab CI offers "Free".
A verdict here is not a fixed property of the vendor. A one-off pricing event demotes a vendor while its recorded date falls in the last 180 days and then lapses on its own, with nothing about the vendor having changed; a standing condition — a free tier withdrawn and not restored, a product retired — does not lapse with time. A badge carrying a date states the record it rests on; a badge with no date rests on no record in force.
Free CI/CD for public repos (standard runners, unlimited minutes). Private repos on GitHub Free: $12 USD of included compute a month, which is 2,000 minutes on a standard Linux runner ($0.006/min), 1,200 on Windows ($0.010/min) or about 193 on macOS ($0.062/min). GitHub's billing docs gave the allowance as 2,000 minutes before a revision published on October 28, 2026. 500 MB artifact storage, 10 GB cache per repo. Self-hosted runners remain free — planned $0.002/min charge was postponed indefinitely after community backlash (March 2026). Hosted runner prices reduced 39% (Jan 2026)
400 compute minutes/month, 10 GiB storage, 5 users. New accounts limited to 3 top-level groups
Pricing Change History
GitHub Actions
deprecatedeffective 2026-12-08low impact
GitHub Actions keeps running. GitHub-hosted runners end support for ARM32 (32-bit ARM) jobs on Linux and Windows by December 8, 2026, including native AArch32 user-space execution, because Node 24 does not support ARM32. Self-hosted runners on ARM32 have not been supported since Node 20 was removed in September 2026. Source ↗
postponedeffective 2025-12-17low impact
On 2025-12-17 GitHub postponed the $0.002-a-minute charge for self-hosted Actions runners that it had announced the day before for 2026-03-01, to re-evaluate its approach. Self-hosted runners remain free. The price cut of up to 39% for GitHub-hosted runners went ahead on 2026-01-01 as announced. Source ↗
GitLab CI
No recorded pricing changes for GitLab CI.
Watch Both Vendors for Pricing Changes
We do not push notifications. Every change we record is readable the moment it lands, and the JSON answer carries an ETag — send it back as If-None-Match and an unchanged answer costs one 304.