What is runner actually for?

You have your project along with a .gitlab-ci.yml file. .gitlab-ci.yml defines what stages your CI/CD pipeline has and what to do in each stage. This typically consists of a build,test,deploy stages. Within each stage you can define multiple job. For example in build stage you may have 3 jobs to build on debian, centos and windows (in GitLab glossary build:debian, build:centos, build:windows). A GitLab runner clones the project read the gitlab-ci.yaml file and do what he is instructed to do. So basically GitLab runner is a Golang process that executes some instructed tasks.

where is it meant to be installed?

You can install a runner in your desired environment listed here. https://docs.gitlab.com/runner/install/ or you can use a shared runner that is already installed on GitLab's infrastructure.

Does it care which directory it is run in?

Yes. Every task executed by runner is relativly to CI_PROJECT_DIR defined in https://gitlab.com/help/ci/variables/README. But you can alter this behaviour.

where does it execute it's script commands? At root?

Do I need to set my executor to docker? Shouldn't I just set it to shell, pull the image, and build it?

A runner can have mutiple executors such as docker, shell, virtualbox etc but docker being the most common one. If you use docker as the executor you can pull any image from docker hub or your configured registry and you can do loads of stff with docker images. In a docker environment normally you run them as the root user. https://docs.gitlab.com/runner/executors/README.html

Answer from Kalpa Gunarathna on Stack Overflow
🌐
GitLab
docs.gitlab.com › gitlab docs › use gitlab › use ci/cd to build your application › runners
Runners | GitLab Docs
When a CI/CD job needs to be executed, GitLab creates a job based on the tasks defined in the .gitlab-ci.yml file. The jobs are placed in a queue. GitLab checks for available runners that match: Runner tags. Runner types (like shared or group) Runner status and capacity ·
🌐
GitLab
docs.gitlab.com › gitlab docs › administer › administer gitlab runner
GitLab Runner | GitLab Docs
Runner: A configured instance of GitLab Runner that can execute jobs. Depending on the type of executor, this machine could be local to the runner manager (shell or docker executor) or a remote machine created by an autoscaler (docker-autoscaler or kubernetes).
🌐
GitLab
docs.gitlab.com › gitlab docs › administer › administer gitlab runner › runner executors
Executors | GitLab Docs
The Instance executor is an autoscale-enabled executor that creates instances on demand to accommodate the expected volume of jobs that the runner manager processes. This executor and the related Docker Autoscale executor are the new autoscaling executors that work in conjunction with the GitLab Runner Fleeting and Taskscaler technologies.
🌐
DEV Community
dev.to › zenika › gitlab-runners-which-topology-for-fastest-job-execution-5bma
🦊 GitLab Runners: Which Topology for Fastest Job Execution? - DEV Community
April 29, 2026 - After analyzing all runner types, Shell and Docker executors on single servers offer the fastest job execution for most teams. ... Choosing the right GitLab Runner topology depends on your specific needs, but if minimizing job execution time is your primary concern, Shell or Docker executors on well-provisioned single servers consistently deliver the fastest jobs.
🌐
Wikimedia
wikitech.wikimedia.org › wiki › GitLab › Gitlab_Runner
GitLab/Gitlab Runner - Wikitech
July 7, 2026 - GitLab Runner is an application that works with GitLab to run CI/CD jobs in a pipeline.[1] For more information see the official GitLab Runner documentation. For information on how GitLab runners are used in production deployments, see Deploying services to production. Our GitLab instance offers different types of CI Runners:
🌐
DevOpsSchool.com
devopsschool.com › blog › gitlab-cloud-list-of-runner-sources
GitLab Runners – A Complete Guide
Here’s a complete and up-to-date list of runner sources available to you on GitLab Cloud (GitLab.com) as of version 18.0 (May 2026): ... As of GitLab 18.x, GitLab supports several types of runners to execute CI/CD jobs.
Find elsewhere
Top answer
1 of 2
32

What is runner actually for?

You have your project along with a .gitlab-ci.yml file. .gitlab-ci.yml defines what stages your CI/CD pipeline has and what to do in each stage. This typically consists of a build,test,deploy stages. Within each stage you can define multiple job. For example in build stage you may have 3 jobs to build on debian, centos and windows (in GitLab glossary build:debian, build:centos, build:windows). A GitLab runner clones the project read the gitlab-ci.yaml file and do what he is instructed to do. So basically GitLab runner is a Golang process that executes some instructed tasks.

where is it meant to be installed?

You can install a runner in your desired environment listed here. https://docs.gitlab.com/runner/install/ or you can use a shared runner that is already installed on GitLab's infrastructure.

Does it care which directory it is run in?

Yes. Every task executed by runner is relativly to CI_PROJECT_DIR defined in https://gitlab.com/help/ci/variables/README. But you can alter this behaviour.

where does it execute it's script commands? At root?

Do I need to set my executor to docker? Shouldn't I just set it to shell, pull the image, and build it?

A runner can have mutiple executors such as docker, shell, virtualbox etc but docker being the most common one. If you use docker as the executor you can pull any image from docker hub or your configured registry and you can do loads of stff with docker images. In a docker environment normally you run them as the root user. https://docs.gitlab.com/runner/executors/README.html

2 of 2
1

GitLab runner is a build instance which is used to run the jobs over multiple machines and send the results to GitLab and which can be placed on separate users, servers, and local machine. You can register the runner as shared or specific after installing it.

Shared Runners : These runners are useful for jobs multiple projects which have similar requirements. Instead of using multiple runners for many projects, you can use a single or a small number of Runners to handle multiple projects which will be easy to maintain and update.

Specific Runners : These runners are useful to deploy a certain project, if jobs have certain requirements or specific demand for the projects. Specific runners use FIFO (First In First Out) process for organizing the data with first-come first-served basis.

Protected Runners : The runners can be protected to save the important information.

🌐
KodeKloud Notes
notes.kodekloud.com › architecture & core concepts › types of runners
Types of Runners - KodeKloud
January 28, 2026 - You can choose between Shared Runners hosted by GitLab or Self-Managed Runners on your own infrastructure.
🌐
GitLab
forum.gitlab.com › gitlab ci/cd
How does a shared runner work? - GitLab CI/CD - GitLab Forum
April 27, 2024 - Hello, When I create a runner for a project and go to the next project, there is a button called Enable for this project. Can I use this button instead of creating a runner for each project? Is this the same as if I mad…
🌐
Medium
harsh05.medium.com › exploring-gitlab-runners-types-and-practical-implementation-with-aws-8583bc1e058d
Exploring GitLab Runners: Types and Practical Implementation with AWS | by @Harsh | Medium
August 7, 2024 - In this blog, we will explore what a GitLab Runner is, why it is essential, the types of runners (shared and dedicated), and demonstrate how to connect and register an AWS instance as a GitLab dedicated runner.
🌐
GitLab
docs.gitlab.com › gitlab docs › use gitlab › use ci/cd to build your application › runners › gitlab-hosted runners
GitLab-hosted runners | GitLab Docs
If you want to contribute to GitLab, jobs are picked up by the gitlab-shared-runners-manager-X.gitlab.com fleet of runners, dedicated for GitLab projects and related community forks. These runners are backed by the same machine type as our small Linux x86-64 runners.
🌐
Tech
docs.developer.tech.gov.sg › docs › ship-hats-docs › tools › gitlab › runner-types
SHIP-HATS supports the following runner types
Guides SHIP-HATS users through subscription and onboarding, project management, CI/CD pipeline usage, compliance requirements, dashboards, and integrated testing and deployment workflows.
🌐
YouTube
youtube.com › princeautomationdestination
Gitlab Runner and Executor | Important Gitlab concept - YouTube
Hello Everyone,Welcome to Gitlab series.Today we are going to talk about Runners concepts and How they can be used for execution of Jobs defined in Gitlab Pi...
Published: July 16, 2024
Views: 343
🌐
GitLab
docs.gitlab.com › gitlab docs › administer › administer gitlab runner › create and manage runners
Manage runners | GitLab Docs
Instance runners are available to all groups and projects in a GitLab instance. Group runners are available to all projects and subgroups in a group.
🌐
OneUptime
oneuptime.com › home › blog › how to use gitlab runners effectively
How to Use GitLab Runners Effectively
December 21, 2025 - [[runners]] executor = "kubernetes" [runners.kubernetes] namespace = "gitlab-runner" cpu_request = "500m" memory_request = "1Gi" cpu_limit = "2000m" memory_limit = "4Gi" [[runners]] [runners.cache] Type = "local" Path = "/cache" Shared = true
🌐
GitLab
docs.gitlab.com › gitlab docs › use gitlab › use ci/cd to build your application › runners › gitlab-hosted runners › linux
Hosted runners on Linux | GitLab Docs
Runners with the gitlab-org tag do not run in privileged mode and cannot be used for Docker-in-Docker builds. To use a machine type other than small, add a tags: keyword to your job.
🌐
GitLab
docs.gitlab.com › gitlab docs › administer › administer gitlab runner › configure runners › runner fleet dashboard
Runner fleet dashboard for administrators | GitLab Docs
To analyze runner usage, you can export a CSV file that contains the number of jobs and executed runner minutes. The CSV file shows the runner type and job status for each project.
🌐
OpenMSCG
software.rcc.uchicago.edu › help
Readme · Runners · Ci · Help · GitLab
This documentation is focused on using runners in GitLab. If you need to install and configure GitLab Runner, see the GitLab Runner documentation. In the GitLab UI there are three types of runners, based on who you want to have access:
🌐
Medium
medium.com › devops-with-valentine › a-brief-guide-to-gitlab-ci-runners-and-executors-a81b9b8bf24e
A Brief Guide to GitLab CI Runners and Executors | by Valentin Despa | DevOps with Valentine | Medium
November 18, 2021 - GitLab Runner: this is an agent installed on a different server from the GitLab server. The GitLab Runner receives instructions from the GitLab server in regards to which jobs to run.
🌐
GitLab
forum.gitlab.com › how to use gitlab
Multiple gitlab-runners - How to Use GitLab - GitLab Forum
May 12, 2024 - Dear All I have one question about Multiple gitlab-runners. I have gitlab server with 2 gitlab-runner , one runner Executor is shell and another runner Executor is docker. both runner doesn’t have Tags (Tags : None) …