GitHub Actions
GitHub's CI/CD & workflow automation: free for public repos, metered private minutes (Free 2k/Pro-Team 3k/Enterprise 50k). 2026 hosted rate cuts; self-hosted fee postponed.
Pricing
Contact Sales
freemium
Category
general
0 features tracked
Quick Links
Overview
GitHub Actions is GitHub’s built-in CI/CD and workflow automation platform. You define YAML workflows under .github/workflows/, trigger them on events (push, pull request, schedule, release, workflow_dispatch, and more), and run jobs on GitHub-hosted runners (Linux, Windows, macOS, ARM, GPU) or self-hosted machines. Actions also power deployment gates, package publishing, Dependabot-adjacent automation, and—increasingly—agentic jobs that sit next to the GitHub PR loop.
As of mid-2026, Actions remains free for public repositories on standard GitHub-hosted runners, free for GitHub Pages and Dependabot, and metered for private repos beyond plan-included minutes and storage. On January 1, 2026, GitHub cut listed GitHub-hosted runner prices by up to ~39% (new list rates already include a $0.002/min “Actions cloud platform” component). A separate $0.002/min charge for self-hosted runner minutes on private repos was announced for March 1, 2026, then postponed after community pushback so GitHub could re-evaluate the approach. Hosted price cuts proceeded; self-hosted platform billing is not currently applied under the postponed plan—re-check docs before budgeting heavy self-hosted fleets.
Quick take: Default CI for any repo already on GitHub.com. Free OSS CI is still real. Private work is usage-based: watch minutes, artifact/Packages storage, and cache. Prefer Linux standard runners; macOS and larger runners dominate the bill. Self-hosted and third-party runners remain the scale play—confirm whether any control-plane fee is active when you read this.
Key features
- Event-driven YAML workflows — Declare jobs, steps, needs/dependencies, environments, concurrency, and permissions in version-controlled workflow files. Triggers cover code events, schedules (cron), manual dispatch, repository_dispatch, and path filters.
- GitHub-hosted runners — Managed VMs: Linux (x64/ARM, including slim 1-core), Windows (x64/ARM), macOS (Intel/M-series and larger sizes), plus GPU larger runners. Jobs can run on the VM or inside containers; multi-container / compose-style setups are supported for service dependencies.
- Matrix builds — Expand one job definition across OS, language versions, and flags (max 256 jobs per matrix expansion per workflow run). Ideal for multi-version test grids.
- Self-hosted runners & ARC — Register your own hardware or cloud VMs; scale with Actions Runner Controller (Kubernetes) or custom autoscalers. GitHub continues investing in Scale Set Client and multi-label support for enterprise fleets.
- Larger runners (Team / Enterprise Cloud) — Bigger CPU/memory SKUs, ARM larger sizes, GPU runners, optional static public IPs, Azure VNet injection, and custom images (custom image storage billed separately). Included plan minutes do not apply to larger runners; public repos still pay for larger runners.
- Actions Marketplace — Reuse official and community actions (setup Node/Java/Python, checkout, cache, deploy to major clouds). Prefer pinned SHAs over floating tags for supply-chain safety.
- Reusable & composite workflows — Call shared workflows across orgs/repos; package multi-step logic as composite actions for DRY CI.
- Secrets, environments & OIDC — Encrypted secrets at repo/org/environment scope; environment protection rules and required reviewers for deploys; OpenID Connect federation to AWS/Azure/GCP without long-lived cloud keys.
- Artifacts, cache & Packages — Upload/download build artifacts; dependency cache (10 GB included per repo); deep integration with GitHub Packages / GHCR for container and package publish steps.
- Live logs, checks & concurrency control — Streaming logs with shareable line links; status checks on PRs; concurrency groups with cancel-in-progress and (since May 2026) optional queues up to 100 pending runs via
queue: max. - Security surface — Fine-grained
permissions:forGITHUB_TOKEN, branch protection + required checks, environment wait timers, and org policies for allowed actions. Supply-chain risk from third-party actions remains a community-critical concern. - Language & deploy breadth — First-class patterns for Node, Python, Java, Go, Rust, .NET, Ruby, PHP, and containers; deploy actions and OIDC patterns for AWS, Azure, GCP, and static hosts.
Pricing
Actions is not sold as a standalone SaaS seat. Cost is included GitHub plan minutes + storage, then pay-as-you-go for overage on private repositories. Public repositories keep standard hosted runners free. Figures below match official billing docs and the runner pricing reference as of mid-2026 (hosted rates effective January 1, 2026). Always re-check Actions runner pricing and billing for GitHub Actions.
| GitHub plan | Included minutes / month | Artifact storage (shared w/ Packages) | Cache / repo | Custom image storage |
|---|---|---|---|---|
| Free (user or org) | 2,000 | 500 MB | 10 GB | N/A |
| Pro | 3,000 | 1 GB | 10 GB | N/A |
| Team | 3,000 | 2 GB | 10 GB | 75 GB |
| Enterprise Cloud | 50,000 | 50 GB | 10 GB | 150 GB |
Standard GitHub-hosted per-minute rates (USD, private repos, after included quota; listed rates include platform charge):
| Runner | Per-minute rate |
|---|---|
| Linux 1-core x64 (slim) | $0.002 |
| Linux 2-core x64 | $0.006 |
| Linux 2-core arm64 | $0.005 |
| Windows 2-core x64 / arm64 | $0.010 |
| macOS 3–4 core (M1 or Intel) | $0.062 |
- Larger runners — Separate SKU table (e.g. Linux 4-core ~$0.012/min, 16-core ~$0.042/min, macOS larger / GPU higher). Team or Enterprise Cloud only. No spend of included minutes; always metered; still charged on public repos.
- Storage overage — Shared artifacts + Packages: $0.25/GB-month. Actions cache: $0.07/GB-month above 10 GB/repo. Custom images: $0.07/GB-month (Team/Enterprise allowances apply). Storage accrues hourly (GB-Hours); deleting artifacts stops future accrual but does not erase charges already recorded that cycle.
- Minutes accounting — Rounded up per job to whole minutes; reset each billing cycle. Billed to the repository owner. Failed/re-run jobs still consume minutes. Windows and macOS cost more than Linux for the same wall time.
- Free paths that stay free — Standard hosted runners on public repos; GitHub Pages; Dependabot. Larger runners are never free via these paths.
- Self-hosted (status mid-2026) — Historically free of GitHub compute charges (you pay infra). Dec 2025 announcement planned a $0.002/min platform fee on private self-hosted minutes starting March 1, 2026 (counting toward included minutes). GitHub later postponed that self-hosted billing change after feedback; hosted cuts of up to 39% still applied January 1, 2026. Verify live docs before modeling self-hosted cost.
- Copilot code review + Actions — From June 2026 docs: Copilot code review can consume Actions minutes (plus AI credits) on private repos; public remains free for those minutes.
- Budgets — Without a payment method, usage stops at included quota. With payment, set product budgets/alerts; 90%/100% included-usage emails available.
- Rough math — 5,000 extra minutes as 3,000 Linux + 2,000 Windows ≈ $18 + $20 = ~$38 at current standard rates (official example shape). 10k Linux 2-core minutes ≈ $60. One hour of macOS ≈ $3.72 at $0.062/min.
Billing gotchas: Artifact retention quietly runs up GB-Hours. Matrix fan-out multiplies minutes. macOS CI and larger runners are the usual surprise line items. Included minutes do not cover larger runners. Public free CI does not mean free larger runners or free artifact abuse.
Limits & gotchas
- Hosted job wall clock: 6 hours — A single GitHub-hosted job fails if it exceeds 6 hours. Self-hosted jobs can run up to 5 days.
- Workflow run: 35 days — Including waits and environment approvals (approvals themselves max ~30 days).
- Matrix cap: 256 jobs per workflow run (hosted and self-hosted).
- Concurrency by plan (standard hosted) — Free 20 concurrent jobs (5 macOS); Pro 40; Team 60; Enterprise 500 (50 macOS). Larger runners: up to 1000 concurrent on Team/Enterprise (GPU concurrent cap 100). Limits are per billing entity, not per repo.
- Queue & trigger rate limits — e.g. 1500 workflow-trigger events / 10s / repo; 500 workflow runs queued / 10s; concurrency group queue max 100 with
queue: max. - API rate limits —
GITHUB_TOKEN~1,000 req/hour/repo (higher on GHEC). Heavy API steps need caching or app tokens. - Cache ops rate limits — ~200 uploads, 1500 downloads, 400 deletes per minute per repository.
- Minutes blowups — Re-runs, flaky tests, uncached dependencies, and “debug on CI” loops burn quota fast on Free/Pro/Team (2k–3k minutes).
- macOS scarcity & cost — Low concurrent macOS caps and high per-minute rates make Apple CI the first thing teams move to self-hosted or specialized providers.
- Supply-chain risk — Marketplace actions can change under a floating tag. Community consensus: pin to commit SHA, prefer official actions, review composite steps.
- Fork PR secrets — Secrets are not available to workflows from forks the same way as same-repo PRs; design carefully for OSS contribution CI.
- Shared storage pool — Actions artifacts and GitHub Packages share the plan storage allowance; Packages growth can crowd out CI artifacts.
- Self-hosted ops burden — Patching, autoscaling, dirty workspaces, and secret hygiene become your problem; ARC helps but is non-trivial Kubernetes ops.
- Enterprise Server vs Cloud — GHES Actions behavior and pricing differ; the 2026 hosted/self-hosted cloud platform pricing discussion does not apply the same way to GHES.
Community sentiment
Across Reddit (r/devops, r/github, r/programming, r/selfhosted), Hacker News, and GitHub Community discussions through late 2025–mid 2026, sentiment is consistent:
- Default choice when code lives on GitHub — YAML-in-repo, PR checks, Marketplace, and zero separate CI account win for most teams. “It is already there” beats feature parity debates for greenfield GitHub shops.
- Free public CI is beloved — OSS maintainers treat unlimited standard hosted minutes on public repos as a major platform advantage versus older paid-only CI.
- Private-minute anxiety on Free/Team — 2,000–3,000 minutes vanish with matrices, monorepos, or macOS. Teams add self-hosted runners, aggressive caching, path filters, and concurrency cancel-in-progress.
- Dec 2025 / early 2026 pricing drama — Hosted cuts were welcomed; the planned $0.002/min self-hosted control-plane fee triggered large backlash (self-hosted was “free control plane + pay your own compute”). GitHub postponed self-hosted billing to re-evaluate after community feedback—widely covered on Reddit and industry blogs.
- Reliability & queue pain at scale — Heavy orgs report queue waits, macOS contention, and occasional platform incidents; larger runners and self-hosted mitigate but cost money or ops time. GitHub cites a re-architecture handling tens of millions of jobs/day.
- Third-party runner market — Blacksmith, WarpBuild, Namespace, BuildJet-class vendors and DIY fleets compete on faster disks, better caches, and lower effective $/minute while still targeting the Actions YAML ecosystem.
- Security culture improved but incomplete — OIDC and least-privilege tokens are praised; unpinned third-party actions and overly broad
permissions: write-allstill draw fire after periodic supply-chain scares.
Actions wins the “path of least resistance” on GitHub.com. Cost and concurrency—not YAML syntax—are what push mature teams to self-hosted runners or alternate CI.
Who should use it
- Teams whose source of truth is GitHub.com — Want PR checks, deployments, and releases without a second CI product.
- Open-source maintainers — Standard hosted runners on public repos remain free; excellent default for build/test/release automation.
- Startups and small private repos — Free/Pro/Team included minutes cover light Linux CI; add payment method and budgets before growth spikes.
- Enterprises on GitHub Enterprise Cloud — Need 50k included minutes, larger runners, org policies, environments, auditability, and ARC/self-hosted at scale.
- Polyglot / multi-OS products — Matrix + first-party setup actions across Linux/Windows/macOS without standing up three CI systems.
Who should look elsewhere (or hybridize): orgs standardized on GitLab/Bitbucket needing native platform CI; teams with extreme macOS volume who need dedicated Apple fleets; regulated environments that require fully air-gapped runners without GitHub.com control plane; shops already deep on Jenkins/Buildkite with heavy custom agents who only need a thin GitHub status integration.
Alternatives
- GitLab CI/CD — Strong when code already lives in GitLab; integrated pipelines, runners, and DevSecOps in one product.
- GitHub Actions vs GitLab CI — Side-by-side if you are choosing a platform, not just a CI bolt-on.
- Jenkins — Self-managed classic; maximum plugin flexibility and on-prem control, higher ops cost.
- CircleCI — Hosted CI with strong Docker/performance niche; separate product economics from GitHub.
- Buildkite — Pipeline SaaS + your agents; popular when hybrid control of compute matters.
- Azure DevOps Pipelines — Natural for Microsoft/Azure-centric orgs; can still target GitHub repos.
- Bitbucket Pipelines — Logical default for Atlassian/Bitbucket Cloud code hosts.
- Third-party Actions runners (Blacksmith, WarpBuild, etc.) — Keep Actions YAML, swap compute for speed/price; evaluate against pure self-hosted.
Verdict
GitHub Actions is the pragmatic default CI/CD for GitHub-hosted code in 2026. Public OSS CI is still free on standard runners; private usage is transparent but easy to under-estimate once matrices, macOS, artifacts, and larger runners enter the picture. January 2026 hosted price cuts improved the unit economics of GitHub compute; the self-hosted platform fee saga shows GitHub is still negotiating how to charge for control-plane value—treat self-hosted cost as “your infra + watch announcements,” not as permanently free GitHub orchestration.
Choose Actions when developer experience and PR integration matter more than squeezing every CI cent. Hybridize with self-hosted or specialist runners when minutes, macOS concurrency, or monorepo throughput become the bottleneck. Pin actions, set budgets, prefer Linux, and measure GB-Hours—those habits matter more than rewriting YAML on a different logo.
Alternatives
Best Alternatives to GitHub Actions
Head-to-Head
Compare GitHub Actions Side-by-Side
More in general