2017-04-24 17 views
1

Ich versuche, eine Pipeline Job aus Jenkinsfile (mit Groovy-Code) zu laufen, aber ich bin den folgenden Fehler bekommen -Jenkins Pipeline java.io.NotSerializableException: groovy.util.slurpersupport.NodeChildren

java.io.NotSerializableException: groovy.util.slurpersupport.NodeChildren 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:778) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967) 
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 
    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(ObjectOutputStream.java:344) 
    at java.util.HashMap.internalWriteEntries(HashMap.java:1777) 
    at java.util.HashMap.writeObject(HashMap.java:1354) 
    at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source) 
... 

Der Code ich versuche auszuführen ist -

def getDataVersionFromNexus() { 
    def user = params.nexusUser 
    def password = params.nexusPassword  
    ... 

    def oldVersion = -1 
    print output 
    if (!output.isEmpty()) {   
     def xmlContent = new XmlSlurper().parseText(output) 
     oldVersion = "${xmlContent.versioning.release}" 
    } 

    return oldVersion 
} 

ich habe versucht, die Methode als @NonCPS mit Anmerkungen versehen (wie in einer ähnlichen sO Post vorgeschlagen), aber dann bekomme ich nicht richtig ausgegeben.

+0

Welche Zeile Ihres Codes das Problem verursacht, ist aus der obigen Frage nicht klar. – Rao

+0

Aus dem Fehler sieht es aus wie die Verwendung von XmlSlurper. Stack-Trace zeigt bei 'sun.reflect.GeneratedMethodAccessor101.invoke (Unknown Source)' – saikosen

Antwort

1

Versuchen Sie, diesen Wert als Liste in ArrayList zu kopieren, und verwenden Sie dann. Beispiel:

tmp = xmlContent.versioning.release.toList() 
list = new ArrayList() 
for (i = 0; i != tmp.size(); i += 1) { 
    list.add(tmp.get(i)) 
} 
oldVersion = list.get(0)