У нас есть хозяин и два раба.
В Master есть задание, которое проверяет, есть ли новая версия на Nexus, и если да, загружает последнюю версию jar и обновляет последнюю версию (т.е. xxx-0.012.jar) в текстовом файле VERSION.TXT. (Доступ к нексусу возможен только от мастера).
Нам нужно запустить скачанный jar на slaves , поэтому нам нужно скопировать его из master.
У нас есть работа, которая вызывает несколько других работ:
1) CHECK_LATEST_JAR: задание, которое запускается на master и проверяет, есть ли новая версия jar на nexus, загружает его.
2) GET_JAR_TO_SLAVE: задание, которое выполняется на ведомых устройствах и должно копировать последний JAR-файл с мастера
3) RUN_JAR: задание, которое получает последнее имя jar из файла VERSION.TXT и запускает jar с таким именем.
В CHECK_LATEST_JAR, если на nexus найдена более новая версия, мы загружаем ее в рабочую область и архивируем артефакты (jar + текстовый файл с последней версией).
Теперь в GET_JAR_TO_SLAVE мы хотели использовать плагин «Копировать артефакты из другого задания» - но здесь нам нужно добавить условие для запуска этого шага, только если есть более новая версия, как если бы в CHECK_LATEST_JAR не было артефактов, это задание не выполняется ..
Есть ли способ сравнить файл, который находится на ведущем устройстве, с файлом, который находится на ведомом устройстве?
Попытка использовать условный шаг с Groovy сценарием - но не может понять, как сказать ему, чтобы получить доступ к файлу на master, если задание выполняется на slave.
Только что наткнулся на плагин FSTrigger, который, вероятно, можно использовать - но та же проблема здесь, как сказать ему, чтобы он следил за файлом VERSION.TXT на ведущем устройстве и если есть изменение для запуска задания на ведомом устройстве.
был бы благодарен за любые идеи, как мы можем достичь нашей цели.
спасибо