JenkinsパイプラインでいくつかのJSONを解析して、ループ内のいくつかの通常のメソッドを呼び出す必要がありますが、スクリプトは常に最初の関数呼び出しの後に終了します。これを行う方法?上記の例ではJenkins Groovyパイプラインを終了せずに@NonCPSメソッドからメソッドを呼び出す方法
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
}
}
}
、さえのようなJSONオブジェクトを持つ:
[{
"name": "foo"
}, {
"name": "bar"
}]
...パイプラインは常に最初の反復の後に終了します。これは、おそらく同期と非同期の機能が混在しているためです。これを行う方法はありますか?私は次のようにして、本質的にこの問題を解決した
あなたは誤植に気付いたことがありますか?def jsonObject = jsonSurper(json)(右側の "l"がありません)? – izzekil
これは実際のスクリプトではなく、実際のスクリプトではなく、投稿の入力ミスです...でも良いアイザックキ –
あなたはこれに直面しているかもしれません:https://issues.jenkins-ci.org/browse/JENKINS-31314またはこれ:https: //issues.jenkins-ci.org/browse/JENKINS-26481 – izzekil