🌐
GitLab
docs.gitlab.com › gitlab docs › administer › administer gitlab runner
GitLab Runner | GitLab Docs
GitLab Runner connects to your GitLab instance and waits for CI/CD jobs. When a pipeline runs, GitLab sends jobs to available runners.
GitLab Docs
Learn how to use and administer GitLab, the most scalable Git-based fully integrated platform for software development.
Register a runner
Learn more about Registering runners in the GitLab documentation.
Runner executors
Learn more about Executors in the GitLab documentation.
Configure runners
Be aware that cache and artifact files from previous pipelines might still be present. Unlike none, the empty Git strategy deletes and then re-creates a dedicated build directory before downloading cache or artifact files. With this strategy, the GitLab Runner hook scripts are still run (if ...
🌐
GitLab
docs.gitlab.com › gitlab docs › use gitlab › use ci/cd to build your application › runners
Runners | GitLab Docs
Runners are the agents that run the GitLab Runner application, to execute GitLab CI/CD jobs in a pipeline.
Discussions

devops - What is gitlab runner - Stack Overflow
Shouldn't I just set it to shell, pull the image, and build it? (Assuming the runner is runing on the remote VM). ... Save this answer. ... Show activity on this post. ... You have your project along with a .gitlab-ci.yml file. .gitlab-ci.yml defines what stages your CI/CD pipeline has and what ... More on stackoverflow.com
🌐 stackoverflow.com
GitLab: Is it possible to run pipeline on a specific runner? - Stack Overflow
Is it possible to run a pipeline on a specific runner? (not using tags) Is it feasible to use environments, or even gitlab runner exec maybe? Scenario: Have an existing project with multiple runn... More on stackoverflow.com
🌐 stackoverflow.com
Running the entire GitLab CI pipeline locally with external GitLab runners
What you seem to be asking is can you run gitlab localy to run the pipelines, but use remote runners. The answer is yes, but with the following caveats. You can install gitlab on your local machine. Runners can only be registered with one system, so if you register them with your local system, they cant also be connected to gitlab.com You will have to have an inbound https connection from the runner to your local instance of gitlab, so it can register and pickup jobs. More on reddit.com
🌐 r/gitlab
3
7
November 13, 2022
Building for Windows in GitLab CI
Isn’t this the information your are looking for: https://docs.gitlab.com/runner/executors/docker.html#supported-windows-versions Otherwise you can use their windows public runners by specifying windows tags. More on reddit.com
🌐 r/gitlab
11
2
October 17, 2024
🌐
GitLab
docs.gitlab.com › gitlab docs › use gitlab › use ci/cd to build your application › tutorials › tutorial: your first pipeline
Tutorial: Create and run your first GitLab CI/CD pipeline | GitLab Docs
Create a .gitlab-ci.yml file at the root of your repository. This file is where you define the CI/CD jobs. When you commit the file to your repository, the runner runs your jobs. The job results are displayed in a pipeline.
🌐
Medium
medium.com › @r.lakhani11 › simplifying-ci-cd-a-quick-guide-to-gitlab-self-managed-3a1f08ef0fa6
Simplifying CI/CD: A Quick Guide to GitLab Self-Managed Runners | by DevOpsEd | Medium
January 17, 2024 - Don’t forget to restart the runner with sudo gitlab-runner restart command if you happen to make any changes to config.toml file. An integral and relevant part of this process is .gitlab-ci.yaml file. Pipelines get initiated every time this file is created or modified/committed/pushed to the repo.
🌐
CNCF
cncf.io › blog › 2025 › 01 › 17 › what-is-gitlab-runner
What is GitLab Runner? | CNCF
January 27, 2025 - Ambassador post by Natalia Granato, CNCF Ambassador GitLab Runner is an open-source application that runs jobs defined in your GitLab CI/CD pipelines.
🌐
Baeldung
baeldung.com › home › devops › guide to gitlab runner
Guide to GitLab Runner | Baeldung on Ops
May 31, 2024 - Here, we explore how GitLab Runner executes jobs, how we can run shell commands within jobs, and how we leverage Doker for isolated and reproducible job environments. When we push changes to the repository or create a merge request, GitLab triggers the pipeline defined in the .gitlab-ci.yml file.
🌐
DEV Community
dev.to › ishmam_abir › cicd-on-local-gitlab-server-setup-gitlab-runner-self-hosted-gitlab-37nf
CI/CD on Local Gitlab server| Setup GitLab Runner | Self-hosted GitLab - DEV Community
November 15, 2025 - In this article, we'll install ... our CI/CD pipelines to life. A GitLab Runner is a separate application that executes the CI/CD jobs specified in your GitLab projects....
🌐
GitLab
docs.gitlab.com › gitlab docs › use gitlab › use ci/cd to build your application › runners › gitlab-hosted runners
GitLab-hosted runners | GitLab Docs
The following graphic shows the ... for GitLab.com · For more information on how runners are authenticating and executing the job payload, see Runner Execution Flow. In addition to isolating runners on the network, each ephemeral runner VM only serves a single job and is deleted straight after the job execution. In the following example, three jobs are executed in a project’s pipeline...
Find elsewhere
🌐
AWS
docs.aws.amazon.com › aws codebuild › user guide › build projects › use runners with aws codebuild › self-managed gitlab runners in aws codebuild
Self-managed GitLab runners in AWS CodeBuild - AWS CodeBuild
Update your GitLab CI/CD pipeline YAML in GitLab to configure your build environment. For a more detailed procedure, see Tutorial: Configure a CodeBuild-hosted GitLab runner.
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.

🌐
GeeksforGeeks
geeksforgeeks.org › git › how-to-configure-gitlab-runners
How To Configure GitLab Runners? - GeeksforGeeks
July 23, 2025 - A GitLab Runner is an application that works with GitLab CI/CD to run jobs in a pipeline. When a pipeline is triggered by a code push or a merge request, GitLab sends the jobs to the runner, which executes the defined tasks.
🌐
Medium
medium.com › @aymenfarhani28 › gitlab-runners-ff2be56a1985
Gitlab Runners. In GitLab CI/CD, runners are the agents… | by Aymen FARHANI | Medium
December 19, 2024 - In GitLab CI/CD, runners are the agents that execute your pipeline jobs. They can be hosted by GitLab (shared runners) or you can set up…
🌐
Medium
rushpatel.medium.com › running-gitlab-pipelines-locally-with-gitlab-runner-4d9ba4cdddca
Running GitLab Pipelines Locally with GitLab Runner | by Rushabh Patel | Medium
September 29, 2025 - In this post, I’ll walk you through how I set up a GitLab runner locally, configured it with a custom tag, and used it to build and run a Dockerized application. ... Full control over the environment (great for debugging pipelines).
🌐
OneUptime
oneuptime.com › home › blog › how to use gitlab runners effectively
How to Use GitLab Runners Effectively
December 21, 2025 - GitLab Runners are the workhorses of your CI/CD pipelines. They execute the jobs defined in your .gitlab-ci.yml file and report results back to GitLab.
Top answer
1 of 3
5

You have two mechanisms by which you can attempt to isolate a new runner for testing:

  1. use tags and private runner attachment (already called out)
  2. use the gitlab-runner exec verb directly on the runner
  3. canary the runner for a single build only

Option 1

use tags and private runner attachment (already called out).

To further expand on this... even in a draconian setup where you can't alter tags and whatnot -- you can always FORK the project.

In your new private fork, you can go to Settings >> CI/CD and override the .gitlab-ci.yml file in the Custom CI Configuration Path under the General Pipelines Settings. This allows you to git cp .gitlab-ci.yml .mycustomgitlab-ci.yml and then simply git add/git commit/git push and you're in business.

Opinion: If you cannot use the mechanisms in place to adjust the tags on the questionable runner and isolate a new forked project, this isn't a technical problem, it is a political problem.

Option 2

Gitlab-runner exec....

Assuming you're using a shell gitlab runner...

  1. SSH to the questionable gitlab runner box you're trying to test
  2. Clone the repo for the project in question to ... say ... /tmp/myrepo
  3. Execute Gitlab-Runner: /path/to/gitlab-runner exec shell {.gitlab-ci.yml target}

See https://docs.gitlab.com/runner/commands/#gitlab-runner-exec and a blog about it at https://substrakt.com/how-to-debug-gitlab-ci-builds-locally/

Option 3

Canary the gitlab-runner for a single build.

You can spin up the gitlab-runner process to do N number of builds and then go back offline. See: https://docs.gitlab.com/runner/commands/#gitlab-runner-run-single

... This is not zero-impact, but will definitely limit the blast radius of any problems.

2 of 3
4

There currently isn't a solution for building on a specific runner in GitLab, but there is an issue open for Sticky Runners, which hopefully will be out in the next 3-6 months according to the Milestones!


The work around I've done so far to build a project on a specific runner is to use the GitLab Runner API, in a rather hacky way, along the lines of:

  • Get all project runners
  • As I know I've deployed the latest runner, that would have the highest runner "number"
  • Pause all the other runners associated with the project in question
  • Trigger the pipeline to build on the latest runner
  • Poll the GitLab API to get the status of the pipeline
  • Once that succeeds, resume all other runners!
  • If the pipeline fails, remember to resume the paused runners...
🌐
GitLab
docs.gitlab.com › gitlab docs › administer › administer gitlab runner › configure runners
Configuring runners | GitLab Docs
Be aware that cache and artifact files from previous pipelines might still be present. Unlike none, the empty Git strategy deletes and then re-creates a dedicated build directory before downloading cache or artifact files. With this strategy, the GitLab Runner hook scripts are still run (if ...
🌐
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 - A GitLab Runner is an executer used to run CI/CD jobs and send the results back to GitLab. Runners are the workhorses of GitLab CI/CD pipelines, performing tasks such as building, testing, and deploying code.
🌐
DBI Services
dbi-services.com › accueil › run 2 specific gitlab runners in local containers for ci/cd pipeline
Run 2 specific GitLab Runners in local containers for CI/CD Pipeline
August 5, 2022 - The GitLab instance and registration token are given in your GitLab project (Settings -> CD/CD -> Runners). Enter a unique tag (or tags) for this runner as this will be used to identify it in your CI/CD pipeline (by default untagged Jobs are ...
🌐
Reddit
reddit.com › r/gitlab › running the entire gitlab ci pipeline locally with external gitlab runners
r/gitlab on Reddit: Running the entire GitLab CI pipeline locally with external GitLab runners
November 13, 2022 -

Is there a way to run the entire GitLab CI pipeline on the local host, where it uses the same GitLab runners that are located on external compute resources, such as an external build server?

I know of the gitlab-runner exec command, but as I understand it, that command uses the local host as the GitLab runner. Is there a way of using the command the same way, but with the external GitLab runners that are already used in the CI pipeline when pushing to the cloud? A thought that came to mind is to use a script to ssh into an external host and then use the GitLab runner command to perform all jobs in the gitlab-ci.yml file. However, this will require the local host to link the repository to the external host somehow before executing the pipeline. This method also seems tedious when having multiple external computers with a GitLab runner. Does anyone have any better suggestions?

🌐
OpenMSCG
software.rcc.uchicago.edu › help
Readme · Runners · Ci · Help · GitLab
GIT_STRATEGY=none requires GitLab Runner v1.7+. You can set the GIT_STRATEGY used to fetch the repository content, either globally or per-job in the variables section: ... There are three possible values: clone, fetch, and none. If left unspecified, jobs use the project's pipeline setting.