2008-08-02 9 views
48

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

मुझे एहसास है कि मैं इसे अधिकांश वीसीएस में हुक के साथ कर सकता हूं, लेकिन इसके लिए यह आवश्यक है कि परीक्षण उसी मशीन पर संस्करण नियंत्रण सर्वर के रूप में चलें, जो कि मैं चाहूंगा उतना सुरुचिपूर्ण नहीं है। क्या किसी को पाइथन कोडबेस के लिए उपयुक्त एक छोटे, उपयोगकर्ता के अनुकूल, खुले स्रोत निरंतर एकीकरण प्रणाली के लिए कोई सुझाव है?

उत्तर

25

हम काम पर Buildbot - Trac चलाने के लिए, मैं इसे बहुत ज्यादा इस्तेमाल नहीं किया है के बाद से मेरी कोड आधार नहीं है अभी तक रिलीज चक्र का हिस्सा है। लेकिन हम विभिन्न वातावरण (ओएसएक्स/लिनक्स/विन) पर परीक्षण चलाते हैं और यह ईमेल भेजता है - और यह पायथन में लिखा गया है।

26

एक संभावना हडसन है। यह जावा में लिखा है, लेकिन वहाँ पायथन परियोजनाओं के साथ एकीकरण है:

Hudson embraces Python

मैं इसे अपने आप कभी नहीं की कोशिश की है लेकिन,।

(अद्यतन, सितम्बर 2011:। एक ट्रेडमार्क विवाद के बाद हडसन Jenkins को नाम दिया गया है)

+3

@Joe, जी GitHub पर होस्ट किया जाना है ओओडी सिफारिश। @ मैट इस तथ्य को न दें कि जावा में हडसन लिखा गया है यदि आप एक अजगर आदमी हैं तो आपको डरते हैं। सेटअप और चलाने के लिए यह आसान है। यह पिलिंट और cover.py के साथ एकीकृत करता है। मैंने इसे अपनी परियोजनाओं पर चल रहा है और इसे प्यार किया है। बिल्डबॉट यह आसान तरीका है। इसे स्थापित करने और हडसन चलाने के लिए यह एक आदेश है। जावा -jar hudson.war यह सबसे अच्छा पोस्ट है जिसे मैंने इसे स्थापित करने के लिए देखा है: http://www.rhonabwy.com/wp/2009/11/04/setting-up-a-python-ci -सर्वर-साथ-हडसन/ –

+3

जावा में लिखा गया हडसन उतना ही प्रासंगिक है जितना आप सी ++ में लिखे गए संपादक का उपयोग करते हैं! यह सिर्फ एक बहुत अच्छी तरह लिखित, आसान सेटअप और आम तौर पर पूरी तरह से विशेष रुप से प्रदर्शित सीआई उपकरण है। पाइथन बहुत अच्छी तरह से एकीकृत किया जा सकता है, 'nosetests --with-xunit --with-cover', "उल्लंघन" प्लगइन के साथ पिलिंट, और कवरेज के लिए "कोबर्टुरा" – dbr

+1

@dbr: पूरी तरह से सत्य नहीं है। जिस भाषा में लिखा गया है वह अक्सर उस सॉफ़्टवेयर को प्रभावित करता है जो यह सर्वोत्तम रूप से काम करता है ... विशेष रूप से बिल्ड सिस्टम। जब मैंने 2 साल पहले हडसन को देखा तो वह केवल यूनिट परीक्षण आउटपुट चाहता था जो जुनीट के एक्सएमएल प्रारूप में था; मेरे पायथन यूनिट टेस्ट सूट ने ऐसा नहीं किया।लेकिन अगर मेरी परियोजना जावा में थी, तो यह बॉक्स से बाहर काम करता। किसी भी मामले में, ऐसा लगता है कि तब से एकीकरण दोनों हडसन और पायथन के औजारों में एक लंबा सफर तय कर चुका है, और मैं इसके लिए आभारी हूं। –

17

दूसरा बिल्डबॉट - ट्रैक एकीकरण। आप Buildbot website पर एकीकरण के बारे में अधिक जानकारी प्राप्त कर सकते हैं। मेरे पिछले काम पर, हमने उन प्लगइन को लिखा और इस्तेमाल किया जो वे उल्लेख करते हैं (tracbb)। प्लगइन क्या करता है सभी बिल्डबॉट यूआरएल को फिर से लिख रहा है ताकि आप ट्रेक के भीतर से बिल्डबॉट का उपयोग कर सकें। (http://example.com/tracbb)।

बिल्डबॉट के बारे में वास्तव में अच्छी बात यह है कि कॉन्फ़िगरेशन पायथन में लिखा गया है। आप कॉन्फ़िगरेशन पर सीधे अपने पाइथन कोड को एकीकृत कर सकते हैं। विशिष्ट कार्यों को निष्पादित करने के लिए अपने स्वयं के BuildSteps लिखना भी बहुत आसान है।

हमने एसवीएन से स्रोत प्राप्त करने के लिए बिल्डस्टेप्स का उपयोग किया, निर्भरताओं को खींचें, परीक्षण परिणामों को वेबएडीवी, आदि को प्रकाशित करें।

मैंने एक एक्स 10 इंटरफेस लिखा ताकि हम निर्माण परिणामों के साथ सिग्नल भेज सकें। जब निर्माण विफल हुआ, हम एक लाल लावा दीपक पर स्विच किया। जब निर्माण सफल हुआ, तो एक हरा लावा दीपक चालू हो गया। अच्छा समय :-)

17

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

बिल्डबॉट की कॉन्फ़िगरेशन शुद्ध पायथन है और इसे लटकने के बाद काफी सरल है (सबसे वर्तमान जानकारी के लिए epydoc- जेनरेट किए गए एपीआई दस्तावेज़ देखें)। बिल्डबॉट गैर-परीक्षण कार्यों को परिभाषित करना और परीक्षकों को वितरित करना आसान बनाता है। हालांकि, इसमें वास्तव में व्यक्तिगत परीक्षणों, केवल पाठ, एचटीएमएल, और सारांश आउटपुट की कोई अवधारणा नहीं है, इसलिए यदि आप बहु-स्तर के ब्राउज़ करने योग्य परीक्षण आउटपुट चाहते हैं और आगे भी आपको इसे स्वयं बनाना होगा, या केवल हडसन का उपयोग करना होगा।

हडसन के परीक्षण परिणामों और व्यक्तिगत परीक्षणों में समग्र परिणामों से ड्रिलिंग के लिए बहुत ही भरोसेमंद समर्थन है; यह बिल्ड के बीच परीक्षण आउटपुट की तुलना करने के लिए भी बहुत अच्छा है, लेकिन वितरित (मास्टर/गुलाम) सामान तुलनात्मक रूप से अधिक जटिल है क्योंकि आपको दासों पर भी जावा पर्यावरण की आवश्यकता है; भी, हडसन मास्टर और गुलामों के बीच फ्लैकी नेटवर्क लिंक से कम सहनशील है।

तो, दोनों टूल्स के लाभ प्राप्त करने के लिए, हम हडसन का एक उदाहरण चलाते हैं, जो सामान्य परीक्षण असफलताओं को पकड़ता है, फिर हम बिल्डबॉट के साथ बहु-मंच प्रतिगमन करते हैं।

+0

'ज्योथन हडसन' काम नहीं करता – jfs

+0

इसके बारे में खेद है, मैं इसे बनाए रखता हूं :-) –

7

हम Bitten जो प्रयोग कर रहे हैं Trac के साथ एकीकृत है:

यहाँ हमारे उदाहरण हैं। और यह पाइथन आधारित है।

6

टीमसिटी में कुछ पायथन integration है।

लेकिन TeamCity है:

  • नहीं खुला स्रोत
  • छोटा नहीं है, बल्कि अमीर
  • छोटे मध्य टीमों के लिए नि: शुल्क है शामिल हैं।
5

मेरे पास छोटे कोड अड्डों के लिए Travis-CI के साथ बहुत अच्छे अनुभव हैं। मुख्य लाभ हैं:

  • सेटअप आधे से भी कम कॉन्फ़िग फ़ाइल का एक स्क्रीन
  • आप अपने खुद के स्थापना मुक्त की मेजबानी संस्करण कर सकते हैं या बस का उपयोग
  • अर्द्ध स्वचालित GitHub खजाने के लिए सेटअप में किया जाता है
  • वेबसाइट पर कोई खाता आवश्यक नहीं है; GitHub के माध्यम से प्रवेश

कुछ सीमाएं:

  • अजगर लेखन के समय के रूप में एक प्रथम श्रेणी के भाषा के रूप में समर्थित नहीं है (लेकिन आप पिप उपयोग कर सकते हैं और अजगर निर्भरता स्थापित करने के लिए apt-get; देखना this tutorial)

  • कोड (कम से कम सरकारी संस्करण का उपयोग करते समय)

+0

पायथन अब ट्रैविस सीआई में पूरी तरह से समर्थित है: http://about.travis-ci.org/blog/announcing_python_and_perl_support_on_travis_ci/ –