In this article

We look at why a company’s production data residency doesn’t automatically cover its CI/CD pipeline, what GitHub Actions actually offers EU-based teams today, and how self-hosting runners on Amsterdam hardware closes that gap directly.


Your production environment is in the EU. Your database is in the EU. Your contracts say the data stays in the EU. And every time a pull request triggers a build, your source code, your dependencies, and your build artifacts run through infrastructure that isn’t.

That’s a gap a lot of teams don’t notice until someone in legal or security asks about it directly, because production residency and CI/CD residency are two separate questions that get treated as one.

What GitHub Actions Actually Offers EU Teams Today

To be fair to GitHub, this isn’t a completely unaddressed problem on their end anymore. GitHub launched EU data residency for GitHub Enterprise Cloud customers in October 2024, and Enterprise accounts can also configure “larger runners” tied to specific Azure regions, including a small number of EU locations, through Azure VNET integration.

The catch is that both of those options are Enterprise Cloud features, requiring the higher-tier plan plus additional networking configuration most teams haven’t set up. For everyone on GitHub Team or standard Actions without that configuration, which is the majority of organizations using GitHub Actions, hosted runner location is simply not disclosed and not selectable. GitHub’s own community forums are full of teams asking for regional runner control and being told, as recently as the past couple of years, that standard hosted runners don’t support it. If your build pipeline runs on GitHub-hosted runners without Enterprise-tier residency configuration, your code is very likely executing on US-based infrastructure by default, regardless of where your production systems live.

Why This Matters Even When Production Is Already Compliant

It’s tempting to treat this as a technicality once the systems that actually hold customer data are EU-resident. That’s not quite right, for a few reasons that come up in real compliance reviews.

Source code itself is often the asset an organization cares most about keeping under EU jurisdiction, particularly for regulated software vendors, defense-adjacent suppliers, or any company where the codebase is the actual intellectual property at stake, not just the data flowing through it. Build artifacts, container images, and dependency caches can also carry real customer data if your test suites use production-like fixtures or if secrets management isn’t airtight, meaning your CI pipeline may be processing more sensitive material than “it’s just running tests” suggests.

And for regulated industries specifically, DORA and similar frameworks are pushing financial entities to document their full technology supply chain, not just where production data sits, which puts CI/CD infrastructure squarely in scope for the kind of infrastructure mapping we’ve covered in our look at DORA’s concentration risk and exit strategy requirements.

Self-Hosting on Amsterdam Hardware Closes the Gap Directly

Self-hosted GitHub Actions runners solve the location question cleanly, regardless of your GitHub plan tier, because the runner is a machine you control. Point it at hardware in Amsterdam, and the location question has a straightforward, verifiable answer, without needing Enterprise Cloud licensing or Azure VNET configuration to get there.

We’ve covered the general economics of self-hosted runners against GitHub’s hosted per-minute pricing in detail in our breakdown of the real cost math behind self-hosted GitHub Actions runners, including the specific crossover point where fixed infrastructure costs beat metered billing. That math holds the same way in Amsterdam as anywhere else. What changes for an EU-focused team is the reason for self-hosting in the first place: it’s not purely a cost decision, it’s the direct way to guarantee your build pipeline never leaves EU jurisdiction, on hardware that’s currently sitting available rather than waiting on procurement.

A Medium v4 or Large v4 configuration in Amsterdam, both currently in stock, gives a team enough parallel capacity for a real CI workload without a custom build-out. Every server ships with dual 10Gbps private networking as standard, keeping runner-to-artifact-storage traffic fast without competing with public bandwidth.

What This Doesn’t Solve on Its Own

Self-hosting the runners fixes where the compute executes. It doesn’t automatically fix everything upstream of that. If your source repository itself is hosted on GitHub.com without Enterprise Cloud’s EU data residency configuration, your code still lives on US infrastructure at rest, even if every build now executes in Amsterdam. Self-hosted runners solve the execution location problem specifically; repository hosting location is a separate question worth checking alongside it, since the two are easy to conflate and only one is addressed by moving your runners.

Getting Started

Current Amsterdam configurations suitable for self-hosted CI, including Medium v4 and Large v4, are available now rather than on a procurement timeline. For the general case on running DevOps workloads with full root access, see our pieces on optimizing CI/CD pipelines with OpenStack-powered private cloud and full root access for DevOps teams, and for the broader EU data residency picture beyond CI/CD specifically, see our breakdown of EU data residency versus data sovereignty.

FAQ

Does GitHub Actions offer EU-only hosted runners?

Only for GitHub Enterprise Cloud customers, through EU data residency (available since October 2024) or Azure VNET-based “larger runners” tied to specific EU regions. Standard GitHub Actions plans don’t disclose or allow selection of hosted runner location.

If my production data is already EU-resident, does that cover my CI/CD pipeline too?

Not automatically. Production data residency and CI/CD execution location are separate infrastructure questions. Source code, build artifacts, and dependency caches can run through non-EU infrastructure even when your production database and application servers are fully EU-based.

Does self-hosting a runner in Amsterdam also move my GitHub repository to the EU?

No. Self-hosted runners control where your build jobs execute, not where your source repository is stored at rest. If repository storage location matters for your compliance requirements, that’s a separate consideration involving GitHub Enterprise Cloud’s data residency feature or an alternative git hosting setup.

What hardware is actually available now for EU-based CI/CD self-hosting?

Medium v4 and Large v4 configurations are currently in stock in OpenMetal’s Amsterdam data center, available for immediate deployment rather than a multi-week procurement wait.


Chat With Our Team

We’re available to answer questions and provide information.

Reach Out

Schedule a Consultation

Get a deeper assessment and discuss your unique requirements.

Schedule Consultation

Try It Out

Take a peek under the hood of our cloud platform or launch a trial.

Trial Options

 

 

 Read More on the OpenMetal Blog

Keeping Your Build Pipeline in the EU When GitHub Actions Won’t

Aug 19, 2026

We look at why a company’s production data residency doesn’t automatically cover its CI/CD pipeline, what GitHub Actions actually offers EU-based teams today, and how self-hosting runners on Amsterdam hardware closes that gap directly.

The Real Cost Math Behind Self-Hosted GitHub Actions Runners

Aug 11, 2026

We work through the actual cost crossover between GitHub-hosted Actions runners and self-hosted runners on dedicated bare metal, using GitHub’s current 2026 rates, correct a common misconception about a self-hosted runner fee that never took effect, and cover what a self-hosted build pipeline needs beyond just cheaper compute.

What Your Cloud API Choice Is Actually Costing You

Mar 31, 2026

When you choose a cloud provider’s APIs, you’re making a financial commitment that compounds over time. This article breaks down how proprietary cloud APIs create vendor lock-in, what that lock-in costs in migration debt and ongoing fees, and how OpenStack-based private cloud infrastructure maps to the patterns developers already know without the long-term dependency.

Managing OpenStack Infrastructure with GitOps Workflows

Jan 13, 2026

Manual OpenStack management is risky. This guide adapts Kubernetes-style GitOps for infrastructure, covering Terraform setup, tool selection (Atlantis vs. Flux), secret management, and patterns for scaling multi-environment deployments efficiently.

Operational Visibility: When Infrastructure Predictability Isn’t Just Cost, It’s Reliability

Nov 04, 2025

Most cloud platforms promised predictability but delivered predictable bills, not predictable performance. True infrastructure reliability requires operational visibility—baseline latency, IO consistency, and debuggable systems. Learn why visibility isn’t a luxury—it’s the prerequisite for stability at scale.

Lowering Redundancy in Development for Cost Savings on Staging Environments

Oct 27, 2025

Learn how to reduce staging and development infrastructure costs by 30-50% through granular Ceph storage redundancy control. OpenMetal’s bare metal private cloud lets you configure replica 2 or erasure coding for non-production workloads while maintaining replica 3 for production, directly cutting hardware requirements.

Why Over-Provisioning on OpenMetal is a Feature, Not a Bug

Oct 23, 2025

Discover why over-provisioning on OpenMetal’s dedicated hardware isn’t wasteful, it’s a strategic advantage. Fixed monthly pricing means unused capacity costs nothing extra, enabling 4:1 CPU over-subscription, unlimited VLANs, and lower-redundancy storage that maximize ROI for bursty CI/CD workloads.

A Private Cloud with Full Root Access for DevOps Teams

Oct 02, 2025

DevOps teams need more than restricted cloud access. OpenMetal provides full root access to dedicated bare metal infrastructure, enabling complete control over hardware and software stacks. Deploy custom configurations, implement infrastructure as code, and optimize performance without vendor limitations, all in 45 seconds.

Optimizing Your CI/CD Pipeline with an OpenStack-Powered Private Cloud

Aug 22, 2025

Tired of unpredictable cloud bills and slow CI/CD builds? Discover how OpenMetal’s OpenStack-powered private cloud delivers 10x faster deployment times, eliminates noisy neighbor problems, and provides fixed-cost infrastructure that molds to your development team’s needs.

MicroVMs: Scaling Out Over Scaling Up in Modern Cloud Architectures

Jun 08, 2025

Explore how MicroVMs deliver fast, secure, and resource-efficient horizontal scaling for modern workloads like serverless platforms, high-concurrency APIs, and AI inference. Discover how OpenMetal’s high-performance private cloud and bare metal infrastructure supports scalable MicroVM deployments.