Как запустить несколько gitlab-ci-runners?
Ну, очень простой вопрос, но я просто не нашел (хорошую) документацию; вот так:
- Могу ли я установить / запустить несколько бегунов на одном сервере?
- Что значит бегун? Это (омнибус) установка или процессы, с которых я начинаю, например
/opt/gitlab-runner/bin/runner
? - относительно
/opt/gitlab-runner/bin/runner
: имеет ли смысл запускать несколько таких процессов? (Они не отображаются отдельно на вкладке "Бегуны" в веб-представлении gitlab-ci)
Благодарю.
6 ответов
Для всех, кто пытается запустить несколько gitlab-runners в Windows:
- Загрузите / скопируйте gitlabrunner.exe в два разных места.
- Зарегистрируйте их в их отдельных папках.
- Установите их и укажите для флага -n разные имена, например:
gitlab-runner-windows-amd64.exe install -n dockerbuilder
- Запустите их с одинаковыми именами с флагом -n.
- Да, вы можете настроить несколько бегунов. Смотрите https://docs.gitlab.com/runner/ для получения дополнительной информации
- Обычно вы устанавливаете бегунов на другой ящик с вашим основным экземпляром gitlab. По крайней мере, это то, что я делаю. Omnibus GITLAB относится к основной системе, в которой ваши репозитории поддерживаются и доступны через веб-интерфейс. Бегуны - это изолированные процессы (рабочие), которые ждут, когда будут отправлены новые коммиты, а затем выполняют сборку.
- Хорошей практикой является установка нескольких бегунов, посвященных определенной технологии. Например, выделенный раннер для сборок JAVA, NodeJS, Python, Ruby или PHP. Если в пользовательском интерфейсе не отображаются бегуны, они не будут правильно зарегистрированы в вашем экземпляре. Смотрите документацию в #1
Вы можете запускать несколько экземпляров, но начиная с gitlab 12.2 с важной оговоркой:https://docs.gitlab.com/runner/faq/README.html
Почему я не могу запустить более одного экземпляра Runner?
Вы можете, но не используете один и тот же файл config.toml.
Запуск нескольких экземпляров Runner с использованием одного и того же файла конфигурации может вызвать непредвиденное и трудное для отладки поведение. В GitLab Runner 12.2 только один экземпляр Runner может одновременно использовать определенный файл config.toml.
Во-первых, поймите, почему вам нужно несколько бегунов. Если вы просто хотите, чтобы несколько заданий выполнялись параллельно, встроенные исполнители будут учитыватьconcurrent
конфигурацию и позволяют выполнять несколько заданий параллельно. Как правило, вам нужен только один исполняющий процесс и один файл конфигурации для каждого хоста . Этот процесс может обрабатывать несколько конфигураций бегуна одновременно.
Если вам нужно несколько бегунов с разными конфигурациями (например, иметь рядом друг с другом исполнителя оболочки и исполнителя Docker), вы можете добавить в файл конфигурации несколько разделов исполнителя; просто добавь еще один[[runner]]
раздел в !. Если вы позвоните вregister
команду несколько раз, она сделает это за вас . Каждый бегун будет отображаться как отдельный зарегистрированный бегун в пользовательском интерфейсе GitLab, но вам понадобится только одна конфигурация и одинgitlab-runner
процесс согласованного управления несколькими зарегистрированными бегунами.
Например, конфигурация с двумя отдельно настроенными исполнителями, которые вы запуститеgitlab-runner register
дважды с разными аргументами для другой итоговой конфигурации.
Начните с файла конфигурации, в котором определены только глобальные элементы или другие неработающие разделы. Что-то вроде этого:
concurrent = 10
check_interval = 0
# ... etc...
[session_server]
session_timeout = 1800
Затем зарегистрируйте нужных вам бегунов с помощью ключей конфигурации, переданных в командной строке (или вы можете отредактировать конфигурацию вconfig.toml
после регистрации каждого участника):
# register the first runner
gitlab-runner register \
--non-interactive \
--url "https://${HOSTNAME}/" \
--registration-token "${REGISTRATION_TOKEN}" \
--executor "docker" \
--tag-list "docker" \
--run-untagged="true" \
--config="/etc/gitlab-runner/config.toml"
# ... etc
# register the second runner
gitlab-runner register \
--non-interactive \
--url "https://${HOSTNAME}/" \
--registration-token "${REGISTRATION_TOKEN}" \
--executor "shell" \
--tag-list "shell" \
--limit="2" \
--config="/etc/gitlab-runner/config.toml"
# ... etc
Примечательно--tag-list
необходимо предоставить при регистрации. После регистрации это можно будет редактировать только в пользовательском интерфейсе GitLab или через API.
После запуска команд регистрации это должно привести к редактированию вашего config.toml с помощью двух[[runners]]
разделы. Это будет выглядеть примерно так:
concurrent = 10 # global/total concurrency
check_interval = 0
# ... etc...
[session_server]
session_timeout = 1800
# Specify a docker executor
[[runners]]
(...) # specific runner config, token, etc.
executor = "docker"
[runners.docker]
(...) # docker executor configuration...
# specify a shell executor
[[runners]]
(...) # specific runner config, token, etc.
executor = "shell"
limit = 2 # concurrency limit for THIS executor
Когда ты бежишьgitlab-runner start
вы должны увидеть двух онлайн-бегунов в пользовательском интерфейсе GitLab.
У меня была установка, в которой мне нужен был ровно один бегун для двух разных работ. Когда вы определяете параллелизм, он устанавливает параллелизм для всех бегунов на данной машине.
Если у вас есть два бегуна (с разными метками или настройками) и concurrent=2, это означает, что оба могут запускать 2 задания параллельно. Если concurrent = 1, только один исполнитель будет запускать одно задание за раз.
Найдено решение здесь: https://forum.gitlab.com/t/run-runners-in-parallel-on-the-same-server/9213/2concurrent=2 и для каждого бегуна добавьте limit=1, чтобы иметь максимум 2 заданий на сервере и ограничьте каждого участника только одним заданием.
Поскольку ссылка, предоставленная Mateuszl, больше не существует, и я не могу комментировать, поскольку я относительно новый пользователь, я делюсь новой ссылкой здесь:
https://docs.gitlab.com/runner/faq/#why-cant-i-run-more-than-one-instance-of-gitlab-runner
Вы можете запускать несколько программ-исполнителей, но помните об этом: в GitLab Runner 12.2 только один экземпляр GitLab Runner может использовать определенный файл config.toml одновременно из-за проблем с параллелизмом, а связанная проблема была закрыта с принятым решением. решение как запуск нескольких бегунов, указывающих на разные файлы конфигурации toml :