остановка конвейера Дженкинса параллельное построение репо - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть многоотраслевой конвейер Jenkins, использующий док-контейнеры.У меня проблема в том, что я не хочу, чтобы более чем одна ветка запускала сборку за раз.Потому что я использую Postgres DB в контейнере, и когда запускается более одной ветви, локальный порт 5432 занят сборкой ветви, которая запускается первой, а затем вторая ветка перестает работать.

Есть ли способ избежать этого в Jenkinsfile или любом другомкстати?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018
pipeline { 
options { lock resource: 'build-lock' } 
stages {...} 
}

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

Для получения дополнительной информации Блокируемые ресурсы

0 голосов
/ 08 декабря 2018

Я бы, возможно, занялся бы вашим postgres db, а не пытался бы решить это таким образом.Может ли ваша сборка выбрать случайный порт и увеличить вместо этого требуемые дБ на альтернативных портах?

Если вы хотите попробовать ограничить одновременные сборки ...

1) Вы можете ограничить агента этимРепо работает и предоставляет его только 1 исполнителю.Это может привести к тому, что сборки будут стоять в очереди, пока они ждут

2) Если вы хотите сделать это программно, вам нужно будет поставить проверку в конвейере, чтобы прервать / дождаться сборки, если она найдет текущие выполнения, которые соответствуют.Я не рекомендую этого, если вы работаете в песочнице, вам, скорее всего, нужно будет разрешить доступ к скрипту.Кроме того, кажется, что вы будете копаться под капотом, и это может вызвать проблемы с путями обновления, если интерфейс будет переработан ... но вы будете копаться в https://javadoc.jenkins -ci.org / hudson / model / Executor.html getCurrentExecutable () или что-то в этом роде https://github.com/cloudbees/jenkins-scripts/blob/master/get-build-information.groovy#L24

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...