如何在Groovy脚本中安全处理将参数传递给jenkins构建函数?

时间:2018-08-24 19:07:09

标签: groovy jenkins-pipeline

我的jenkins groovy脚本中有一个功能,就像这样:

def build(字符串p1,字符串p2,字符串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

2 个答案:

答案 0 :(得分:1)

您需要将jenkins脚本批准中的方法调用列入白名单 https://jenkins.io/doc/book/managing/script-approval/

答案 1 :(得分:0)

我试图像这样设置默认值:

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

工作了! :)