Подтвердить что ты не робот

Try/catch/finally маскирует проблемы Jenkinsfile в случае groovy исключений компилятора

У меня есть код, аналогичный приведенному ниже в моем файле Jenkins:

node {
   checkout scm
   // do some stuff
   try {
       // do some maven magic
   } catch (error) {
       stage "Cleanup after fail"
       emailext attachLog: true, body: "Build failed (see ${env.BUILD_URL}): ${error}", subject: "[JENKINS] ${env.JOB_NAME} failed", to: '[email protected]'
       throw error
   } finally {
       step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml'
   }
}

Если приведенный выше код завершился с ошибкой из-за некоторых связанных с jenkins-конвейеров ошибок в try { } (например, с использованием несанкционированного статического метода), script терпит неудачу. Когда я удаляю try/catch/наконец, я вижу ошибки. Я делаю что-то неправильно? Не следует ли перестроить error, чтобы ошибки конвейера отображались в журнале?

EDIT: Мне удалось решить проблему до синтаксиса groovy, когда, например, Я использую переменную, которая еще не назначена. Пример: echo foo Если foo не объявляется/не назначается в любом месте, Jenkins откажет сборку и не покажет причину, если она находится внутри try/catch/finally, которая заново исключает исключение.

4b9b3361

Ответ 1

Это происходит, когда дополнительное исключение выбрасывается внутри блока finally или перед повторным броском внутри catch. В этих случаях RejectedAccessException проглатывается и script-security не улавливает его.