schrieb ich die folgende Funktion, die meine Pipeline geladen wird:Was ist "nicht serialisierbar" in dieser Groovy-Methode?
def userTrigger() {
[$class: 'UsernamePasswordMultiBinding', credentialsId: jenkins_creds, usernameVariable: 'J_USER', passwordVariable: 'J_PASS'],
]){
cmd = "curl -s -u \${J_USER}:\${J_PASS} \${env.BUILD_URL}api/json | python -mjson.tool | grep userId | awk '{print \$2}' | tr -d '"|,' "
def ut = sh(returnStdout: true, script: cmd)
return ut
}
}
Das Ergebnis sollte der Benutzername des derjenige sein, der den Build ausgelöst, bevor die Ausgabe der Reinigung es sieht so aus:
"userId": "itaig",
im Grunde ist dies:
awk -F'"' '{print $4}'
würde mir auch die erforderliche Leistung, aber ich bin nicht sicher, wie auch Zeichen in dieser Aussage zu entkommen.
Als ich den Auftrag ausführen, bekomme ich folgende Fehlermeldung:
java.io.NotSerializableException: org.codehaus.groovy.control.ErrorCollector
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
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.doWriteObject(RiverMarshaller.java:854)
Ich bin ziemlich sicher, es hat etwas mit meiner versucht zu entkommen den entsprechenden Zeichen zu tun, aber ich habe das Gefühl, dass ich haven ‚t es richtig gemacht, ich habe versucht, zu entkommen die (") am Ende der cmd Linie, aber ohne Erfolg.
können Sie versuchen, mein Problem zu finden?
Das ist die Art und Weise, die UsernamePasswordMultiBinding-Klasse zu verwenden. Ich benutze sie, um jenkins-Benutzernamen und -Passwort als maskierte Werte in den curl-Befehl zu injizieren. –
Sie können es hier sehen: https://support.cloudbees.com/hc/en-us/articles/204897020-Fetch-a-userid-and-password-from-a-Credential-object-in-a-Pipeline -job-? mobile_site = true –
@ItaiGanot - In den Beispielen in Ihrem Link sind alle Klammern "balanced", aber das Beispiel in Ihrer Frage die Klammern sind "unsymmetrisch". Nachdem ich manuell gezählt habe (Start bei Null +1 für eine Linke, -1 für eine Rechte), die Beispiele und ein paar der Beispiele - nur Ihre gepostete Antwort ist unsymmetrisch. Ich habe mit dem Notepad ++ Plugin "BracketsCheck" und allen Beispielen aus der verlinkten Seite einen Doppel-Check gemacht - und der Beispiel-Code in Ihrer Frage schlägt als "unsymmetrisch" fehl. Ich zähle 1 linke Klammer und 2 rechte Klammern. Denke nicht, dass ich darüber hinaus helfen kann :-). –