2016-04-18 2 views
6

Если есть несколько доступных бегунов для проекта, как gitlab ci определяет, какой бегун использовать?Как gitlab решает, какой бегун использовать для работы

У меня есть установка olimibus gitlab 8.6.6-ee с двумя настройками. Бегуны идентичны (изображения докеры, конфиг и т. Д.), За исключением того, что они работают на разных компьютерах.

Если они оба бездействуют, и задание приходит в том, что любой из них может работать, какой из них будет запущен?

+0

Почему бы не создать тест проект и запустить несколько сборок? Я предполагаю, что он выбирает первого доступного бегуна, и если несколько бегунов простаивают, он выбирает случайным образом. – BrokenBinary

ответ

2

Чтобы добавить к ответу Рубинума, «первый» бегун будет любым бегуном, который сначала проверяет, что соответствует всем критериям. Например, метки могут ограничить, какие бегуны выполняют определенные задания.

Бегуны запрашивают сервер gitlab каждые X секунд, чтобы проверить, есть ли сборки. если есть сборки в очередь и несколько соответствуют критериям, то первым спросить победит

Update, чтобы ответить на комментарии:

Runners связь через CI API http://docs.gitlab.com/ce/ci/api/builds.html, чтобы получить статус сборки. Это в конечном итоге означает, что он станет более или менее случайным выбором бегуна на основе того, когда он закончил последнее задание, и x сумма ms ждет подтверждения.

Чтобы полностью ответить на вопрос:

Заслуга BM5k после копаться в коде и находя, что x = 3 секунд на основе this и this. Также установлено, что:

, какая машина грузчиком + машина бегун будет использовать один раз был выбран, что бегун) показывает, что machine selection более или менее (эффективно) случайным образом, а также

+0

Интересно. Вы знаете, где это происходит в коде? – BM5k

+0

И, чтобы убедиться, что я правильно вас понимаю, вы говорите, что сервер действительно не «решает», какой бегун использовать, он просто произвольно передает задания следующему бегуну, который проводит опросы (при условии, что бегун соответствует всем требованиям работы). – BM5k

+0

Отредактированный ответ, чтобы соответствовать предыдущим комментариям. Я не нашел, где параметр 'x' установлен в коде, но это проект, в котором он настроен. Https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/tree/master , –

1

Gitlab CI назначает рабочие места тем бегунам, которые доступны. Если бегун не доступен из-за того, что он занят, Gitlab CI назначает задание другим участникам, которые доступны. В вашем случае он всегда назначает задания первому бегущему (кто бы он ни был).

Если вы хотите задать выполнение на определенном бегуна/машиной, то посмотрите на мой пост here.

На мой взгляд, его хорошо, чтобы не знать, какой бегун будет запускать сборку, если вы используете докер потому что то в пользу арьергации бегуна/докера.

+0

но какой бегун «первый»? – BM5k

Смежные вопросы