Jenkins 声明性管道抛出 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException : unclassified getAt method

标签 jenkins groovy jenkins-plugins jenkins-pipeline

我在 Jenkins 中定义了一个共享库:

import com.codependent.jenkins.pipelines.Utils

def call(List<String> mavenGoals){
  def processedMavenGoals = mavenGoals.join ' '
  pipeline {
    agent any
  ...
}

如果我像这样从我的项目的 Jenkinsfile 中调用它,它就可以正常工作:

#!groovy
@Library('jenkins-pipeline-shared-library-example') _
buildPipeline(['clean', 'install'])

但是,如果我在 Groovy 语法允许的情况下省略了括号:

#!groovy
@Library('jenkins-pipeline-shared-library-example') _
buildPipeline ['clean', 'install']

执行显示以下异常。为什么?

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified getAt method buildPipeline[java.util.ArrayList]
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetArray(SandboxInterceptor.java:451)
    at org.kohsuke.groovy.sandbox.impl.Checker$10.call(Checker.java:413)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetArray(Checker.java:418)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getArray(SandboxInvoker.java:45)
    at com.cloudbees.groovy.cps.impl.ArrayAccessBlock.rawGet(ArrayAccessBlock.java:21)
    at WorkflowScript.run(WorkflowScript:3)
    at ___cps.transform___(Native Method)

最佳答案

我在更新 jenkins 后遇到了类似的问题。

在我的例子中,堆栈跟踪还显示了一个 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException[...]

原因

Jenkins 有一个安全插件可以阻止 Jenkinsfile 中的某些方法调用。

解决方案

允许这些有时无害的调用:

  1. 转到:http://JENKINS_HOST/scriptApproval/ ( Official Documentation )
  2. 批准 Jenkinsfile 中被拒绝的操作 enter image description here
  3. 重新运行失败的构建以查看 Jenkinsfile 是否正常工作

关于Jenkins 声明性管道抛出 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException : unclassified getAt method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429657/

相关文章:

Jenkins 2 - 如何从 Jenkins Workflow - Pipeline Plugin 获取用户角色(角色策略插件)

docker - Docker多个端口(前端和后端)不起作用

Groovy 脚本不再在 Cygwin 下工作?

groovy - 如何使用groovy对列表列表进行分组

Jenkins 电子邮件发送远程服务器 cucumber 报告

tomcat - 如何在不抛出 InterruptedException 的情况下安全地重启部署在 tomcat 上的 hudson/jenkins?

Maven Jenkins 插件 POM 缺少 JAR 上的依赖信息

jenkins - Github项目和源代码管理中的Git有什么区别?

jenkins - 如何使用新链接和图标扩展 Jenkins 工作页面

regex - 常规正则表达式测试失败