Когда вы используете проект в свободном стиле, вы можете установить, что через 20 минут сборка будет прервана, если не будет завершена. Как это возможно с проектом Jenkins Multi Branch Pipeline?
jenkins
jenkins-pipeline
Девонте
источник
источник
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/
→ Ссылка на шаг .def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }
Сложный способ - получить узел дважды. Первый раз с внешним таймаутом, второй с внутренним таймаутом. Мне тоже не хватает этой функции.Для декларативного конвейера рекомендуется использовать шаг тайм-аута в разделе параметров .
Шаг тайм-аута имеет 3 параметра, которые вы можете настроить:
время (обязательное, целое)
активность (необязательный, логический)
единица измерения (необязательно, значения: НАНОСЕКУНД, МИКРОСЕКУНД, МИЛЛИСЕКУНД, СЕКУНД, МИНУТЫ, ЧАСЫ, ДНИ)
Примеры:
В официальной документации Jenkins есть очень хороший пример использования тайм-аута:
источник
activity
по умолчанию имеет значение false. Когдаactivity
ложно - тайм-аут для всего задания,true
тайм-аут для активности (для вывода чего-либо в журнал).timeout
для определенного этапа таким образом, чтобы последующий этап работал плавно. В приведенном выше примере конвейер прерывается по истечении тайм-аута, и последующие этапы не выполняются. Есть ли способ выполнить мое требование? Пример кода для тайм-аута данного этапа (из официального документа Jenkins):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }