The scope of runners
Runners are available based on who you want to have access:
- Shared runners are available to all groups and projects in a GitLab instance.
- Group runners are available to all projects and subgroups in a group.
- Specific runners are associated with specific projects. Typically, specific runners are used for one project at a time.
Shared runners
Shared runners are available to every project in a GitLab instance.
Use shared runners when you have multiple jobs with similar requirements. Rather than having multiple runners idling for many projects, you can have a few runners that handle multiple projects.
If you are using a self-managed instance of GitLab:
- Your administrator can install and register shared runners by going to your project’s Settings > CI/CD, expanding the Runners section, and clicking Show runner installation instructions. These instructions are also available in the documentation.
- The administrator can also configure a maximum number of shared runner CI/CD minutes for each group.
If you are using GitLab.com:
- You can select from a list of shared runners that GitLab maintains.
- The shared runners consume the CI/CD minutes included with your account.
Enable shared runners for a project
On GitLab.com, shared runners are enabled in all projects by default.
On self-managed instances of GitLab, an administrator can enable them for all new projects.
For existing projects, an administrator must install and register them.
To enable shared runners for a project:
- Go to the project’s Settings > CI/CD and expand the Runners section.
- Select Enable shared runners for this project.
Enable shared runners for a group
To enable shared runners for a group:
- Go to the group’s Settings > CI/CD and expand the Runners section.
- Select Enable shared runners for this group.
Disable shared runners for a project
You can disable shared runners for individual projects or for groups. You must have the Owner role for the project or group.
To disable shared runners for a project:
- Go to the project’s Settings > CI/CD and expand the Runners section.
- In the Shared runners area, select Enable shared runners for this project so the toggle is grayed-out.
Shared runners are automatically disabled for a project:
- If the shared runners setting for the parent group is disabled, and
- If overriding this setting is not permitted at the project level.
Disable shared runners for a group
To disable shared runners for a group:
- Go to the group’s Settings > CI/CD and expand the Runners section.
- In the Shared runners area, turn off the Enable shared runners for this group toggle.
- Optionally, to allow shared runners to be enabled for individual projects or subgroups, click Allow projects and subgroups to override the group setting.
How shared runners pick jobs
Shared runners process jobs by using a fair usage queue. This queue prevents projects from creating hundreds of jobs and using all available shared runner resources.
The fair usage queue algorithm assigns jobs based on the projects that have the fewest number of jobs already running on shared runners.
Example 1
If these jobs are in the queue:
- Job 1 for Project 1
- Job 2 for Project 1
- Job 3 for Project 1
- Job 4 for Project 2
- Job 5 for Project 2
- Job 6 for Project 3
The fair usage algorithm assigns jobs in this order:
- Job 1 is first, because it has the lowest job number from projects with no running jobs (that is, all projects).
- Job 4 is next, because 4 is now the lowest job number from projects with no running jobs (Project 1 has a job running).
- Job 6 is next, because 6 is now the lowest job number from projects with no running jobs (Projects 1 and 2 have jobs running).
- Job 2 is next, because, of projects with the lowest number of jobs running (each has 1), it is the lowest job number.
- Job 5 is next, because Project 1 now has 2 jobs running and Job 5 is the lowest remaining job number between Projects 2 and 3.
- Finally is Job 3… because it’s the only job left.
Example 2
If these jobs are in the queue:
- Job 1 for Project 1
- Job 2 for Project 1
- Job 3 for Project 1
- Job 4 for Project 2
- Job 5 for Project 2
- Job 6 for Project 3
The fair usage algorithm assigns jobs in this order:
- Job 1 is chosen first, because it has the lowest job number from projects with no running jobs (that is, all projects).
- We finish Job 1.
- Job 2 is next, because, having finished Job 1, all projects have 0 jobs running again, and 2 is the lowest available job number.
- Job 4 is next, because with Project 1 running a Job, 4 is the lowest number from projects running no jobs (Projects 2 and 3).
- We finish Job 4.
- Job 5 is next, because having finished Job 4, Project 2 has no jobs running again.
- Job 6 is next, because Project 3 is the only project left with no running jobs.
- Lastly we choose Job 3… because, again, it’s the only job left.
Group runners
Use Group runners when you want all projects in a group to have access to a set of runners.
Group runners process jobs by using a first in, first out (Create a group runner
You can create a group runner for your self-managed GitLab instance or for GitLab.com. You must have the Owner role for the group.
To create a group runner:
- Install GitLab Runner.
- Go to the group you want to make the runner work for.
- On the left sidebar, select CI/CD > Runners.
- Note the URL and token.
- Register the runner.
View and manage group runners
You can view and manage all runners for a group, its subgroups, and projects.
You can do this for your self-managed GitLab instance or for GitLab.com.
You must have the Owner role for the group.
The following fields are displayed.
From this page, you can edit, pause, and remove runners from the group, its subgroups, and projects.
You can pause or remove a group runner for your self-managed GitLab instance or for GitLab.com.
You must have the Owner role for the group.
Use Specific runners when you want to use runners for specific projects. For example,
when you have:
You can set up a specific runner to be used by multiple projects. Specific runners
must be enabled for each project explicitly.
Specific runners process jobs by using a first in, first out (
Attribute
Description
Type
Displays the runner type: group
or specific
, and the optional state paused
Runner token
Token used to identify the runner, and that the runner uses to communicate with the GitLab instance
Description
Description given to the runner when it was created
Version
GitLab Runner version
IP address
IP address of the host on which the runner is registered
Projects
The count of projects to which the runner is assigned
Jobs
Total of jobs run by the runner
Tags
Tags associated with the runner
Last contact
Timestamp indicating when the GitLab instance last contacted the runner
Pause or remove a group runner
Specific runners
Create a specific runner
You can create a specific runner for your self-managed GitLab instance or for GitLab.com. You must have the Owner role for the project.
To create a specific runner:
- Install runner.
- Go to the project’s Settings > CI/CD and expand the Runners section.
- Note the URL and token.
- Register the runner.
Enable a specific runner for a specific project
A specific runner is available in the project it was created for. An administrator can enable a specific runner to apply to additional projects.
- You must have the Owner role for the project.
- The specific runner must not be locked.
To enable or disable a specific runner for a project:
- Go to the project’s Settings > CI/CD and expand the Runners section.
- Click Enable for this project or Disable for this project.
You can edit a specific runner from any of the projects it’s enabled for. The modifications, which include unlocking, editing tags and the description, affect all projects that use the runner.
Prevent a specific runner from being enabled for other projects
You can configure a specific runner so it is “locked” and cannot be enabled for other projects. This setting can be enabled when you first register a runner, but can also be changed later.
To lock or unlock a specific runner:
- Go to the project’s Settings > CI/CD and expand the Runners section.
- Find the specific runner you want to lock or unlock. Make sure it’s enabled. You cannot lock shared or group runners.
- Click the pencil button.
- Check the Lock to current projects option.
- Click Save changes.