2011-10-25 13 views
9

मेरे पास एक ऐसा कार्य है जो लेबल पर आधारित n मशीनों पर निष्पादित करता है। अगर किसी कारण से, इनमें से कुछ मशीन ऑफ़लाइन हैं, तो मैं नहीं चाहता कि जेनकिन्स उन्हें कतार में डाल दें, और जब तक वे ऑनलाइन न हों तब तक प्रतीक्षा करें। मैं जेनकिन्स को शेष मशीनों पर नौकरी निष्पादित करना और नौकरी को पूरा करना चाहता हूं। कोई सुझाव?जेनकींस: अगर नोड ऑफ़लाइन है तो छोड़ें

संपादित करें 1: मैंने महसूस किया कि काम सभी मशीनों से जुड़ा हुआ है: Screenshot

मैं क्योंकि मैं सभी मशीनों पर एक साथ चलाने के लिए यह काम की जरूरत यह करने के लिए मजबूर किया गया। तो, मेरा सवाल वही बना हुआ है। अगर इनमें से कुछ मशीन ऑफ़लाइन हैं, तो मैं प्रतीक्षा/कतार के बजाय, उन पर नौकरी छोड़ना चाहूंगा।

संपादित करें 2: जेनकींस CLI एक स्पष्ट कतार आदेश है। ऐसा लगता है कि उस समय के लिए आशाजनक है।

+0

मैट्रिक्स प्रोजेक्ट को ऑफलाइन नोड्स को छोड़ने की इजाजत देने के लिए मैंने जेनकींस पर एक फीचर अनुरोध खोला है: [https://issues.jenkins-ci.org/browse/JENKINS-29380 ](https://issues.jenkins-ci.org/ ब्राउज़ करें/जेनकिन्स -29380)। यदि आपको वही चाहिए तो कृपया इसे ऊपर उठाएं। –

उत्तर

0

यदि कार्य इस तरह से जुड़ा हुआ है कि यह केवल एक विशेष नोड पर चलता है, तो यह अन्य मशीनों पर इसे चलाने में सक्षम नहीं होगा।

यदि ऐसा नहीं है तो कार्य किसी भी उपलब्ध निष्पादक पर चलाएगा, यह डिफ़ॉल्ट व्यवहार है।

तो यह देखने के लिए जांचें कि क्या कार्य अन्य नोड्स पर चल सकता है नौकरी पर जाएं> कॉन्फ़िगर करें और निम्न की सेटिंग जांचें।

enter image description here

उस कार्य पर अक्षम है, तो आप नोड्स कि वे किसी भी नौकरियों इस नोड सेटिंग के तहत पाया जा सकता है स्वीकार की जाँच करने की आवश्यकता होगी। इसे निम्नलिखित की तरह पढ़ना चाहिए।

enter image description here

गुडलक।

+0

क्षमा करें, आपका उत्तर पढ़ने के बाद, मैंने कॉन्फ़िगरेशन की जांच की है। मैं वास्तव में सभी मशीनों पर एक साथ चलाने के लिए मजबूर करने के लिए, इस मशीन को सभी मशीनों को बांधता हूं। – publicRavi

+0

@publicRavi अच्छी तरह से अगर यह सही जवाब के रूप में चिह्नित करने में मदद करता है तो दूसरों को पता है। – myusuf3

+0

मुझे नहीं लगता कि यह एक मैट्रिक्स प्रोजेक्ट की समस्या को हल करता है जो ऑफ़लाइन नोड के एक्सिस पर फंस जाता है (जब तक नोड वापस नहीं आ जाता है तब तक कतार में प्रतीक्षा करता है)? –

7

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

def axis = [] 
for (slave in hudson.model.Hudson.instance.slaves) { 
if (slave.getComputer().isOnline().toString() == "true") { 
    axis += slave.name 
} 
} 
return axis 

अद्यतन: के बाद से जेनकींस 2.0 नोड एपीआई है बदल दिया गया है, तो Node.toComputer (बजाय का उपयोग करें): http://javadoc.jenkins-ci.org/hudson/model/Node.html#toComputer%28%29

def axis = [] 
for (slave in jenkins.model.Jenkins.instance.getNodes()) { 
if (slave.toComputer().isOnline()) { 
    axis += slave.getDisplayName() 
} 
} 
return axis 
+0

ध्यान दें कि इस सूची में मास्टर शामिल नहीं होगा। यदि आप चाहते हैं कि आपको इसे जोड़ना है, उदा। 'def axis = ['master'] के साथ' def axis = [] 'को बदलना। –

+0

चूंकि यह ग्रोवी में चल रहा है, आप बस 'jenkins.model.Jenkins.instance.nodes' कह सकते हैं – jpyams

संबंधित मुद्दे