Escaping the Cloud: How Five Repositories Stopped Sharing One Minute Limit
Description and use
Moving CI from GitHub Actions to a self‑hosted VirtualBox VM eliminated free‑minute limits for five private repos, providing isolated and reproducible builds.
Problem
Free GitHub Actions minutes were exhausted by five separate pipelines after splitting a monorepo, forcing the team to find an alternative CI solution.
Outcome
Reduced CI minutes consumption to zero by moving to a self‑hosted runner, achieving isolated, reproducible builds for five private repositories.
Workflow
- 1. Deploy Ubuntu VM in VirtualBox on a Windows laptop. 2. Configure VM with NAT to isolate from host network. 3. Before each job, script rolls VM back to a clean snapshot. 4. Register runner with --ephemeral flag. 5. Run custom REST API polling script to manage VM lifecycle. 6. Use watchdog script to monitor and restart supervisor if frozen.
- 7. Unregister orphaned runners via API script after each job.
Evidence
We flatly refused to buy extra cloud minutes and deployed our own self-hosted runner on a standard Windows office laptop.
Before every new job, a script ruthlessly rolled the virtual machine back to a clean snapshot.
- Record date: 2026-09-22T16:15:53.206Z