it-swarm.com.ru

Тайм-аут на шаге сборки Дженкинса

В Jenkins есть ли способ дать разные таймауты для каждого или выбранного шага сборки?
Плагин времени сборки предоставляет функциональность тайм-аута «Прервать сборку, если она застряла» в завершенном проекте, мне нужно дать разные таймауты для каждого шага. Таким образом, я могу сделать свой процесс более эффективным.

26
rohits

Что касается текущих версий Jenkins, это можно сделать. Нажмите «Настроить», затем выберите вкладку «Среда сборки» и установите время ожидания.

Вот скриншот:  enter image description here

13
JESii

Нет такой функциональности, о которой я знаю. JENKINS-8900 просит его.

6
Jesse Glick

Я думаю, что команда timeout из GNU coreutils может быть тем, что вы хотите. Это при условии, что ваши шаги сборки являются сценариями.

3
Ian

В конвейерных заданиях вы можете заключить свои шаги в timeout следующим образом:

timeout(time: 5, unit: 'MINUTES') { // steps to execute }

3
katrash

Самый простой способ (и это то, как я это делаю) состоит в том, чтобы на самом деле разные проекты зависели друг от друга и строили их в ряд. Это не идеально, но другой вариант будет контролировать выполнение различных плагинов с различными инструментами/поведение сборки. 

Тем не менее, подход будет работать, хотя он сосет ...

Кстати, есть плагин Nice, который может помочь вам с помощью набора проектов - плагин Build Pipeline . Я использую его прямо сейчас, чтобы визуализировать и проверить созданный мной конвейер. Это действительно удобно ...

2
Łukasz Rżanek

Если вы не хотите использовать плагин Jenkins и хотите установить тайм-аут сценария или какой-либо команды, то вы можете использовать встроенную в Linux утилиту «timeout».

timeout -s KILL 1m ./test

Приведенная выше команда будет запускать исполняемый файл test в течение 1 минуты, и если она продолжит выполняться после истечения времени ожидания, команда прекратит работу и завершит процесс утилитой KILL.

1
Hemant

Этот вопрос первоначально задавался до того, как существовал трубопровод Дженкинс. Хотя вы можете продолжать использовать и настраивать Jenkins через графический интерфейс, в настоящее время рекомендуется переводить ваши проекты в конвейер. Использование конвейера позволяет вам отслеживать изменения в вашем конвейере и сохранять его в виде кода, чтобы можно было легко воссоздать сборку на любом компьютере, если вам нужно переместить сервер Jenkins.

Используя конвейер, добавление тайм-аута в очень специфическую часть вашей сборки тривиально. Синтаксис конвейера прост и удобен в использовании.

timeout(time:5, unit:'DAYS') {
    input message:'Approve deployment?', submitter: 'it-ops'
}

Связанный вопрос: Как добавить шаг тайм-аута в конвейер Jenkins

Пример, бесстыдно взятый из: Десять лучших рекомендаций CloudBees для подключаемого модуля Jenkins Pipeline

0
Alex Lowe

Плагин времени ожидания сборки не применим к конвейерам. обратитесь к вики

Для истечения времени ожидания, попробуйте что-то вроде:

timeout(time: 30, unit: 'MINUTES') {
  node {
    sh 'foo'
  }
}

Аналогичный ответ из другой ветки: Как добавить шаг тайм-аута в конвейер Jenkins

0
Chuan