jenkins - groovy.lang.MissingPropertyException:没有这样的属性:类的 buildJobArray:groovy.lang.Binding
问题描述
我是 groovy 的新手。在这里,我声明了一些列表并使用 def 关键字并在函数中使用它来触发作业并将其存储在列表中,但它会引发错误:
MissingPropertyException 没有这样的属性:类的 buildJobArray: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)
解决方案
在这里,我找到了另一种方法来做到这一点。这里我使用'def'关键字来定义一个变量,因为使用了def关键字它变成了局部变量。如果你不使用 def 关键字来变量它成为全局变量。
def buildJobArray = [] //local variable
buildJobArray = [] // Global variable
因此,一旦您使用了全局变量,就可以从任何函数访问它。
推荐阅读
- python - Google Vision API - 使用 URL 运行显式内容检测(安全搜索)
- reactjs - 在反应功能组件中使用相同代码时缺少按钮
- python - Python:如何通过一些字符串连接将每个字符串拆分为新行
- excel - 将整个 Excel 工作表更改为“文本”单元格格式 XLRD
- json - Logstash:如何在不知道键名的情况下提取对象
- racket - 使用哈希集在球拍中平方欧几里得距离
- grpc - 从服务帐户生成 JWT 令牌时如何添加 JWT 范围
- python - Django 表单提交数百个 Celery 任务
- web - 为移动浏览器设置 Google 登录的 CORS 失败?
- azure-data-explorer - Azure 数据资源管理器上的 CPU 压力测试