Из коробки может быть запущен только один экземпляр GitLab Runner. Это можно обойти с помощью Docker. Но зачем? :)
Один GitLab Runner может обслуживать неограниченное количество executor'ов.
docker run -d \
--restart always \
-v gitlab-runner-config:/etc/gitlab-runner \
-v gitlab-runner-home:/home/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
--name gitlab-runner \
gitlab/gitlab-runner:latestОтличия от описанного в документации способа в том, что явно указывается volume для домашнего
каталога раннера. Именно в нем содается подкаталог builds. Если volume не указывать, то он
будет создан автоматически с ничего не значащим именем.
docker exec -it gitlab-runner gitlab-runner registerПри установке GitLab Runner (см. выше) будут созданы два стандартных volume'а:
gitlab-runner-config- содержит конфигурационный файл GitLab Runner'а -config.tomlgitlab-runner-home- содержит подкаталогиbuildsиcacheдля всех shell-executor'ов
При первом же использовании docker-executor'а на проекте автоматически будут созданы два служебных volume'а для хранения кэша и рабочего каталога сборки (Build Directory).
Каждый volume создается путем однократного запуска контейнера на основе образа
gitlab/gitlab-runner-helper. Эти контейнеры остаются в остановленном состоянии.
Имена контейнеров: runner-{Id executor}-project-{Id проекта}-concurrent-0-cache-{хэш}.
Точки монтирования данных volume'ов внутри рабочих контейнеров, запускаемых в .gitlab-ci.yml
по директивам image и services:
{volume 1}:/builds{volume 2}:/cache
GitLab настоятельно рекомендует не использовать
/builds как место для хранения каких-либо артефактов между сборками.