में मौजूदा जेनकींस बिल्डिंग तक पहुंचने के लिए मैंने एक ग्रोवी स्क्रिप्ट बनाई है जिसका उपयोग जेनकिन्स नौकरी में System Groovy Script
चरण में किया जाता है, जिसे वर्तमान नौकरी के वर्तमान निर्माण तक पहुंचने की आवश्यकता होती है।ग्रोवी स्क्रिप्ट
वर्तमान बिल्डिंग की आवश्यकता है जब मैं अपने वर्तमान नौकरी के वर्तमान निर्माण को शेड्यूलिंग कर रहा हूं, तो वर्तमान कार्य के वर्तमान निर्माण को जोड़ने के लिए Hudson.model Cause.UpstreamCause
का उपयोग करना आवश्यक है।
कोड के बाद से अधिक संक्षिप्त है:
my-job-step.groovy
:
def scheduleDependentJob(jobName) {
def fooParam = new StringParameterValue('foo', 'bar');
def paramsAction = new ParametersAction(fooParam)
println "Scheduling dependent job"
def currentJob = ???
def cause = new Cause.UpstreamCause(currentBuild)
def causeAction = new hudson.model.CauseAction(cause)
instance.queue.schedule(job, 0, causeAction, paramsAction)
}
CauseAction
निर्माता (http://javadoc.jenkins-ci.org/hudson/model/Cause.UpstreamCause.html पर देखी गई) एक Run
वस्तु है, जो वर्तमान बिल्ड वस्तु का एक उदाहरण होना चाहिए की आवश्यकता है। मुझे ग्रोवी लिपि के अंदर मौजूदा चल रहे नौकरी के निर्माण के लिए एक अच्छा तरीका नहीं मिल रहा है।
मैं YMMV पाया थोड़ा क्या ग्रूवी स्क्रिप्ट कॉल के आधार पर (जैसे ईमेल-एक्सटी-प्लगइन, पोस्ट-बिल्ड एक्शन)। चल रही नौकरियों के साथ 'सक्रिय बिल्ड = थ्रेड.current थ्रेड()। निष्पादन योग्य' काम करता है। पुरानी नौकरियों के साथ जो काम नहीं करता है। पूर्वनिर्धारित var build का उपयोग शायद सबसे अच्छा है अगर यह वहां है। दोनों मामलों में बिल्ड ऑब्जेक्ट प्राप्त करने के लिए आप कुछ कोशिश कर सकते हैं जैसे 'try {c = build.getClass()} पकड़ें (अपवाद पूर्व) {try {build = Thread.currentThread() निष्पादन योग्य} पकड़ें (अपवाद ex2) {println ("ओह प्रिय, कोई बिल्ड ऑब्जेक्ट नहीं।")}} '। – gaoithe