Как проверить, определено ли свойство в файле Дженкинса или нет

#jenkins #groovy

Вопрос:

У меня есть функция Дженкинса, подобная этой:

 def function() {
    wrap([$class: 'BuildUser']) {
        script {
            ....
            def triggeredBy = "Jenkins"
            if(BUILD_USER_EMAIL) {
              triggeredBy = "<mention email='${BUILD_USER_EMAIL}'/>"
            }
            ...
        }
    }
}
 

Свойство BUILD_USER_EMAIL относится к классу BuildUser. Если пользователь запустил сборку, она будет содержать электронную почту пользователя. Если Дженкинс запустил его автоматически, это свойство не определено.

Я пытался сделать это в приведенном выше коде, но это не работает. Я все еще получаю:

 groovy.lang.MissingPropertyException: No such property: BUILD_USER_EMAIL for class: WorkflowScript
 

Я думаю, что он разбился из-за того, что оператор if пытается использовать BUILD_USER_EMAIL, которого не существует.

Что я могу сделать, чтобы это исправить?

Ответ №1:

Вот что я сделал, чтобы решить эту проблему:

 def function() {
    wrap([$class: 'BuildUser']) {
        script {
            ....
            def triggeredBy = "Jenkins"

            try{ 
                 triggeredBy = "<mention email='${BUILD_USER_EMAIL}'/>"
            } catch (error){
                 println "BUILD_USER_EMAIL not supplied using default value"
            }
        }
    }
}
 

Комментарии:

1. Спасибо за ответ. Это сработает, но я не совсем хочу рассматривать отсутствие BUILD_USER_EMAIL как исключение.

2. Вот как Дженкинс относится к этому, мне это тоже не понравилось, когда я искал это, но это единственный способ, который я нашел, если вы найдете другой способ, пожалуйста, поделитесь.