#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. Вот как Дженкинс относится к этому, мне это тоже не понравилось, когда я искал это, но это единственный способ, который я нашел, если вы найдете другой способ, пожалуйста, поделитесь.