У меня есть сценарий Jenkins Pipeline, и я не могу утвердить ограничение песочницы для groovy.io.FileType FILES
. Например, следующий фрагмент кода Jenkins Pipeline не работает в «песочнице» из коробки:
new File("/tmp").eachFileRecurse(FileType.FILES) { file ->
echo "$file"
}
Исключение выдается:
Exception stacktrace: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticField groovy.io.FileType FILES
at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectStaticField(StaticWhitelist.java:199)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor$14.reject(SandboxInterceptor.java:372)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:381)
at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.copySqlFiles(WorkflowScript:101)
at WorkflowScript.run(WorkflowScript:58)
at org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(jar:file:/var/jenkins_home/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar!/org/jenkinsci/plugins/docker/workflow/Docker.groovy:136)
...
Обычно для этого типа создается запись в
Manage Jenkins » In-process Script Approval
, но для этого исключения нет. Это действительно странно, потому что, если я перехожу по каталогам с new File("/tmp").eachFileRecurse(FileType.DIRECTORIES)
, это работает, и я могу утвердить исключение, но теперь нет никакой записи подтверждения, сгенерированной для FILES
...