Resuelto : Gracias a la siguiente respuesta de S.Richmond. Necesitaba desarmar todos los mapas almacenados del groovy.json.internal.LazyMap
tipo que significaba anular las variables envServers
y object
después de su uso.
Adicional : las personas que busquen este error podrían estar interesadas en utilizar el paso de canalización de Jenkins en su readJSON
lugar; encuentre más información aquí .
Estoy tratando de usar Jenkins Pipeline para tomar la entrada del usuario que se pasa al trabajo como una cadena json. Pipeline luego analiza esto usando el slurper y selecciono la información importante. Luego utilizará esa información para ejecutar 1 trabajo varias veces en paralelo con diferentes parámetros de trabajo.
Hasta que agregue el código debajo, "## Error when below here is added"
el script funcionará bien. Incluso el código debajo de ese punto se ejecutará por sí solo. Pero cuando se combinan, aparece el siguiente error.
Debo señalar que se llama al trabajo activado y se ejecuta con éxito, pero se produce el siguiente error y falla el trabajo principal. Debido a esto, el trabajo principal no espera la devolución del trabajo activado. Yo podría tratar / catch alrededor del build job:
embargo quiero que el trabajo principal que esperar a que el trabajo disparado a fin.
¿Alguien puede ayudar aquí? Si necesita más información, hágamelo saber.
Salud
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']]
}
Error:
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