{"id":49471,"date":"2025-05-28T03:01:42","date_gmt":"2025-05-28T03:01:42","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49471"},"modified":"2026-02-21T07:28:59","modified_gmt":"2026-02-21T07:28:59","slug":"gitlab-cloud-list-of-runner-sources","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/gitlab-cloud-list-of-runner-sources\/","title":{"rendered":"GitLab Runners &#8211; A Complete Guide"},"content":{"rendered":"\n<p>If you&#8217;re using <strong>GitLab SaaS (GitLab Cloud)<\/strong>, you have multiple runner options to execute your CI\/CD jobs. Each runner source gives you different levels of control, performance, and cost efficiency.<\/p>\n\n\n\n<p>Here\u2019s a <strong>complete and up-to-date list of runner sources<\/strong> available to you on <strong>GitLab Cloud (GitLab.com)<\/strong> as of <strong>version 18.0 (May 2026)<\/strong>:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Available Runner Sources in GitLab Cloud<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Runner Source<\/strong><\/th><th><strong>Description<\/strong><\/th><th><strong>Use Case<\/strong><\/th><th><strong>Availability<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>GitLab Shared Runners<\/strong><\/td><td>Provided and maintained by GitLab. Run on GitLab-managed infrastructure (auto-scaled).<\/td><td>Quick start, no setup needed<\/td><td>\u2705 Enabled by default<\/td><\/tr><tr><td><strong>Project-Specific Runners<\/strong><\/td><td>Installed and registered for a single project only.<\/td><td>Dedicated pipelines for sensitive repos<\/td><td>\u2705 User-managed<\/td><\/tr><tr><td><strong>Group Runners<\/strong><\/td><td>Registered to a group and available to all projects inside the group.<\/td><td>Shared infra across multiple related projects<\/td><td>\u2705 User-managed<\/td><\/tr><tr><td><strong>Self-Hosted Runners (Custom)<\/strong><\/td><td>Installed on your own infrastructure (Linux, macOS, Windows, Docker, Kubernetes, etc.).<\/td><td>Full control over environment &amp; cost<\/td><td>\u2705 GitLab SaaS-compatible<\/td><\/tr><tr><td><strong>GitLab Kubernetes Executor (Auto DevOps)<\/strong><\/td><td>Auto-provisioned runner inside a connected K8s cluster (via GitLab Agent or legacy cert).<\/td><td>Cloud-native CI\/CD with GitOps-style delivery<\/td><td>\u2705 Optional setup<\/td><\/tr><tr><td><strong>GitLab macOS Runners (M1\/M2)<\/strong> (beta)<\/td><td>Apple Silicon runners for building macOS\/iOS apps (Xcode). Currently in Beta for SaaS.<\/td><td>iOS\/macOS mobile CI\/CD<\/td><td>\ud83e\uddea Limited Beta<\/td><\/tr><tr><td><strong>GitLab Windows Runners<\/strong> (hosted or self)<\/td><td>Use Windows executor to build\/test .NET, Windows apps.<\/td><td>Windows-native software pipelines<\/td><td>\u2705 Self-hosted or BYO<\/td><\/tr><tr><td><strong>GitLab GPU Runners (beta)<\/strong><\/td><td>GPU-backed runners for AI\/ML workloads (uses NVIDIA CUDA).<\/td><td>Model training and GPU-based data pipelines<\/td><td>\ud83e\uddea Ultimate \/ Limited Beta<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd27 Summary of Executors by Runner Type<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Executor Type<\/strong><\/th><th>Compatible with GitLab Cloud?<\/th><th>Platform Examples<\/th><\/tr><\/thead><tbody><tr><td><code>shell<\/code><\/td><td>\u2705 (self-hosted only)<\/td><td>Local VMs, bare metal<\/td><\/tr><tr><td><code>docker<\/code><\/td><td>\u2705<\/td><td>Docker-in-Docker setups<\/td><\/tr><tr><td><code>docker+machine<\/code><\/td><td>\u2705 (with autoscaling)<\/td><td>AWS\/GCP dynamic runners<\/td><\/tr><tr><td><code>kubernetes<\/code><\/td><td>\u2705<\/td><td>GKE, EKS, AKS<\/td><\/tr><tr><td><code>custom<\/code><\/td><td>\u2705<\/td><td>Any custom automation<\/td><\/tr><tr><td><code>ssh<\/code><\/td><td>\u2705<\/td><td>Remote Linux VMs<\/td><\/tr><tr><td><code>virtualbox<\/code><\/td><td>\u274c GitLab SaaS not supported<\/td><td>Only works self-managed<\/td><\/tr><tr><td><code>parallels<\/code><\/td><td>\u274c Deprecated<\/td><td><\/td><\/tr><tr><td><code>shell-windows<\/code><\/td><td>\u2705<\/td><td>Windows self-hosted<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udccc Special GitLab SaaS-Hosted Runners<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Runner Type<\/th><th>Language Support<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td><strong>Linux Shared Runners<\/strong><\/td><td>Default Docker executor (Node, Python, etc.)<\/td><td>400 CI minutes\/month for Free tier<\/td><\/tr><tr><td><strong>macOS Runners<\/strong> (beta)<\/td><td>Swift, Xcode, iOS<\/td><td>Available via GitLab-hosted pool<\/td><\/tr><tr><td><strong>GPU Runners<\/strong> (beta)<\/td><td>CUDA, TensorFlow, PyTorch<\/td><td>Ultimate SaaS, usage billed separately<\/td><\/tr><tr><td><strong>Windows Runners<\/strong><\/td><td>.NET Core, PowerShell<\/td><td>Use your own runner for Windows<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfaf When to Use What<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Use Case<\/strong><\/th><th><strong>Recommended Runner<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Quick setup for any project<\/td><td>GitLab Shared Runners<\/td><\/tr><tr><td>Secure or private pipelines (sensitive data)<\/td><td>Project\/Group-specific runners<\/td><\/tr><tr><td>Complex environments (Terraform, AI\/ML)<\/td><td>Self-hosted Docker or Kubernetes<\/td><\/tr><tr><td>macOS\/iOS CI\/CD<\/td><td>GitLab macOS Runners (Beta)<\/td><\/tr><tr><td>Windows CI\/CD<\/td><td>Self-hosted Windows runner<\/td><\/tr><tr><td>GPU training \/ AI workloads<\/td><td>GPU runners (Ultimate only)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 How to View\/Add Runners in GitLab Cloud<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Project &gt; Settings &gt; CI\/CD &gt; Runners<\/strong>\n<ul class=\"wp-block-list\">\n<li>Shows shared runners, and allows adding project-specific ones<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Group &gt; Settings &gt; CI\/CD &gt; Runners<\/strong>\n<ul class=\"wp-block-list\">\n<li>For group-level runners<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Admin Runners Page<\/strong> (for instance-level visibility, GitLab self-managed only)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<p>As of <strong>GitLab 18.x<\/strong>, GitLab supports several types of <strong>runners<\/strong> to execute CI\/CD jobs. Here\u2019s a clear and updated breakdown:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfc3 Types of GitLab Runners in GitLab 18.x<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Shared Runners<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scope<\/strong>: Available to all projects in an instance or group.<\/li>\n\n\n\n<li><strong>Managed by<\/strong>: GitLab instance admin (self-hosted or GitLab.com).<\/li>\n\n\n\n<li><strong>Use case<\/strong>: Ideal for teams that don\u2019t want to manage infrastructure for builds.<\/li>\n\n\n\n<li><strong>Example<\/strong>: GitLab.com provides autoscaling shared runners using Docker Machine.<\/li>\n<\/ul>\n\n\n\n<p>\u2705 Pros:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Easy to set up<\/li>\n\n\n\n<li>Great for small teams and quick pipelines<br>\u26a0\ufe0f Cons:<\/li>\n\n\n\n<li>Queues can be long on GitLab.com during peak usage<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Group Runners<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scope<\/strong>: Available to all projects <strong>within a group<\/strong>.<\/li>\n\n\n\n<li><strong>Managed by<\/strong>: Group owners<\/li>\n\n\n\n<li><strong>Use case<\/strong>: For teams managing multiple related projects needing the same CI resources.<\/li>\n<\/ul>\n\n\n\n<p>\u2705 Pros:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralized control at group level<\/li>\n\n\n\n<li>Avoids redundancy for project-specific runners<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Project-specific Runners<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scope<\/strong>: Tied to a single project only.<\/li>\n\n\n\n<li><strong>Managed by<\/strong>: Project maintainers\/owners<\/li>\n\n\n\n<li><strong>Use case<\/strong>: When a project needs specialized tools or secure execution.<\/li>\n<\/ul>\n\n\n\n<p>\u2705 Pros:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Full control<\/li>\n\n\n\n<li>Secure, isolated builds<br>\u26a0\ufe0f Cons:<\/li>\n\n\n\n<li>More setup and maintenance overhead<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd27 Execution Environments (Runners\u2019 Executor Types)<\/h2>\n\n\n\n<p>Each runner (regardless of shared\/group\/project) uses an <strong>executor<\/strong> to determine how jobs are run:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Executor<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>shell<\/code><\/td><td>Uses host shell (e.g., Bash); minimal setup<\/td><\/tr><tr><td><code>docker<\/code><\/td><td>Spawns Docker containers to run jobs (very popular)<\/td><\/tr><tr><td><code>docker+machine<\/code><\/td><td>Scales runners dynamically using Docker Machine<\/td><\/tr><tr><td><code>kubernetes<\/code><\/td><td>Runs jobs as pods inside a Kubernetes cluster<\/td><\/tr><tr><td><code>ssh<\/code><\/td><td>Executes jobs on a remote server over SSH<\/td><\/tr><tr><td><code>custom<\/code><\/td><td>Define your own job executor flow<\/td><\/tr><tr><td><code>virtualbox<\/code> (deprecated)<\/td><td>Used VMs (not commonly used now)<\/td><\/tr><tr><td><code>parallels<\/code> (macOS only)<\/td><td>Used Parallels for macOS virtualized runners<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udde0 Special Note on GitLab SaaS vs Self-Managed<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Runner Type<\/th><th>GitLab.com (SaaS)<\/th><th>Self-Managed GitLab<\/th><\/tr><\/thead><tbody><tr><td>Shared Runners<\/td><td>\u2705 Available<\/td><td>\u2705 Can be configured<\/td><\/tr><tr><td>Group Runners<\/td><td>\ud83d\udeab Not available<\/td><td>\u2705 Available<\/td><\/tr><tr><td>Project Runners<\/td><td>\u2705 Available<\/td><td>\u2705 Available<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>GitLab.com (SaaS) does <strong>not support Group-level runners<\/strong> for security\/resource isolation reasons.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd04 Registering a Runner<\/h2>\n\n\n\n<p>To register a runner in GitLab 18.0, follow these steps:<a href=\"https:\/\/docs.gitlab.com\/runner\/register\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">GitLab Docs<\/a><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Install GitLab Runner<\/strong>: Ensure GitLab Runner is installed on your desired host machine.<\/li>\n\n\n\n<li><strong>Obtain a Registration Token<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Instance Runner<\/strong>: Available in the Admin Area under <strong>CI\/CD &gt; Runners<\/strong>.<\/li>\n\n\n\n<li><strong>Group Runner<\/strong>: Found in the group&#8217;s <strong>Settings &gt; CI\/CD &gt; Runners<\/strong> section.<\/li>\n\n\n\n<li><strong>Project Runner<\/strong>: Located in the project&#8217;s <strong>Settings &gt; CI\/CD &gt; Runners<\/strong> section.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Register the Runner<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Run the following command and follow the prompts:<a href=\"https:\/\/docs.gitlab.com\/runner\/register\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">about.gitlab.com+6GitLab Docs+6GitLab Forum+6<\/a><a href=\"https:\/\/docs.gitlab.com\/ci\/runners\/configure_runners\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">GitLab Docs+2GitLab Docs+2GitLab Docs+2<\/a><a href=\"https:\/\/docs.gitlab.com\/ci\/runners\/runners_scope\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">GitLab Docs+1Exoscale+1<\/a> bashCopyEdit<code>gitlab-runner register<\/code><\/li>\n\n\n\n<li>Provide the GitLab instance URL, registration token, description, tags, and executor type as prompted.<a href=\"https:\/\/docs.gitlab.com\/runner\/register\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">GitLab Docs<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>After successful registration, the runner will appear in the GitLab UI under the appropriate scope (instance, group, or project). <a href=\"https:\/\/docs.gitlab.com\/runner\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">GitLab Docs<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you&#8217;re using GitLab SaaS (GitLab Cloud), you have multiple runner options to execute your CI\/CD jobs. Each runner source gives you different levels of control, performance, and cost efficiency&#8230;. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49471","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49471"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49471\/revisions"}],"predecessor-version":[{"id":58992,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49471\/revisions\/58992"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}