Разрешить запуск одного и того же задания Jenkins только после определенного шага в конвейере

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

Пример: Мой конвейер как следующие этапы: A -> B -> C -> D -> E

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

Спасибо

Обновлять:

Этот конвейер запускается триггером Git, поэтому я хочу убедиться, что 2 push в репо будут обработаны.

Ex:

Разработчик. Отправляет коммит и запускает конвейер.

Разработчик B нажимает на фиксацию, но конвейер от DevA все еще работает, поэтому я хочу, чтобы это подождало

Когда DevA Pipeline достигает стадии C, я хочу разрешить запуск Pipeline от DevB


person jpereira    schedule 27.05.2016    source источник
comment
Почему ты хочешь это сделать? Может быть, будет проще, если вы выполните шаги A и B, а затем выполните этапы C D и E в одном конвейере?   -  person krynio    schedule 27.05.2016
comment
Собираюсь обновить комментарий, чтобы сделать его более понятным   -  person jpereira    schedule 27.05.2016
comment
Почему вы хотите выполнить задание дважды?   -  person krynio    schedule 27.05.2016
comment
Я не уверен, как это сделать с помощью плагина pipeline. Но вы можете создать второе задание с шагами A и B, запустить его из конвейера и настроить второе задание, чтобы не разрешать запуск параллельных сборок. Когда вы это делаете, вы добиваетесь своей цели.   -  person krynio    schedule 27.05.2016


Ответы (3)


Вы можете использовать шаг lock (входит в состав lockable-resources-plugin.

Ваш сценарий будет выглядеть так:

lock('my-resource') {
  stage('A') {...}
  stage('B') {...}
  stage('C') {...}
}
stage('D')
stage('E')
person amuniz    schedule 31.05.2016

Вы можете использовать плагин Throttle Concurrent Builds, https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin

Поместите A, B и C в одну группу и разрешите только одно задание сборки для этой группы

person arved    schedule 27.05.2016
comment
Попытайся :). Другой вариант - wiki.jenkins-ci.org/display/JENKINS / Lockable + Resources + Plugin Но я сам не пробовал - person arved; 27.05.2016

Я думаю, что наиболее «официальный» способ - использовать плагин блокируемых ресурсов. (реализовано как часть https://issues.jenkins-ci.org/browse/JENKINS-30269)

person Krzysztof Krasoń    schedule 28.05.2016