Получить причину ошибки в 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 4

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'