Как запустить несколько 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.
  1. Да, вы можете настроить несколько бегунов. Смотрите https://docs.gitlab.com/runner/ для получения дополнительной информации
  2. Обычно вы устанавливаете бегунов на другой ящик с вашим основным экземпляром gitlab. По крайней мере, это то, что я делаю. Omnibus GITLAB относится к основной системе, в которой ваши репозитории поддерживаются и доступны через веб-интерфейс. Бегуны - это изолированные процессы (рабочие), которые ждут, когда будут отправлены новые коммиты, а затем выполняют сборку.
  3. Хорошей практикой является установка нескольких бегунов, посвященных определенной технологии. Например, выделенный раннер для сборок 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 :

https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3688

https://gitlab.com/gitlab-org/gitlab-runner/-/issues/4407

Другие вопросы по тегам