У меня есть трубопровод со сценой для исполнения Selenium. Я ожидаю, что выполнение Selenium завершится, скажем, x
минут. Если это не будет завершено в течение этого времени, я прерву этап. У меня следующий код для достижения того же самого -
pipeline {
agent any
stages {
stage('Selenium Execution') {
options {
timeout(time: 3, unit: 'MINUTES')
}
steps {
script {
catchError(buildResult: 'SUCCESS', stageResult: 'ABORTED') {
try {
<code to execute Selenium tests is here>
<after above selenium execution some other statements to execute>
} catch(org.jenkinsci.plugins.workflow.steps.FlowInterruptedException e) {
error "Selenium execution took longer than expected"
}
}
}
}
}
}
}
Когда запускается сборка, тесты здесь занимают более 3 минут (что определено как тайм-аут) и, следовательно, ожидают выдачу ошибки Selenium execution took longer than expected
и этапа отмены.
Но в выводе консоли после истечения времени ожидания я вижу утверждение - Sending interrupt signal to process
. После этого оператора я вижу, что исполняется часть кода Selenium, написанного для выполнения после теста, например: снимок экрана et c.
После этого выполнение не останавливается, а остальные операторы на этапе казнены. И ожидаемая ошибка - Selenium execution took longer than expected
не генерируется и, следовательно, этап не прерывается.
Однако тот же код прекрасно работает, если нет Selenium Execution.
Пожалуйста, помогите мне разобраться в этой ситуации, где Я могу прервать сценическое исполнение.