2009-08-02 9 views
12

मैं हाल ही में बिल्डबॉट में देख रहा हूं, और अच्छी प्रलेखन और नमूना विन्यास की कमी को समझना मुश्किल हो जाता है कि बिल्डबॉट का सामान्य रूप से उपयोग कैसे किया जाता है।किसी कंपनी में बिल्डबॉट को स्केल करने के लिए कैसे करें

बिल्डबॉट मैनुअल के अनुसार, प्रत्येक बिल्डमास्टर 1 कोड बेस के लिए ज़िम्मेदार है। इसका मतलब है कि एक कंपनी जो बिल्डबॉट का उपयोग करना चाहती है, कहें, 10 परियोजनाओं को बिल्डबॉट इंस्टॉलेशन के 10 अलग-अलग सेट बनाए रखने की आवश्यकता है (मास्टर-गुलाम कॉन्फ़िगरेशन, ओपन पोर्ट्स, आउटपुट आदि वाली वेबसाइटें)। क्या वाकई यह काम किया जाता है? क्या मुझे एक विकल्प याद आ रहा है जो मैश-अप बनाता है जो बनाए रखना और निगरानी करना आसान है?

धन्यवाद!

+1

एफडब्ल्यूआईडब्ल्यू, वर्तमान में मोज़िला परियोजना द्वारा प्रायोजित बिल्डबॉट स्केलिंग को बेहतर बनाने के लिए काम चल रहा है। (कौन _very big_ buildmaster चलाता है)। विवरण के लिए बिल्डबॉट मेल सूची देखें। – Macke

उत्तर

4

काम के मेरे स्थान पर हम बिल्डबॉट का उपयोग कई आर्किटेक्चर और पायथन के संस्करणों पर एक कार्यक्रम का परीक्षण करने के लिए करते हैं। मैं 16 बिल्डों की देखरेख करने के लिए एक बिल्ड मास्टर का उपयोग करता हूं। दासों का प्रत्येक सेट एक अलग रेपो से खींचता है और इसे पायथन 2.X के खिलाफ परीक्षण करता है।

मेरे अनुभव से, परियोजनाओं के मैश-अप को चलाने के लिए एक एकल निर्माण मास्टर को कॉन्फ़िगर करना आसान होगा। यह एक अच्छा विचार नहीं हो सकता है क्योंकि झरना पृष्ठ (जहां निर्माण दास रिपोर्ट परिणाम) कुछ गुलामों से अधिक घिरा हो सकता है। यदि आप लंबे झरने वाले पृष्ठ के माध्यम से आरामदायक स्क्रॉल कर रहे हैं, तो यह कोई मुद्दा नहीं होगा।

संपादित करें:

अद्यतन आदेश master.cfg में:

test_python26_linux.addStep(ShellCommand, name = "update pygr", 
    command = ["/u/opierce/PygrBuildBot/update.sh","000-buildbot","ctb"], workdir=".") 

000-buildbot और CTB जो शाखा और रेपो से खींचने के लिए जानकारी प्राप्त करने के निर्दिष्ट करने के लिए अतिरिक्त पैरामीटर हैं। स्क्रिप्ट update.sh कुछ ऐसा है जो मैंने एक असंबंधित गिट समस्या से बचने के लिए लिखा था। यदि आप विभिन्न परियोजनाओं को चलाने के लिए चाहते थे, तो आप कुछ लिख सकते हैं:

builder1.addStep(ShellCommand, name = "update project 1", 
    command = ["git","pull","git://github.com/your_id/project1.git"], workdir=".") 

(the rest of builder1 steps) 

builder2.addStep(ShellCommand, name = "update project 2", 
    command = ["git","pull","git://github.com/your_id/project2.git"], workdir=".") 

(the rest of builder2 steps) 

दो परियोजनाओं से संबंधित नहीं होना चाहिए। Buildbot प्रत्येक निर्माता के लिए एक निर्देशिका बनाता है और उस निर्देशिका में सभी चरणों को चलाता है।

+0

मास्टर कॉन्फ़िगरेशन केवल दास को टर्मिनल कमांड की श्रृंखला चलाने के लिए कहता है। एक अलग संस्करण या अलग परियोजना चलाने के लिए, आप इसे एक अलग रेपो से खींचने के लिए कहें। क्योंकि आप प्रत्येक दास के लिए आदेशों को वैयक्तिकृत कर सकते हैं, आप प्रत्येक दास को एक अलग संस्करण/परियोजना/जो कुछ भी चला सकते हैं। –

+0

नहीं, यह जो मैं कह रहा हूं उसके विपरीत है। एक भंडार से खींचना और वास्तविक समय निर्माण करना निरंतर एकीकरण के पीछे विचार है। हम संस्करण नियंत्रण के लिए गिट का उपयोग करते हैं। –

+0

मुझे अंत में समझ में आया कि इसका मतलब क्या है, और यह वास्तव में एक अच्छा विचार है। केवल देने के लायक नोट - हमने श्रेणियों का उपयोग करने का निर्णय लिया है, ताकि हम अब उन श्रेणियों के अनुसार झरना दृश्य को विभाजित कर सकें, और इसलिए प्रत्येक डेवलपर केवल उन परियोजनाओं को देखता है जो उन्हें रूचि देते हैं। – abyx

3

एफवाईआई, बिल्डबॉट 0.8.x एक मास्टर पर कई रिपॉजिटरीज़ का समर्थन करता है, जो चीजों को थोड़ा सा सरल बनाता है।

+1

आप एक [संबंधित प्रश्न] में एक उदाहरण देख सकते हैं (http://stackoverflow.com/questions/2795386/support-for- बहु-खजाने का इस्तेमाल करने वाली-buildbot/7148534 # 7148534) – hithwen

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