Runners are used to execute jobs in GitLab CI

Runner can be shared across the instance of GitLab

They can be specific to a group or project

Extensive configuration


Jobs select runners by specifying a tag


New runner registration process

New default in 16.0 (May 2023)

Enforcement in 16.6 (November 2023)

Removal of old runne registration in 17.0 (May 2024)

Old process

One token per instance, per group and per project

Credential leak causes a lot of work

New process

Create a runner through the UI or the API

One token per runner


Supported executors: shell, docker, docker-windows, docker-ssh, ssh, parallels, virtualbox, docker+machine, docker-ssh+machine, kubernetes


Jobs are executed in the context of the runner

Docker / Kubernetes

Jobs are executed in a dedicated container / pod

Image cleanup

docuum is able to remove least recently used images


  1. Add runner to GitLab instance: Admin Area CI/CD Runners New instance runner

  2. Configure runner: Check “Run untagged jobs”

  3. Start runner (substitute token below)

     # Switch to directory for this topic
     cd ../160_runners
     # Deploy GitLab runner
     export CI_SERVER_URL=
     export RUNNER_EXECUTOR=docker
     docker compose --project-name gitlab \
         --file ../100_reverse_proxy/compose.yml \
         --file compose.yml \
         up -d