Вывод электронной почты BUILD_LOG не включает текст ошибки из журнала консоли - PullRequest
1 голос
/ 15 мая 2019

Я использую плагин Jenkins emailext и пытаюсь получить вывод консоли, но получаю только усеченный журнал без действительной ошибки.

Я принудительно подтверждаю, что утверждение не выполнено, чтобы проверить, что я получаю журнал ошибок ($ BUILD_LOG) в своем электронном письме. Я получаю большинство из журнала, но не фактическую последнюю ошибку или последние несколько шагов. Есть ли способ зафиксировать ошибку? Он отправляет усеченную версию журнала, которая не включает последние несколько шагов, потому что я подозреваю, что когда она отправляет почту, она отправляет то, что уже собрала (до шага почтового индекса), а последние шаги не записываются в журнал еще, так как мы находимся на шаге электронной почты Но, к сожалению, фактическая ошибка записывается в конец журнала, поэтому я никогда не вижу ее в электронном письме. Мне действительно все равно, что я потеряю последние шаги, мне важно, чтобы я не увидел сообщение об ошибке, в котором весь смысл отправки логов. Я хочу видеть ошибки в электронной почте, когда я не на VPN и не могу получить доступ к Jenkins. Существует ли переменная окружения, содержащая ОШИБКУ или способ сброса ошибки до достижения конца файла?

post { failure { emailext (to: xyz@acmeinc.com", subject: "Failed Pipeline: ${currentBuild.fullDisplayName}", body: """Something went wrong with ${env.BUILD_URL}\n\n\${BUILD_LOG, maxLines=500, escapeHtml=false}""") } }

Начато пользователемxxx
...
[Трубопроводная]
emailext
Отправка электронного письма на адрес: abc@acmeinc.com
[Pipeline]}
[Трубопровод] // этап
[Pipeline]}
[Pipeline] // узел
[Трубопровод] Конец трубопровода
groovy.lang.MissingPropertyException: Нет такого свойства: IE_BUILDx для класса: groovy.lang.Binding ...

Что меня волнует, так это ошибка, отображаемая в конце шагов конвейера (например, нет такой ошибки свойства) - есть ли способ заставить ее сбросить журнал, прежде чем я отправлю свою почту, чтобы захватить его Любым другим путем?

Так как это декларативный конвейер, я не могу поставить try / catch вокруг всего блока. Я могу поместить try / catch вокруг каждой секции скрипта в моем конвейере, чтобы перехватить ошибку, сохранить сообщения об ошибках в переменной для моей электронной почты и повторно выдать ошибку, но это очень утомительно и загромождает код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...