Способ сделать это - обернуть весь конвейерный скрипт в блок try
/ catch
, а затем отправить электронное письмо, используя mail
step в блоке catch
. Вот как бы я это написал:
try {
// your pipeline code
// ...
} catch (e) {
mail subject: "${env.JOB_NAME}#${env.BUILD_NUMBER} - Failed",
body: """
Build: ${env.BUILD_URL}
Error message:
${e.getMessage()}
Stack Trace:
${e.getStackTrace().join('\n')}
""",
to: 'me@email.com'
throw e // rethrow the error so that it gets printed in the job log, and so the job fails
}
Вам определенно нужно утвердить getStackTrace
как "безопасный" метод, и вам, возможно, придется сделать то же самое для getMessage
.
Следует иметь в виду, что этот try / catch не будет перехватывать ошибки «Нет такого метода DSL», что, по мнению JENKINS-45469 , не является ошибкой.
Если вас интересует более сложное поведение электронной почты, вы можете также воспользоваться расширенным плагином для электронной почты .