GITOPS PIPELINE SOVEREIGNTY
Every SaaS CI/CD service is a dependency you can’t control, a billing surface you can’t predict, and a trust boundary you can’t verify. After a year of running a fully self-hosted pipeline, I’m convinced that pipeline sovereignty isn’t just an ideological choice — it’s an operational advantage.
What “Fully Self-Hosted” Means
The entire software delivery chain runs on owned infrastructure. Source control, CI/CD runners, container registry, artifact storage, deployment automation — none of it touches a third-party service. A GitHub outage doesn’t affect deployments. A Docker Hub rate limit doesn’t block builds. A Vercel pricing change doesn’t require architecture changes.
This isn’t about distrust of cloud providers. It’s about eliminating variables. When a deployment fails, the entire stack is observable — logs, metrics, network traces, all in infrastructure I control. There’s no “contact support and wait” step in the incident response playbook.
The Pipeline Architecture
The pipeline is two-stage by design. Stage one triggers on push to the main branch: lint, test, build container image, push to private registry with BuildKit inline cache layers. Cached layers mean that a code-only change (no dependency updates) rebuilds in seconds rather than minutes. Stage two triggers on a version tag: pull the built image on the production target, recreate containers with zero-downtime rolling strategy, prune old images.
Production servers are stateless. They hold no source code, no build tools, no development dependencies. They pull containers and run them. Server replacement is a three-step process: provision, configure Docker, point at the registry.
What I Gave Up
Convenience. SaaS pipelines handle runner provisioning, secret management UIs, and marketplace integrations. Self-hosted means maintaining runners, managing secrets through environment configuration, and building integrations from scratch.
But the trade-off sharpens focus. Every integration is intentional. Every secret has a known location. Every runner has a known resource profile. There’s no sprawl of marketplace actions with unknown security postures executing code in the build environment.
The Economics
The infrastructure cost of running the pipeline is marginal — it shares compute with other workloads. The human cost is real but bounded: initial setup took a weekend, and maintenance is approximately an hour per month (runner updates, registry cleanup, certificate rotation). Compare that to a SaaS CI/CD bill that scales with usage and a vendor relationship that requires contract negotiation for enterprise features.
For a small team or a solo engineer running multiple products, pipeline sovereignty pays for itself in the first quarter. The breakeven isn’t just financial — it’s operational. When everything runs on your infrastructure, you develop a deep understanding of the system that no managed service can provide.