2017-02-16 10 views
1

Я сконструировал проект с несколькими каналами в Дженкинсе. Этот проект запускает интеграционный тест во всех моих ветвях функций (git). Для каждого задания в проекте конвейера он создает экземпляр моего webapp (start tomcat и других зависимостей). Из-за проблем с привязкой к порту это приводит к множеству сломанных заданий.Как выполнить задания в многоканальном проекте последовательно, а не параллельно

Могу ли я сжимать сборки в проекте с многоканальным конвейером, чтобы задания для каждой ветки функций выполнялись последовательно, а не параллельно?

Или если есть более элегантное решение?


Edit: ситуации и проблема:

  • Я хочу иметь многоотраслевой проект трубопровода в Дженкинс (потому что у меня есть много ветвей функций в мерзавце)
  • рабочих мест, которые созданы из (для каждой ветви функций в git), параллельно выполняются
    • Опрос scm в полночь (фиксация по ветвям x является новой, поэтому соответствующие задания начинаются с полночь)
  • каждая работа началась один экземпляр моего веб-приложение (и других зависимостей), которые связываются с некоторыми портами

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

Я не хочу настраивать привязку нового порта для каждой ветки функции в моем репозитории git. Мне нужно решение для дросселирования сборки в многоблочном конвейере, так что только на «функции» можно запускать одновременно.

ответ

0

Самое элегантное решение состоит в том, чтобы ваши тесты интеграции могли работать одновременно.

Одним из решений было бы использовать встроенный tomcat с динамическим портом. Таким образом, каждый экземпляр задания будет работать в tomcat с разными портами. Это также лучшее решение, чем использование внешнего сервера.

Если это слишком много работы, вы всегда можете использовать следующий код в трубопроводе «jenkinsfile»:

node { 
    // This limits build concurrency to 1 per branch 
    properties([disableConcurrentBuilds()]) 

    // continue your pipeline ... 

} 

Решение приходит от this SO answer.

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

  • Нет связанных вопросов^_^