Я выполняю задание, определенное с помощью декларативного конвейера Jenkins.
Конвейер использует агент docker в качестве рабочего, который используется для запуска terraform (планирование и применение)
Когда пользователь нажимает «прервать» или «отменить» в пользовательском интерфейсе Jenkins, конвейер завершается (SIGTERM) отправляется процессу Docker (я думаю ...).
Это приводит к отключению terraform нечисто.
Я бы хотел сделать следующее:
- Если пользователь нажимает кнопку «Прервать» в пользовательском интерфейсе Jenkins, поймайте это до того, как какой-либо процесс будет фактически завершен
- и вместо этого выключите конвейер другим способом (возможно, заморозьте агент или что-то более безопасное, например, отправьте отмену запущенному процессу в контейнере docker).
Я пробовал следующее:
try{}catch(err){}
, однако это прерывает конвейер, завершая работу агента docker перед фактическим выполнением действий в catch
. Так что не много пользы.
действие post {} для этапа, которое также просто выполняет действие post в случае ABORT, но после прерывания.
Вопрос:
Есть ли в Jenkins метод (желательно с использованием декларативного конвейера Jenkins) для обработки сигнала ABORT до того, как он будет фактически применен, и решить, прервать его или нет?
(Значение: если это возможно, это позволит мне плавно управлять прерыванием заданий Terraform пользователями, избегая повреждения инфраструктуры.)
Заранее благодарим за любую помощь!