समाप्त किए बिना @NonCPS विधि से विधियों को कैसे कॉल करें, मुझे जेनकिंस पाइपलाइन में कुछ JSON को पार्स करने और लूप में कुछ नियमित तरीकों को कॉल करने की आवश्यकता है, हालांकि स्क्रिप्ट हमेशा पहले फ़ंक्शन कॉल के बाद बाहर निकलती है। यह कैसे करना है?जेनकिन्स ग्रोवी पाइपलाइन
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
यह पोस्ट में सिर्फ एक टाइपो है, वास्तविक स्क्रिप्ट नहीं ... लेकिन अच्छी आंख @izzekil –
आपको इसका सामना करना पड़ सकता है: https://issues.jenkins-ci.org/browse/JENKINS-31314 या यह: https: //issues.jenkins-ci.org/browse/JENKINS-26481 – izzekil