Introduction
When building CI/CD pipelines, GitHub Actions provides a seamless experience—but managing self-hosted runners can be tricky. Recently, I explored deploying a self-hosted runner on ECS Fargate, and ran into challenges like Docker-in-Docker (DinD) and idle resource costs.
This post shares my experience and a simple, more sustainable alternative using AWS CodeBuild, especially if you’re already running workloads on AWS.
The Problem with Self-Hosted Runners
ECS Fargate Deployment Issues
- DinD (Docker-in-Docker) is required for many workflows, but Fargate doesn’t support DinD natively.
- Workarounds exist but add complexity and maintenance overhead.
- GitHub SaaS Runner Limitations
- Using GitHub-hosted runners is easy, but they can be limiting if you need private VPC access, custom networking, or long-lived secrets.
Idle Costs
A self-hosted runner consumes resources even when no jobs are scheduled. The cost and maintenance become non-trivial.
AWS CodeBuild as an Alternative
For a Proof of Concept, I tried running GitHub Actions workflows through AWS CodeBuild, and it worked seamlessly.
Advantages:
Native GitHub Actions support: CodeBuild can directly execute GH pipeline jobs.
Extensible and flexible: Integrates with VPCs, private subnets, and existing AWS deployments.
Pay-per-use: No idle costs—only pay when a build/job runs.
Scalable: Multiple parallel builds without worrying about runner management.
How It Works
- Create a CodeBuild project with the runtime environment you need.
- Connect GitHub repository via OIDC or Personal Access Token for authentication.
- Define your GitHub Actions workflow to run using the CodeBuild project.
- Deploy your applications directly from CodeBuild if you’re already using AWS for infrastructure.
- For a PoC, this approach ran without any hiccups and avoided all the ECS Fargate DinD issues.
Conclusion
While self-hosted GitHub Actions runners give control, they also bring operational overhead. For teams using AWS extensively, CodeBuild is a low-maintenance, scalable, and cost-efficient alternative.
It provides:
- Seamless GitHub integration
- Private network access
- Extensibility for custom deployment pipelines
- For anyone struggling with DinD on Fargate or managing idle runners, CodeBuild is worth exploring.
Top comments (0)