Какие есть способы избежать утверждения сценария с помощью сценария Groovy рабочего процесса Jenkins?

Следующий скрипт для плагина Jenkins Workflow:

def mapping = readFile 'a file'
mapping.eachLine {
      def line = it.tokenize('|')
      sh "${line[1]}"
}

требует одобрения сценария:

staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods tokenize java.lang.String java.lang.String
staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods eachLine java.lang.String java.lang.String

Для успешного запуска скрипта необходимо попытаться выполнить сборку, получить одобрение вручную, а затем снова выполнить другую сборку и т. д.

Для больших скриптов довольно утомительно сохранять методы белого списка.

Существует ли подмножество отличных методов, не требующих одобрения сценария и/или внесения в белый список?


person Raymond Barbiero    schedule 09.04.2015    source источник


Ответы (1)


Вам просто нужно одобрить новые запущенные методы по мере их появления.

Плагин Script Security поставляется с некоторыми уже внесенными в белый список методами. Методы, которые вы здесь перечислили, еще не прижились. JENKINS-25804 по умолчанию отслеживает желание внести в белый список стандартные вычислительные методы.

Обратите внимание, что если вы используете Groovy CPS DSL из источника сценария SCM, у вас намеренно нет возможности отключить режим песочницы, т. е. использовать режим утверждения всего сценария. Это связано с тем, что администратор должен одобрять весь сценарий после каждого внесенного изменения, каким бы тривиальным оно ни было. Напротив, в источнике Groovy CPS DSL каждое редактирование, сделанное администратором, немедленно регистрируется как одобренное без отдельного шага.

person Jesse Glick    schedule 09.04.2015
comment
Я получаю ERROR: Failed to evaluate groovy script. org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.Script println java.lang.Object --означает ли это неправильно настроенный сервер? - person MarkHu; 04.02.2016