У меня есть задание Jenkins, которое запускает программу Python в кластере через SSH с ведомого устройства Windows. В программе есть этап очистки, который запускается с помощью инструкции python finally для любого типа исключения. Я хотел бы, чтобы этот этап очистки запускался, когда задание прерывается через веб-интерфейс Jenkins, но Jenkins, похоже, принудительно завершает этот процесс, не позволяя ему запускать оператор finally. Согласно https://wiki.jenkins.io/display/JENKINS/Aborting+a+build процесс завершается через API-интерфейс TerminateProcess в Windows.
Есть ли способ заставить Дженкинса просто прервать дочерний процесс и дождаться его завершения?






Одним из способов сделать это может быть добавление шага очистки как часть «ДЕЙСТВИЯ ПОСЛЕ ПОСТРОЕНИЯ (выполнение оболочки)».
Когда вы прерываете сборку (например, один раз щелкните значок x), Дженкинс по-прежнему будет выполнять действия после сборки. Jenkins прервет действие после сборки, если вы попытаетесь принудительно завершить процесс (щелкните значок «x» более одного раза)
Для этого вам может потребоваться изменить / разделить ваши скрипты.
Да, это один из способов сделать это. Однако в этом случае было бы очень сложно разделить скрипты. Я также запускаю эту программу без использования Jenkins, поэтому я не хочу изменять ее специально для Jenkins.