Ich muss einige JSON in einer Jenkins-Pipeline analysieren und einige reguläre Methoden in einer Schleife aufrufen, jedoch das Skript immer nach dem ersten Funktionsaufruf beendet. Wie macht man das?Jenkins Groovy wie Methoden von @NonCPS-Methode ohne Ende der Pipeline aufgerufen werden
import groovy.json.JsonSlurper
import com.cloudbees.groovy.cps.NonCPS
@NonCPS
def myMethod(String json) {
def jsonSlurper = new JsonSlurper()
def jsonObject = jsonSlurper(json)
jsonObject.each {
obj ->
switch(obj.name) {
case "foo":
doAThing(obj)
break
case "bar":
doAnotherThing(obj)
break
}
}
}
Im obigen Beispiel, sogar mit einem JSON-Objekt wie:
[{
"name": "foo"
}, {
"name": "bar"
}]
... die Pipeline nach der ersten Iteration immer verläßt. Dies ist vermutlich auf das Mischen von Sync- und Async-Funktionen zurückzuführen. Gibt es eine Möglichkeit, dies zu tun?
Haben Sie den Tippfehler bemerkt: def jsonObject = jsonSurper (json) (fehlende "l" im rechten Teil)? – izzekil
Es ist nur ein Tippfehler in der Post, nicht das eigentliche Skript ... Aber gutes Auge @izzekil –
Sie könnten dies konfrontiert haben: https://issues.jenkins-ci.org/browse/JENKINS-31314 oder das: https: //issues.jenkins-ci.org/browse/JENKINS-26481 – izzekil