У меня есть два экземпляра jenkins. Я хочу, чтобы задание в 1-м экземпляре запускало задание во 2-м экземпляре, дождалось его завершения и выполняло некоторые действия (с использованием артефактов, созданных job @ 2nd)
Я придумал это решение - используя команды Jenkins CLI через SSH
ssh -p 2222 second-jenkins build second-job -s -v <further options>
Но этот сеанс отключается через 10 минут с сообщением:
Получено отключение от 192.168.147.102: 2: Время ожидания пользователя истекло. подождите, пока он не закончится, и выполните некоторые действия (используя артефакты, созданные job @ 2nd). Я придумал это ...
У меня есть два экземпляра jenkins. Я хочу, чтобы задание в 1-м экземпляре запускало задание во 2-м экземпляре, подождало его завершения и выполнило некоторые действия (с использованием артефактов, созданных заданием @ 2nd)
Я придумал это решение - используя команды Jenkins CLI через SSH
ssh -p 2222 second-jenkins build second-job -s -v <further options>
Но этот сеанс отключается через 10 минут с сообщением:
Получено отключение от 192.168.147.102: 2: Время ожидания пользователя истекло. подождите, пока он не закончится, и выполните некоторые действия (используя артефакты, созданные job @ 2nd). Я придумал это ...
У меня есть два экземпляра jenkins. Я хочу, чтобы задание в 1-м экземпляре запускало задание во 2-м экземпляре, подождало его завершения и выполнило некоторые действия (с использованием артефактов, созданных заданием @ 2nd)
Я придумал это решение - используя команды Jenkins CLI через SSH
ssh -p 2222 second-jenkins build second-job -s -v <further options>
Но этот сеанс отключается через 10 минут с сообщением:
Получено отключение от 192.168.147.102: 2: Время ожидания пользователя истекло. после 600000 мс.
Я нашел параметр клиента ssh с именем
ServerAliveInterval
ssh -o ServerAliveInterval=30 -p 2222 second-jenkins build second-job -s -v <...>
В документации по этому параметру указано
ServerAliveInterval
Устанавливает интервал тайм-аута в секундах, после которого , если нет данные имеют было получено с сервера , ssh (1) отправит сообщение через зашифрованный канал для запроса ответа от сервера. В по умолчанию 0, что означает, что эти сообщения не будут отправлены сервер. Этот параметр применяется только к протоколу версии 2.
Это работает, но только когда сервер находится в состоянии покоя не менее 30 секунд в течение каждых 10 минут. Конечно, я могу использовать 1 секунду вместо 30, но это не сработает для заданий с непрерывным выводом на консоль (например, сборки maven).
Есть ли решение, которое поддерживает соединение даже для тяжелых заданий вывода на консоль?
Добавьте это в стартап Jenkins для отключения таймаута SSHD:
-Dorg.jenkinsci.main.modules.sshd.SSHD.idle-timeout=0
См. также _COPY11@alaoui.rda/jenkins-cli-ssh-timeout-38386c943c22
Вам следует взглянуть на экран
или tmux
. Установите один из них на удаленный хост и запустите свою команду внутри этого сеанса. ssh
имеет параметр -t
для выделения tty
, поэтому вы должны сделать что-то вроде этого для screen
:
$ ssh -t user @ host screen 'your_command'