Registering runners | GitLab (2025)

  • Requirements
  • Register with a runner authentication token
  • Register with a runner registration token (deprecated)
    • Legacy-compatible registration process
  • Register with a configuration template
  • Register a runner for GitLab Community Edition integration tests
  • Registering runners with Docker
  • Troubleshooting
    • Check registration token error
    • 410 Gone - runner registration disallowed error

Tier: Free, Premium, UltimateOffering: GitLab.com, Self-managed

History

  • Introduced in GitLab Runner 15.0, a change to the registration request format prevents the GitLab Runner from communicating with earlier versions of GitLab. You must use a GitLab Runner version that is appropriate for the GitLab version, or upgrade the GitLab application.

Runner registration is the process that links the runner with one or more GitLab instances. You must register the runner so that it can pick up jobs from the GitLab instance.

Requirements

Before you register a runner:

  • Install GitLab Runner on a server separate to where GitLabis installed.
  • For runner registration with Docker, install GitLab Runner in a Docker container.

Register with a runner authentication token

History

  • Introduced in GitLab 15.10.

Prerequisites:

  • Obtain a runner authentication token. You can either:
    • Create an instance,group, orproject runner.
    • Locate the runner authentication token in the config.toml file. Runner authentication tokens have the prefix, glrt-.

After you register the runner, the configuration is saved to the config.toml.

To register the runner with a runner authentication token:

  1. Run the register command:

    Linux

    sudo gitlab-runner register

    If you are behind a proxy, add an environment variable and then run theregistration command:

    export HTTP_PROXY=http://yourproxyurl:3128export HTTPS_PROXY=http://yourproxyurl:3128sudo -E gitlab-runner register

    macOS

    gitlab-runner register

    Windows

    .\gitlab-runner.exe register

    FreeBSD

    sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register

    Docker

    To register with a container, you can either:

  2. Enter your GitLab URL:
    • For runners on GitLab self-managed, use the URL for your GitLab instance. For example,if your project is hosted on gitlab.example.com/yourname/yourproject, your GitLab instance URL is https://gitlab.example.com.
    • For runners on GitLab.com, the GitLab instance URL is https://gitlab.com.
  3. Enter the runner authentication token.
  4. Enter a description for the runner.
  5. Enter the job tags, separated by commas.
  6. Enter an optional maintenance note for the runner.
  7. Enter the type of executor.
  • To register multiple runners on the same host machine, each with a different configuration,repeat the register command.
  • To register the same configuration on multiple host machines, use the same runner authentication tokenfor each runner registration. For more information, see Reusing a runner configuration.

You can also use the non-interactive mode to use additional arguments to register the runner:

Linux

sudo gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ --token "$RUNNER_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner"

macOS

gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ --token "$RUNNER_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner"

Windows

.\gitlab-runner.exe register \ --non-interactive \ --url "https://gitlab.com/" \ --token "$RUNNER_TOKEN" \ --executor "docker-windows" \ --docker-image mcr.microsoft.com/windows/servercore:1809_amd64 \ --description "docker-runner"

FreeBSD

sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register --non-interactive \ --url "https://gitlab.com/" \ --token "$RUNNER_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner"

Docker

docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ --token "$RUNNER_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner"

Register with a runner registration token (deprecated)

The ability to pass a runner registration token, and support for certain configuration arguments wasdeprecated in GitLab 15.6 and will be removedin GitLab 18.0. Runner authentication tokens should be used instead. For more information, seeMigrating to the new runner registration workflow.

Prerequisites:

  • Runner registration tokens must be enabled in the Admin Area.
  • Obtain a runner registration tokenat the desired instance,group, orproject.

After you register the runner, the configuration is saved to the config.toml.

To register the runner with a runner registration token:

  1. Run the register command:

    Linux

    sudo gitlab-runner register

    If you are behind a proxy, add an environment variable and then run theregistration command:

    export HTTP_PROXY=http://yourproxyurl:3128export HTTPS_PROXY=http://yourproxyurl:3128sudo -E gitlab-runner register

    macOS

    gitlab-runner register

    Windows

    .\gitlab-runner.exe register

    FreeBSD

    sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register

    Docker

    To launch a short-lived gitlab-runner container to register the containeryou created during installation:

    • For local system volume mounts:

      docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

      If you used a configuration volume other than /srv/gitlab-runner/configduring installation, update the command with the correct volume.

    • For Docker volume mounts:

      docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register
  2. Enter your GitLab URL:
    • For GitLab self-managed runners, use the URL for your GitLab instance. For example,if your project is hosted on gitlab.example.com/yourname/yourproject, your GitLab instance URL is https://gitlab.example.com.
    • For GitLab.com, the GitLab instance URL is https://gitlab.com.
  3. Enter the token you obtained to register the runner.
  4. Enter a description for the runner.
  5. Enter the job tags, separated by commas.
  6. Enter an optional maintenance note for the runner.
  7. Enter the type of executor.

To register multiple runners on the same host machine, each with a different configuration,repeat the register command.

You can also use the non-interactive mode to use additional arguments to register the runner:

Linux

sudo gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ --registration-token "$PROJECT_REGISTRATION_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner" \ --maintenance-note "Free-form maintainer notes about this runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"

macOS

gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ --registration-token "$PROJECT_REGISTRATION_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner" \ --maintenance-note "Free-form maintainer notes about this runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"

Windows

.\gitlab-runner.exe register \ --non-interactive \ --url "https://gitlab.com/" \ --registration-token "$PROJECT_REGISTRATION_TOKEN" \ --executor "docker-windows" \ --docker-image mcr.microsoft.com/windows/servercore:1809_amd64 \ --description "docker-runner" \ --maintenance-note "Free-form maintainer notes about this runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"

FreeBSD

sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register --non-interactive \ --url "https://gitlab.com/" \ --registration-token "$PROJECT_REGISTRATION_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner" \ --maintenance-note "Free-form maintainer notes about this runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"

Docker

docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \ --non-interactive \ --url "https://gitlab.com/" \ --registration-token "$PROJECT_REGISTRATION_TOKEN" \ --executor "docker" \ --docker-image alpine:latest \ --description "docker-runner" \ --maintenance-note "Free-form maintainer notes about this runner" \ --tag-list "docker,aws" \ --run-untagged="true" \ --locked="false" \ --access-level="not_protected"
  • --access-level creates a protected runner.
    • For a protected runner, use the --access-level="ref_protected" parameter.
    • For an unprotected runner, use --access-level="not_protected" or leave the value undefined.
  • --maintenance-note allows adding information you might find helpful for runner maintenance. The maximum length is 255 characters.

Legacy-compatible registration process

History

  • Introduced in GitLab 16.2.

Runner registration tokens and several runner configuration arguments were deprecatedin GitLab 15.6 and will be removed in GitLab 18.0. To ensure minimal disruption to your automation workflow, the legacy-compatible registration process triggersif a runner authentication token is specified in the legacy parameter --registration-token.

The legacy-compatible registration process ignores the following command-line parameters.These parameters can only be configured when a runner is created in the UI or with the API.

  • --locked
  • --access-level
  • --run-untagged
  • --maximum-timeout
  • --paused
  • --tag-list
  • --maintenance-note

Register with a configuration template

You can use a configuration template to register a runner with settings that are not supported by the register command.

Prerequisites:

  • The volume for the location of the template file must be mounted on the GitLab Runner container.
  • A runner authentication or registration token:
    • Obtain a runner authentication token (recommended). You can either:
      • Create an instance,group, orproject runner.
      • Locate the runner authentication token in the config.toml file. Runner authentication tokens have the prefix, glrt-.
    • Obtain a runner registration token (deprecated) for an instance,group, orproject runner.

The configuration template can be used for automated environments that do not support some argumentsin the register command due to:

  • Size limits on environment variables based on the environment.
  • Command-line options that are not available for executor volumes for Kubernetes.

The configuration template supports only a single [[runners]]section and does not support global options.

To register a runner:

  1. Create a configuration template file with the .toml format and add your specifications. For example:

    [[runners]] [runners.kubernetes] [runners.kubernetes.volumes] [[runners.kubernetes.volumes.empty_dir]] name = "empty_dir" mount_path = "/path/to/empty_dir" medium = "Memory"
  2. Add the path to the file. You can use either:

    • The non-interactive mode in the command line:

      $ sudo gitlab-runner register \ --template-config /tmp/test-config.template.toml \ --non-interactive \ --url "https://gitlab.com" \ --token <TOKEN> \ "# --registration-token if using the deprecated runner registration token" --name test-runner \ --executor kubernetes --host = "http://localhost:9876/"
    • The environment variable in the .gitlab.yaml file:

      variables: TEMPLATE_CONFIG_FILE = <file_path>

      If you update the environment variable, you do not need toadd the file path in the register command each time you register.

After you register the runner, the settings in the configuration templateare merged with the [[runners]] entry created in the config.toml:

concurrent = 1check_interval = 0[session_server] session_timeout = 1800[[runners]] name = "test-runner" url = "https://gitlab.com" token = "glrt-<TOKEN>" executor = "kubernetes" [runners.kubernetes] host = "http://localhost:9876/" bearer_token_overwrite_allowed = false image = "" namespace = "" namespace_overwrite_allowed = "" privileged = false service_account_overwrite_allowed = "" pod_labels_overwrite_allowed = "" pod_annotations_overwrite_allowed = "" [runners.kubernetes.volumes] [[runners.kubernetes.volumes.empty_dir]] name = "empty_dir" mount_path = "/path/to/empty_dir" medium = "Memory"

Template settings are merged only for options that are:

  • Empty strings
  • Null or non-existent entries
  • Zeroes

Command-line arguments or environment variables take precedence oversettings in the configuration template. For example, if the templatespecifies a docker executor, but the command line specifies shell,the configured executor is shell.

Register a runner for GitLab Community Edition integration tests

To test GitLab Community Edition integrations, use a configuration template to register a runnerwith a confined Docker executor.

  1. Create a project runner.
  2. Create a template with the [[runners.docker.services]] section:

    $ cat > /tmp/test-config.template.toml << EOF[[runners]][runners.docker][[runners.docker.services]]name = "mysql:latest"[[runners.docker.services]]name = "redis:latest"EOF
  3. Register the runner:

    Linux

    sudo gitlab-runner register \ --non-interactive \ --url "https://gitlab.com" \ --token "$RUNNER_AUTHENTICATION_TOKEN" \ --template-config /tmp/test-config.template.toml \ --description "gitlab-ce-ruby-2.7" \ --executor "docker" \ --docker-image ruby:2.7

    macOS

    gitlab-runner register \ --non-interactive \ --url "https://gitlab.com" \ --token "$RUNNER_AUTHENTICATION_TOKEN" \ --template-config /tmp/test-config.template.toml \ --description "gitlab-ce-ruby-2.7" \ --executor "docker" \ --docker-image ruby:2.7

    Windows

    .\gitlab-runner.exe register \ --non-interactive \ --url "https://gitlab.com" \ --token "$RUNNER_AUTHENTICATION_TOKEN" \ --template-config /tmp/test-config.template.toml \ --description "gitlab-ce-ruby-2.7" \ --executor "docker" \ --docker-image ruby:2.7

    FreeBSD

    sudo -u gitlab-runner -H /usr/local/bin/gitlab-runner register --non-interactive \ --url "https://gitlab.com" \ --token "$RUNNER_AUTHENTICATION_TOKEN" \ --template-config /tmp/test-config.template.toml \ --description "gitlab-ce-ruby-2.7" \ --executor "docker" \ --docker-image ruby:2.7

    Docker

    docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \ --non-interactive \ --url "https://gitlab.com" \ --token "$RUNNER_AUTHENTICATION_TOKEN" \ --template-config /tmp/test-config.template.toml \ --description "gitlab-ce-ruby-2.7" \ --executor "docker" \ --docker-image ruby:2.7

For more configuration options, see Advanced configuration.

Registering runners with Docker

After you register the runner with a Docker container:

  • The configuration is written to your configuration volume. For example, /srv/gitlab-runner/config.
  • The container uses the configuration volume to load the runner.

If gitlab-runner restart runs in a Docker container, GitLab Runner starts a new process instead of restarting the existing process.To apply configuration changes, restart the Docker container instead.

Troubleshooting

Check registration token error

The check registration token error message displays when the GitLab instance does not recognizethe runner registration token entered during registration. This issue can occur when either:

  • The instance, group, or project runner registration token was changed in GitLab.
  • An incorrect runner registration token was entered.

When this error occurs, you can ask a GitLab administrator to:

  • Verify that the runner registration token is valid.
  • Confirm that runner registration in the project or group is permitted.

410 Gone - runner registration disallowed error

The 410 Gone - runner registration disallowed error message displays when runner registration throughregistration tokens has been disabled.

When this error occurs, you can ask a GitLab administrator to:

  • Verify that the runner registration token is valid.
  • Confirm that runner registration in the instance is permitted.
  • In the case of a group or project runner registration token, verify that runner registration in the respective groupand/or project is allowed.
Registering runners | GitLab (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Melvina Ondricka

Last Updated:

Views: 5917

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Melvina Ondricka

Birthday: 2000-12-23

Address: Suite 382 139 Shaniqua Locks, Paulaborough, UT 90498

Phone: +636383657021

Job: Dynamic Government Specialist

Hobby: Kite flying, Watching movies, Knitting, Model building, Reading, Wood carving, Paintball

Introduction: My name is Melvina Ondricka, I am a helpful, fancy, friendly, innocent, outstanding, courageous, thoughtful person who loves writing and wants to share my knowledge and understanding with you.