Я предполагаю, что вы используете Jenkinsfile
здесь, так как вы сказали "конвейер"; если нет, пожалуйста, предоставьте немного больше информации о вашей работе (фристайл с исполняемой оболочкой и т. д.).
Возможно, вам понадобится sleep
, но вы можете использовать его вместе с retry
, чтобы добиться более быстрого успеха (и более быстрого отказа). Предполагая, что вам просто нужна виртуальная машина, вы можете использовать что-то вроде:
retry(20){
sleep time: 5 unit: 'SECONDS'
sh 'ssh -o ConnectTimeout=1 <hostname> exit'
}
Это попытается подключиться к хосту каждые 5 секунд. Добавление ConnectTimeout означает, что ssh
будет ждать только 1 секунду для завершения соединения. exit
только гарантирует, что успешное соединение отключено. retry
будет оценивать команды до 20 раз, пока команда sh
не получит значение выхода 0
(success). Если он запускается 20 раз безуспешно, сборка завершится неудачно (что, вероятно, хорошо, поскольку это означает, что ваша ВМ недоступна для последующих заданий).
Если вы ожидаете какой-то конкретной услуги, вы можете curl
или иным образом попытаться связаться с этой службой вместо использования ssh
.