groovy - Jenkins Groovy 脚本 MissingPropertyException
问题描述
为了创建以下形式的 json 文件,我制作了一个 Groovy 脚本,如下所示,但发生了错误。
怎么了?
我在下一个网站。我想我正确地编写了 Groovy 示例代码。 https://docs.groovy-lang.org/latest/html/gapi/groovy/json/JsonBuilder.html
示例 json
{
"loglevel": "INFO",
"logformat":"%(asctime)s, %(funcName)s, [%(levelname)s] %(message)s",
"logdateformat":"%Y-%m-%d %H:%M:%S",
"webconsole": "192.168.152.154",
"userid": "dGVzdA==",
"userpw": "dGVzdA==",
"headless": "true",
"autoexit": "true",
"os": {
"scan": "True",
"policy": null,
"host": null,
"ip": null,
"domain": null,
"os": "all"
}
}
常规脚本
import jenkins.model.Jenkins
import groovy.json.*
// read build parameters
env = build.getEnvironment(listener)
loglevel = env.get('loglevel')
logformat= env.get('logformat')
logdateformat= env.get('logdateformat')
webconsole= env.get('webconsole')
userid= env.get('userid')
userpw= env.get('userpw')
headless= env.get('headless')
autoexit= env.get('autoexit')
scan= env.get('scan')
policy= env.get('policy')
host= env.get('host')
ip= env.get('ip')
domain=env.get('domain')
os= env.get('os')
Instance= env.get('Instance')
// prepare json
def builder = new JsonBuilder()
builder {
loglevel loglevel
logformat logformat
logdateformat logdateformat
webconsole webconsole
userid userid
userpw userpw
headless headless
autoexit autoexit
dbms(
scan: scan,
policy: policy,
host: host,
ip: ip,
domain: domain,
os: os,
instance: instance,
)
}
json = builder.toPrettyString()
// print to console and write to a file
println json
new File("C:\\workspace\\jenkins\\_Test\\TestScript\\config.json").write(json)
詹金斯错误状态
ERROR: Build step failed with exception
groovy.lang.MissingPropertyException:没有这样的属性:类的实例:org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)的 groovy.json.JsonDelegate 在 org.codehaus.groovy.runtime.callsite.PogoGetPropertySite .getProperty(PogoGetPropertySite.java:52) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307) at Script1$_run_closure1.doCall(Script1.groovy:36) at Script1$_run_closure1.doCall( Script1.groovy) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 在 java.lang.reflect.Method.invoke (未知来源)在 groovy.lang.MetaMethod 的 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)。doMethodInvoke(MetaMethod.java:325) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at groovy.lang.Closure .call(Closure.java:414) 在 groovy.lang.Closure.call(Closure.java:408) 在 groovy.json.JsonDelegate.cloneDelegateAndGetContent(JsonDelegate.java:86) 在 groovy.json.JsonBuilder.call(JsonBuilder. java:215) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 在 org.codehaus.groovy.runtime.callsite 的 groovy.json.JsonBuilder$call$1.call(Unknown Source) .AbstractCallSite.call(AbstractCallSite.java:113) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 在 Script1.run(Script1.groovy:26) 在 groovy.lang.GroovyShell。在 groovy.lang 评估(GroovyShell.java:585)。GroovyShell.evaluate(GroovyShell.java:623) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:594) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:377) at org .jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:314) at hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:95) at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy .java:59) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804) at hudson.model.Build$BuildExecution.build(Build .java:197) 在 hudson.model.Build$BuildExecution.doRun(Build.java:163) 在 hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:514) 在 hudson.model.Run.execute(Run.爪哇:1907) 在 hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 在 hudson.model.ResourceController.execute(ResourceController.java:97) 在 hudson.model.Executor.run(Executor.java:429) 构建步骤'执行系统 Groovy 脚本'将构建标记为失败
解决方案
我已经解决了它的实例变量名称应该是小写的,但它是大写的,如下所示。
实例= env.get('实例')
推荐阅读
- html - html(引导页面)中的视频横幅布局不正确
- python - 灰色错误 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY
- swift - 两个问题 1. 没有辅助结果 2. 无法插入新的连接插座
- arrays - 如何在“C”中的任何函数内声明全局变量?
- ssh-tunnel - 使用 PgAdmin 4 设置 SSH 隧道
- javascript - 如何在 django 静态文件中导入节点包(静态文件夹中的任何自定义 js 文件)?
- reactjs - 直接调用我的自定义获取组件,而无需使用基于 useState 的变量
- javascript - 验证数字范围
- c# - 如何不调试引用的 dll?
- sql - 在 Impala 中使用 NULL 列创建表作为 Select