2013-09-23 14 views
7

है तो मेरे पास मल्टीजोब प्रोजेक्ट है (जेनकिन्स मल्टीजोब प्लगइन के साथ बनाया गया है), मल्टीजोब चरणों की श्रृंखला के साथ। मान लें कि इन नौकरियों में से एक को SubJob01 कहा जाता है। बनाई गई नौकरियां प्रत्येक को एक नोड से बंधने के लिए "इस परियोजना को कहां चलाया जा सकता है" विकल्प के साथ कॉन्फ़िगर किया गया है। SubJob01 Slave01 से जुड़ा हुआ है।जब जेडकिन्स ऑफ़लाइन

मुझे यह अच्छा लगेगा कि नोड ऑफ़लाइन होने पर ये नौकरियां तेजी से विफल हो जाएंगी, "(लंबित-गुलाम 01 ऑफ़लाइन है)"। विशेष रूप से, मैं चाहता हूं कि SubJob01 में निर्माण प्रयास का रिकॉर्ड बनें, निर्माण को असफल के रूप में चिह्नित किया जा रहा है। इस तरह, मैं अपनी मल्टीजोब प्रोजेक्ट को पूरी तरह से बंद करने के लिए जेनकींस बिल्ड टाइमआउट प्लगइन का उपयोग करने की बजाय स्थिति को संभालने के लिए कॉन्फ़िगर कर सकता हूं।

क्या कोई भी विफल होने के तरीके के बारे में जानता है-अगर सभी नोड ऑफ़लाइन हैं तो एक बिल्ड तेज करें? मैं सिस्टम ग्रोवी स्क्रिप्ट्स के साथ मल्टीजोब प्रोजेक्ट को घुसपैठ कर सकता हूं ताकि यह जांच सके कि वांछित नोड ऑफ़लाइन हैं या नहीं, लेकिन ऐसा लगता है कि यह गलत जगह पर, पहले से ही एक सुविधा होनी चाहिए।

+0

मैं मौजूदा कि यह कर देगा कार्यक्षमता का पता नहीं है, लेकिन आप केवल एक खोल निष्पादन योग्य कदम है कि करने की कोशिश करता जोड़ सकता है स्लेव के बंदरगाह (22) के लिए टेलनेट? – JamesE

उत्तर

1

मैं इस समाधान को तैयार करना समाप्त कर दिया जिसने अच्छी तरह से काम किया है। SubJob01 के पहले निर्माण कदम एक प्रणाली ग्रूवी स्क्रिप्ट निष्पादित है, और इस स्क्रिप्ट है:

import java.util.regex.Matcher 
import java.util.regex.Pattern 

int exitcode = 0 
println("Looking for Offline Slaves:"); 
for (slave in hudson.model.Hudson.instance.slaves) { 
if (slave.getComputer().isOffline().toString() == "true"){ 
println(' * Slave ' + slave.name + " is offline!"); 
    if (slave.name == "Slave01") { 
    println(' !!!! This is Slave01 !!!!'); 
    exitcode++; 
    } // if slave.name 
    } // if slave offline 
} // for slave in slaves 

println("\n\n"); 
println "Slave01 is offline: " + hudson.model.Hudson.instance.getNode("Slave01").getComputer().isOffline().toString(); 
println("\n\n"); 

if (exitcode > 0){ 
println("The Slave01 slave is offline - we can not possibly continue...."); 
println("Please contact IT to resolve the slave down issue before retrying the build."); 
return 1; 
} // if 

println("\n\n"); 
संबंधित मुद्दे