Jenkins 声明式管道抛出 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:未分类的 getAt 方法

2024-04-08

我在 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)

更新詹金斯后我也遇到了类似的问题。

就我而言,堆栈跟踪还显示了org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException[...]

Reason

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

Solution

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

  1. Go to: http://JENKINS_HOST/scriptApproval/ http://JENKINS_HOST/scriptApproval/ ( 官方文档 https://jenkins.io/doc/book/managing/script-approval/ )
  2. Approve the action that has been denied in the Jenkinsfile enter image description here
  3. 重新运行失败的构建以查看 Jenkinsfile 的工作情况
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 声明式管道抛出 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:未分类的 getAt 方法 的相关文章

随机推荐