jenkins cli build via ssh отключается через 10 минут

У меня есть два экземпляра 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).

Есть ли решение, которое поддерживает соединение даже для тяжелых заданий вывода на консоль?

1
задан 10 August 2016 в 13:07
2 ответа

Добавьте это в стартап Jenkins для отключения таймаута SSHD:

-Dorg.jenkinsci.main.modules.sshd.SSHD.idle-timeout=0

См. также _COPY11@alaoui.rda/jenkins-cli-ssh-timeout-38386c943c22

1
ответ дан 3 December 2019 в 20:36

Вам следует взглянуть на экран или tmux . Установите один из них на удаленный хост и запустите свою команду внутри этого сеанса. ssh имеет параметр -t для выделения tty , поэтому вы должны сделать что-то вроде этого для screen :

$ ssh -t user @ host screen 'your_command'

1
ответ дан 3 December 2019 в 20:36

Теги

Похожие вопросы