已解决:感谢S.Richmond的below answer。我需要取消所有存储的groovy.json.internal.LazyMap
类型的地图,这意味着在使用后取消变量envServers
和object
。Jenkins管道NotSerializableException:groovy.json.internal.LazyMap
附加:人民搜索这个错误可能有兴趣使用詹金斯管道一步readJSON
代替 - 获取更多here。
我想使用詹金斯管道从作为json字符串传递给作业的用户采取输入。管道然后使用slurper解析这个,我挑选出重要的信息。然后,它将使用该信息与不同的作业参数并行运行多个作业。
直到我将下面的代码添加到"## 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 [email protected]
恰好碰到了这个自己尴尬的嵌套构造函数)。你有没有取得进一步的进展? –
https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md#serializing-local-variables –