Potrzebuję parsować niektóre JSON w potoku Jenkinsa i wywołać pewne regularne metody w pętli, jednak skrypt zawsze kończy działanie po pierwszym wywołaniu funkcji. Jak to zrobić?Jenkins Groovy jak wywoływać metody z metody @NonCPS bez kończącego się potoku
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
}
}
}
W powyższym przykładzie, nawet obiekt JSON jak:
[{
"name": "foo"
}, {
"name": "bar"
}]
... rurociąg zawsze wychodzi po pierwszej iteracji. Prawdopodobnie wynika to z mieszania funkcji synchronizacji i asynchronizacji. Czy jest jakiś sposób to zrobić?
Czy zauważyłeś literówkę: def jsonObject = jsonSurper (json) (brak "l" w prawej części)? – izzekil
To tylko literówka w poście, a nie faktyczny scenariusz ... Ale dobre oko @izzekil –
Mogłeś mieć do czynienia z tym: https://issues.jenkins-ci.org/browse/JENKINS-31314 lub to: https: //issues.jenkins-ci.org/browse/JENKINS-26481 – izzekil