jenkins - groovy.lang.MissingPropertyException : No such property: buildJobArray for class: groovy. lang.Binding

标签 jenkins groovy

我是 Groovy 新手。在这里,我声明了一些列表并使用 def 关键字,并在函数中使用它来触发作业并将其存储在列表中,但它会抛出错误:

MissingPropertyException No such property: buildJobArray for class: groovy.lang.Binding

即使我声明了一个列表。我不明白我的代码有什么问题

        def triggerBuildArray = []
        def buildJobArray = []
        def jobArray = []
        def paramsArray = []
        def noOfJob = 2 

        //function to trigger job

        def triggerJob(def job, def params, def jobNo) {
        
        buildJobArray << job.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(params))

        println"triggered job "+jobNo;
        println"waiting for completion of job "+jobNo;

       }

        jobArray << Hudson.instance.getJob('job1');


        //define parameters

        paramsArray << [            
        new StringParameterValue('baseurl',build.getEnvironment(listener).get('ORAbaseurl')),
        new StringParameterValue('firm',build.getEnvironment(listener).get('ORAfirm')),
        new StringParameterValue('loginname',build.getEnvironment(listener).get('ORAloginname'))
                
        ]

        for(int i=0;i<noOfJob;i++)
        {
            triggerJob(jobArray[i],paramsArray[i],i+1);

        }

但它给出了错误

        ERROR: Build step failed with exception
        groovy.lang.MissingPropertyException: No such property: buildJobArray for class: groovy.lang.Binding
            at groovy.lang.Binding.getVariable(Binding.java:63)
            at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:242)
            at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
            at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
            at org.kohsuke.groovy.sandbox.impl.Checker$checkedGetProperty$1.callStatic(Unknown Source)
            at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:230)
            at Script1.triggerJob(Script1.groovy:19)

enter image description here

最佳答案

在这里我找到了另一种方法来做到这一点。这里我使用'def'关键字来定义变量,因为使用def关键字它成为局部变量。如果不使用 def 关键字来变量,它将成为全局变量。

def buildJobArray = []   //local variable

buildJobArray = []  // Global variable

因此,一旦您使用了全局变量,就可以从任何函数访问它。

关于jenkins - groovy.lang.MissingPropertyException : No such property: buildJobArray for class: groovy. lang.Binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53375533/

相关文章:

grails - (默认程序包)在GGTS中

docker - 无法在Jenkins中运行Groovy sh命令

Jenkins 插件未显示

selenium - 如何在 docker firefox-standalone-debug 容器而不是常规的 Firefox 浏览器上运行 webdriver 测试

c++ - SonarQube 不分析 C++ 代码并显示警告文件不在项目目录下

android - 使用路径别名指向文件夹会导致Gradle错误

groovy - 将 GString 存储在变量中并在运行时求值

Jenkins 须藤 : no tty present and no askpass program specified with NOPASSWD

javascript - 使用Javascript将两个DataTable列合并为一个

string - Groovy:从给定的字符集生成随机字符串