Как безопасно обрабатывать передачу параметров функции сборки jenkins в Groovy script?

У меня есть функция в моем сценарии 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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
631
2

Ответы 2

Вам необходимо внести вызов метода в белый список при утверждении скриптов Дженкинса https://jenkins.io/doc/book/managing/script-approval/

Нет. В общем, это то, что означает ошибка «Сценарии не разрешено использовать». Однако, когда вы получаете эту ошибку о groovy.lang.GroovyObject invokeMethod, это означает, что «вы пытались вызвать метод в классе, у которого нет этого метода». Это плохое взаимодействие между поведением groovy с методами, которых нет, и песочницей безопасности Jenkins. В этом случае я считаю, что ошибка возникла из-за того, что без указания значений по умолчанию не было функции сборки с 0 аргументами.

Daniel Martin 14.02.2020 22:20

Я попытался поставить такие значения по умолчанию:

def build(String p1='', String p2='**/classes', String p3='**/**.exec')

Работал! :)

Другие вопросы по теме