У нас есть проект на C ++, который контролируется в GIT.Мы используем Jenkins в качестве нашего CI, и поскольку у нас относительно большое количество ветвей в нашей системе, мы сталкиваемся с некоторыми проблемами во время сборки.Поскольку некоторые ветви содержат изменения в интерфейсе базового класса, весь проект перестраивается при переключении с одной ветви на другую.Обычно разработчику не нужно часто переключаться - но два разработчика могут работать в двух разных ветках с разными интерфейсами - и это усложняет жизнь для сборки Jenkins.
Насколько я понимаю, есть двапараметры для настройки рабочих пространств: общее рабочее пространство, заданное для всех филиалов, или различное рабочее пространство для каждой ветви.В то время как последний вариант слишком дорогой в дисковом пространстве и требует повторного наклона для каждой ветви, первый вариант заставляет перестраивать Jenkins при каждом нажатии.
Я бы хотел третий вариант: все ветви используют один и тот же набор рабочих пространств.но с расстановкой приоритетов: если в разветвленной ветке использовалось определенное рабочее пространство в ближайшем прошлом, то мы бы хотели, чтобы оно использовалось снова (для сокращения времени сборки) - если нет рабочего пространства, которое ветвь использовала последним, CIиспользуйте рабочее пространство, которое использовалось меньше всего.Таким образом, мы бы не взорвали использование диска и получили бы более приличную производительность.
Вопрос в том, существуют ли в Jenkins инструменты / плагины, которые могут позволить использовать вышеупомянутую логику использования рабочих пространств?Можно ли разработать такую логику в Jenkins с помощью плагина или скрипта?