DevOps / GitHub Actions Interview Questions
What are runners, and what is the difference between GitHub-hosted and self-hosted runners?
A runner is the server (physical or virtual) that picks up a queued job and executes its steps. GitHub manages a global pool of hosted runners; alternatively you can register your own machines as self-hosted runners for full control over the environment.
| Dimension | GitHub-Hosted | Self-Hosted |
|---|---|---|
| Setup | Zero configuration — use labels like ubuntu-latest, windows-latest, macos-latest |
You install the runner agent on your own server and register it with your repo/org |
| Environment | Fresh VM per job; pre-installed with common tools (Node, Java, Docker, etc.) | Persistent; you control what is installed; jobs share the same machine state |
| Cost | Free for public repos; metered minutes for private repos | No GitHub billing for compute; you pay for your own infrastructure |
| Performance | Standard 2-core / 7 GB (Linux); larger runners available at extra cost | As powerful as your hardware allows; good for GPU jobs or large build caches |
| Network access | Public internet only | Can reach private VPC resources, on-premise databases, etc. |
| Security | Isolated per run; safe for public repos | Risky for public repos — malicious PRs can run code on your machines |
For most teams GitHub-hosted runners are the right starting point. Self-hosted runners make sense when you need private network access, specialised hardware (GPU, ARM), or very long build times where hosted-runner costs become significant.
More Related questions...