Получить причину ошибки в Jenkinsfile failure
У меня есть следующий раздел post
отказ:
post {
failure {
mail subject: "u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed",
body: """Build ${env.BUILD_URL} is failing!
|Somebody should do something about that""",
to: "devel@example.com",
replyTo: "devel@example.com",
from: 'jenkins@example.com'
}
}
Я хотел бы включить причины, по которым сборка не удалась в теле сообщения об ошибке.
Как я могу это сделать?
Если нет, есть ли способ прикрепить файл журнала сборки к электронной почте?
1 ответ:
Я не знаю способа автоматического извлечения причины сбоя из воздуха.
Тем не менее, вы можете использовать блоки "post{ failure {" в каждой фазе, чтобы захватить по крайней мере фазу, в которой он потерпел неудачу в переменную среды (например, env.FAILURE_REASON)и получить доступ к этому env var в блоке уведомлений final (global scope).
Для большей детализации можно повторно использовать тот же механизм глобальной переменной env, но использовать блоки try { } catch { } для захвата конкретного шага неудачный.
Общий пример:
pipeline { stages { stage('Build') { steps { ... } post { failure { script { env.FAILURE_STAGE = 'Build' } } } } stage('Deploy') { steps { ... } post { failure { script { env.FAILURE_STAGE = 'Deploy' } } } } ... } post { failure { mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed", body: """Build ${env.BUILD_URL} is failing in ${env.FAILURE_STAGE} stage! |Somebody should do something about that""", to: "devel@example.com", replyTo: "devel@example.com", from: 'jenkins@example.com' } } }
Технически, вы даже можете сделать некоторую автоматическую сортировку на основе стадии сбоя и отправить более целевое уведомление или даже создать конкретные (например, Jira) билеты.
Чтобы прикрепить журнал консоли к уведомлению по электронной почте, вам нужно посмотреть emailext и атрибут 'attachLog: true'