Ho bisogno di analizzare alcuni JSON in una pipeline Jenkins e chiamare alcuni metodi regolari in un ciclo, tuttavia lo script esce sempre dopo la prima chiamata di funzione. Come fare questo?Jenkins Groovy come chiamare metodi dal metodo @NonCPS senza terminare la pipeline
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
}
}
}
Nell'esempio precedente, anche con un oggetto JSON come:
[{
"name": "foo"
}, {
"name": "bar"
}]
... conduttura esce sempre dopo la prima iterazione. Ciò è presumibilmente dovuto al mixaggio di funzioni di sincronizzazione e asincrone. C'è un modo per fare questo?
Avete notato l'errore di battitura: def jsonObject = jsonSurper (json) (manca "l" nella parte destra)? – izzekil
È solo un errore di battitura nel post, non lo script vero ... Ma buon occhio @izzekil –
Si potrebbe aver affrontato questo: https://issues.jenkins-ci.org/browse/JENKINS-31314 o questo: https: //issues.jenkins-ci.org/browse/JENKINS-26481 – izzekil