2016-05-19 18 views
5

के साथ समांतर दौड़ में परीक्षण करने के लिए मेरे पास कई (कुछ सैकड़ों) फ़ाइलें हैं (प्रत्येक परीक्षण में कुछ मिनट लगते हैं)।जेनकिंस

अनुक्रमिक रूप से चलाना स्वीकार्य नहीं है और न ही सभी एक साथ। तो मैं निर्माता-उपभोक्ता की तरह कुछ ढूंढ रहा हूं।

def files = findFiles glob: 'test_files/*' 
def branches = [:] 

files.each{ 
    def test_command = "./test ${it}" 
    branches["${it}"] = { sh "${test_command} ${it}"} 
} 

stage name:'run', concurrency:2 
parallel branches 

समस्या::

मैं पाइपलाइन नौकरियों और समानांतर आदेश के बाद जिस तरह से करने की कोशिश की

सभी कार्य एक ही समय में लांच (OOM और सब मज़ा) कर रहे हैं

उत्तर

0

doesn ' टी जेनकींस समानांतर चरण के समान आत्मनिरीक्षण नहीं है, लेकिन ऐसा लगता है कि एक निश्चित पूल का समर्थन नहीं करने के लिए आप xargs का उपयोग उसी परिणाम को प्राप्त करने के लिए कर सकते हैं:

def files = findFiles glob: 'test_files/*' 
def branches = [:] 

// there's probably a more efficient way to generate the list of commands 
files.each{ 
    sh "echo './test ${it}' >> tests.txt" 
} 

sh 'cat tests.txt | xargs -L 1 -I {} -P 2 bash -c "{}"' 

-P तर्क वह है जो निश्चित संख्या 2 (या एन) प्रक्रियाओं को निर्दिष्ट करता है हमेशा चलाना चाहिए। जीएनयू समांतर जैसे अन्य टूल्स भी कितनी प्रक्रियाओं का उपयोग किया जाना चाहिए इस पर और भी ट्यूनिंग प्रदान करते हैं।

आप Lockable Resources plugin से lock चरण का उपयोग करने का प्रयास भी कर सकते हैं, node एक निश्चित संख्या में निष्पादकों को लक्षित करने के चरण। हालांकि यह मेरे लिए बहुत अधिक ओवरहेड लगता है जब तक कि आपके एकल परीक्षण पहले से ही दूसरे के दसियों को नहीं ले रहे हैं।