Résolu : Merci à réponse ci-dessous de S.Richmond. J'avais besoin de débloquer tous les cartes stockées de l groovy.json.internal.LazyMap
ce qui signifie l'annulation des variables envServers
et object
après utilisation.
Supplémentaire : Les personnes recherchant cette erreur pourraient être intéressées par l'étape du pipeline Jenkins. readJSON
à la place - trouver plus d'informations ici .
J'essaie d'utiliser Jenkins Pipeline pour prendre les données de l'utilisateur qui sont transmises au travail sous forme de chaîne json. Pipeline analyse ensuite cette chaîne à l'aide du slurper et en extrait les informations importantes. Il utilisera ensuite ces informations pour exécuter un travail plusieurs fois en parallèle avec des paramètres de travail différents.
Jusqu'à ce que j'ajoute le code ci-dessous "## Error when below here is added"
le script fonctionnera bien. Même le code en dessous de ce point s'exécutera seul. Mais lorsqu'il est combiné, j'obtiens l'erreur suivante.
Je dois noter que le job déclenché est appelé et s'exécute avec succès mais que l'erreur ci-dessous se produit et fait échouer le job principal. Pour cette raison, le travail principal n'attend pas le retour du travail déclenché. I pourrait try/catch autour de la build job:
mais je veux que le travail principal attende que le travail déclenché se termine.
Quelqu'un peut-il m'aider ? Si vous avez besoin de plus d'informations, faites-le moi savoir.
Cheers
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']]
}
Erreur :
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
0 votes
Je viens juste de rencontrer ce problème moi-même. Avez-vous fait des progrès ?
4 votes
github.com/jenkinsci/pipeline-plugin/blob/master/