Копировать артефакты из другого задания, только если есть новая версия файла - PullRequest
0 голосов
/ 08 мая 2018

У нас есть хозяин и два раба. В 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 на ведущем устройстве и если есть изменение для запуска задания на ведомом устройстве.

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

1 Ответ

0 голосов
/ 10 мая 2018

Мы нашли плагин Копировать данные в рабочую область и использовали его для копирования файла, содержащего последнюю версию, из папки на Master в рабочую область задания, выполняемого на одном из ведомых. После этого мы сравниваем содержимое файлов, используя плагин Conditional BuildStep сравнение строк с макросом Token, а если содержимое файлов отличается, мы копируем артефакты задания, в которое загружается jar. files content comparison

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