2016-04-05 3 views
1

Вот моя текущая ситуация: У нас есть строитель со многими рабами и многими строителями. Каждый подчиненный может запускать только одну сборку за раз. У нас есть строители, которые срабатывают в ночное время или в режиме фиксации. У нас нет большого количества рабов, и сборка занимает несколько часов.Строитель-строитель в ожидании до предыдущего завершения

Вот что я пытаюсь достичь: Мы хотели бы, что, когда строитель уже запущен и запускается снова, она остается в ожидании, пока его предыдущий экземпляр не закончит хотя бы рабом для него. Это позволит другим строителям работать в то же время.

Я прочитал Buildbot running sequential builders after they're finished и это не соответствует моей проблеме.

Я прочитал о блокировках, но я не уверен, что это будет полезно для моей ситуации. http://docs.buildbot.net/current/manual/cfg-interlocks.html

Я отдаю себе отчет в mergeRequests аргумента и использовать его, но это относится только к в ожидании строит, а не механизм, который высвобождает сборки из очереди на бег, или даже раньше, если вновь запускается сборка запускается без в ожидании вообще.

Кто-нибудь знает, как этого достичь?

ответ

0

Вы на правильном пути. Вам нужен «MasterLock», который является глобальным (тогда как «SlaveLock» оценивается для одного подчиненного устройства).

my_lock = locks.MasterLock("some name", maxCount=1))

А потом на ваш строитель:

BuilderConfig(..., locks=[my_lock.access('exclusive')])

+0

Привет! Спасибо за совет. Я попробую это, но сейчас я очень занят. Я вернусь сюда, когда у меня есть время, чтобы проверить это ;-) – XonqNopp

+0

Привет, снова на эту тему :) Итак, я пробовал это, но подчиненный блокируется застройщиком в любом случае, разница в том, что он ждет с подчиненными заблокирован до завершения предыдущей сборки ... Любая идея о том, как предотвратить получение ведомого до блокировки? – XonqNopp

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