Risolto: Grazie a below answer da S.Richmond. Ho dovuto disinserire tutte le mappe memorizzate del tipo groovy.json.internal.LazyMap
che significava annullare le variabili envServers
e object
dopo l'uso.Jenkins Pipeline NotSerializableException: groovy.json.internal.LazyMap
supplementari: Le persone alla ricerca di questo errore potrebbero essere interessati a utilizzare il gasdotto passo Jenkins readJSON
invece - trovare maggiori informazioni here.
Sto cercando di utilizzare Jenkins Pipeline per prendere input dall'utente che viene passato al lavoro come stringa json. La pipeline quindi analizza questo usando il fluidificatore e seleziono le informazioni importanti. Quindi utilizzerà tali informazioni per eseguire 1 lavoro più volte in parallelo con i parametri di lavoro differeing.
Fino a quando non aggiungo il codice sotto "## Error when below here is added"
lo script funzionerà correttamente. Anche il codice sotto quel punto funzionerà da solo. Ma quando combinato ho l'errore qui sotto.
Si noti che il lavoro attivato viene chiamato e viene eseguito correttamente, ma si verifica l'errore di sotto e il lavoro principale non viene eseguito correttamente. Per questo motivo, il lavoro principale non attende il ritorno del lavoro attivato. I potrebbe tentare/aggirare lo build job:
tuttavia, desidero che il lavoro principale attenda il completamento del processo attivato.
Qualcuno può assistere qui? Se hai bisogno di ulteriori informazioni fammi sapere.
Acclamazioni
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']]
}
Errore:
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]
appena incontrato questo me stesso. Hai fatto ulteriori progressi ancora? –
https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md#serializing-local-variables –