最佳答案
解决 : 感谢来自 S.Richmond 的 下面的回答。我需要取消 groovy.json.internal.LazyMap
类型的 所有存储映射,这意味着在使用后取消变量 envServers
和 object
。
附加 : 搜索此错误的人可能有兴趣使用 Jenkins 流水线步骤 readJSON
-find more info 给你。
我试图使用 Jenkins 管道从用户获取输入,这个输入作为 json 字符串传递给作业。然后管道使用 slurper 解析它,我挑选出重要的信息。然后,它将使用该信息与不同的作业参数并行地多次运行1个作业。
直到我添加代码以下的 "## Error when below here is added"
脚本将运行良好。甚至该点下面的代码也将自己运行。但是当组合在一起时,我得到了下面的错误。
我应该注意到,已触发的作业被调用并成功运行,但发生下面的错误并使主作业失败。因此,主作业不会等待触发作业的返回。我的 可以尝试/捕获周围的 build job:
然而,我想要的主要工作等待触发作业完成。
这里有人能帮忙吗? 如果你需要任何信息,请告诉我。
干杯
def slurpJSON() {
return new groovy.json.JsonSlurper().parseText(BUILD_CHOICES);
}
node {
stage 'Prepare';
echo 'Loading choices as build properties';
def object = slurpJSON();
def serverChoices = [];
def serverChoicesStr = '';
for (env in object) {
envName = env.name;
envServers = env.servers;
for (server in envServers) {
if (server.Select) {
serverChoicesStr += server.Server;
serverChoicesStr += ',';
}
}
}
serverChoicesStr = serverChoicesStr[0..-2];
println("Server choices: " + serverChoicesStr);
## Error when below here is added
stage 'Jobs'
build job: 'Dummy Start App', parameters: [[$class: 'StringParameterValue', name: 'SERVER_NAME', value: 'TestServer'], [$class: 'StringParameterValue', name: 'SERVER_DOMAIN', value: 'domain.uk'], [$class: 'StringParameterValue', name: 'APP', value: 'application1']]
}
错误:
java.io.NotSerializableException: groovy.json.internal.LazyMap
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:569)
at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.LinkedHashMap.internalWriteEntries(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
...
...
Caused by: an exception which occurred:
in field delegate
in field closures
in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@5288c