Jenkins parameterized job that only queues one build

Представьте себе задание A, которое выполняется за 1 минуту, и задание B, которое выполняется за 5 минут.

Если мы настроим задание A на запуск задания B, то во время выполнения задания B задание A может выполниться 5 раз до завершения B. Однако Jenkins не добавляет 5 сборок в очередь задания B, что очень хорошо, потому что иначе быстрое задание A создавало бы постоянно растущую очередь сборок для бедного медленного задания B.

Однако теперь мы хотим, чтобы задание A запускало B как параметризованное задание, используя плагин параметризованных триггеров. Параметризованные задания делают очередь отставания, что означает, что задание A радостно создает огромную кучу сборок для задания B, которое не может за ним угнаться.

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

Однако в нашем случае нам бы хотелось, чтобы было именно так. Задание A собирает и упаковывает наше приложение, затем задание B развертывает его в среду, подобную производственной, и запускает более тяжелый набор интеграционных тестов. У нас также есть сборка C, которая развертывается в другой среде и проводит еще больше тестов, так что для нас это эскалационная схема.

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

Есть ли хороший способ добиться этого?

16
задан Juuso Ohtonen 29 January 2012 в 06:50
поделиться