Дженкинс - Как мне запустить пакетную команду на Мастере в задании, которое выполняется на ведомом устройстве?

Я пытаюсь запустить простую пакетную команду Windows (скажем, копию) на Мастере внутри задания, которое настроено для запуска на конкретном ведомом устройстве.

Что я пытаюсь сделать с этим, так это скопировать журнал сборки, который сохраняется на мастере, на общий диск, доступный с мастера. Пожалуйста, порекомендуйте.


person user2705120    schedule 07.08.2015    source источник
comment
Почему бы вам просто не привязать работу к мастеру?   -  person carlspring    schedule 07.08.2015
comment
Работа создает определенный продукт, для которого требуется определенное программное обеспечение/приложения/фреймворки, которые у нас есть на ведомом устройстве, к которому оно привязано. Это ведомое устройство является выделенной машиной для создания этой работы.   -  person user2705120    schedule 07.08.2015
comment
Ну, а если это Linux/Unix, то просто вызовите команду поверх ssh, иначе можно установить демон SSH даже под Windows.   -  person carlspring    schedule 07.08.2015
comment
Все в Windows. Когда я делаю ECHO %BUILD_NUMBER%, я вижу правильный номер сборки. Когда я делаю ECHO %JENKINS_HOME%, я вижу абсолютный путь к Jenkins... Но когда я говорю, введите %JENKINS_HOME%\jobs\Test\builds\%BUILD_NUMBER%\changelog.xml, он говорит, что система не может найти путь .... Таким образом, задание НЕ могло получить доступ к файлу, который есть на мастере... Это моя проблема здесь..   -  person user2705120    schedule 07.08.2015


Ответы (2)


Вам нужно будет сделать файловую систему jenkins видимой на клиенте независимо от Jenkins. Поскольку у вас есть клиент Windows, вам, вероятно, придется настроить совместное использование с мастером Jenkins, используя samba или что-то в этом роде.

Что я делаю вместо этого: когда мне нужны ресурсы от мастера, я использую curl или wget для загрузки ресурсов клиентам. Вы можете использовать плагин FSTrigger для запуска сборки при изменении файла на мастере Jenkins. После запуска curl или wget ваш ресурс оказывается в каталоге %WORKSPACE%, и вы можете продолжить.

person Syd Polk    schedule 09.08.2015
comment
Спасибо за ваши предложения. Вот как я это сделал. Я настроил подчиненное задание для запуска на мастере, которое сделает копию, которая мне нужна. Это было самое простое решение, которое я мог придумать... - person user2705120; 24.08.2015

Я бы порекомендовал обрабатывать копирование файла журнала (и, возможно, другие задачи) как отдельную работу (назовем ее «SaveLog»). SaveLog должен быть привязан к запуску только на мастере. Затем вы должны настроить SaveLog так, чтобы он запускался после завершения вашего основного задания. Файл журнала уже доступен на главном сервере, даже если вы не сохраняете никаких артефактов.

Если вам нужны дополнительные файлы из подчиненного рабочего пространства, вы должны сохранить их как артефакты. SaveLog (на мастере) все еще может решить, делать ли что-нибудь полезное с этими артефактами.

person Stefan    schedule 03.12.2015