Моя сборка Jenkins зависает между этапами сборки и после сборки.
Вывод на консоль показывает, что ожидание составляет 6 минут (но я видел ожидание до одного часа):
10:53:26 BUILD FAILED in 1m 7s
10:53:26 4 actionable tasks: 4 executed
10:53:26 Build step 'Invoke Gradle script' changed build result to FAILURE
10:53:26 Build step 'Invoke Gradle script' marked build as failure
11:09:29 [CucumberReport] Using Cucumber Reports version 4.9.0
Я нашел этот и этот вопросы, которые имеют похожие проблемы, и они говорят, что решение находится -DSoftKillWaitSeconds=0
в jenkins.xml
.
Однако мне нужен способ установить опцию только для определенных заданий, не связываясь с глобальными настройками Jenkins (я бы не хотел связываться с другими проектами).
РЕДАКТИРОВАТЬ:
Когда я вручную отменяю задание, перед шагом [CucumberReport] отчеты о Cucumber все еще генерируются.
Я также установил флажок « Прервать сборку, если он застрял» в параметрах «Среда сборки» со стратегией тайм-аута No Activity
(Тайм-аут секунд = 2).
Когда я собираю проект с этими настройками, сборка завершится с ошибкой «Aborted через 0 секунд», показанной в истории сборки, как и раньше, но вывод консоли будет таким же. (Ничего не меняется, отчеты о огурцах будут создаваться, но по истечении определенного времени ожидания).
timeout
опцию в своей трубе? Вы должны обязательно опубликовать упрощенную версию своей трубы. Трудно «угадать», что может быть не так. Кроме того, этот вопрос, вероятно, лучше подходит для того, чтобы быть на devops.stackexchange.comОтветы:
Это не представляется возможным , чтобы выбрать значение задания специфичного для
SoftKillWaitSeconds
(значение выводится из ядра Jenkins в точке , где имя задания не известно).Я рекомендую исправить обработку прерывания в вашей работе , чтобы она не зависела от «тайм-аута мягкого уничтожения». Если вы работаете в системе Unix-ish, вы можете убедиться в этом, запустив свою работу в новой группе процессов (
set -m
в bash) и (например), настроив правильную ловушку выхода.источник
Мы используем плагин Build-timeout для уничтожения зависших заданий со стратегией тайм-аута, установленной на
No Activity
илиAbsolute
. Для меня это хороший подход, когда вы используете фристайл-проекты. Причина, по которой ваша сборка «Прервана через 0 секунд», заключается в том, что, скорее всего, есть незавершенные дочерние процессы. Из документации :Вы можете попробовать абсолютную стратегию тайм-аута. Вы можете определить глобальную переменную, чтобы не повторять значение времени ожидания в заданиях:
Если это не работает, вы можете попробовать посмотреть в журналах https: // your-jenkins-server / log или в дампе потока.
Зависание может быть вызвано новой / старой версией плагина. Попытайтесь найти, что является незаконченными дочерними процессами. Попробуйте отключить действия пост-сборки одно за другим, чтобы найти тот, который может быть причиной проблемы. Вы можете увидеть /superuser/1401879/debugging-what-happens-when-a-jenkins-build-unexpectedly-pauses-or-hangs
источник