У меня есть функция в моем сценарии jenkins groovy, например:
def build (String p1, String p2, String p3) {
script.stage('Build') {
try {
script.sh "./gradlew -Pversion='${currentVersion}' clean build"
} finally {
script.step([$class: 'JacocoPublisher', classPattern: p1, exclusionPattern: p2, execPattern: p3])
}
}
}
Итак, как мне справиться со случаем, когда файл jenkins проекта не передает никаких аргументов этой функции? Я попытался поставить условия, чтобы проверить, являются ли эти параметры пустыми / нулевыми, но это дало мне следующую ошибку в выводе консоли в jenkins:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object





Вам необходимо внести вызов метода в белый список при утверждении скриптов Дженкинса https://jenkins.io/doc/book/managing/script-approval/
Я попытался поставить такие значения по умолчанию:
def build(String p1='', String p2='**/classes', String p3='**/**.exec')
Работал! :)
Нет. В общем, это то, что означает ошибка «Сценарии не разрешено использовать». Однако, когда вы получаете эту ошибку о
groovy.lang.GroovyObject invokeMethod, это означает, что «вы пытались вызвать метод в классе, у которого нет этого метода». Это плохое взаимодействие между поведением groovy с методами, которых нет, и песочницей безопасности Jenkins. В этом случае я считаю, что ошибка возникла из-за того, что без указания значений по умолчанию не было функции сборки с 0 аргументами.