निरंतर एकीकरण सेवा के लिए "क्लीन स्लेट सिस्टम" सुनिश्चित करने का प्रभावी तरीका


10

हम अपनी परियोजना के लिए एक सतत एकीकरण (CI) सेवा स्थापित करना चाहते हैं। सीआई सेवा को तैनाती सहित परियोजना के जीवन के सभी पहलुओं को नियंत्रित करना चाहिए।

यही है, हम चाहते हैं कि प्रत्येक पुनरावृत्ति पर एक सीआई एजेंट एक साफ प्रणाली (विशेष रूप से Ubuntu सर्वर) लेने के लिए, हमारी परियोजना को वहां तैनात करे और परीक्षण चलाए।

हम शायद अपने आप को CI सेवा लिखेंगे, खरोंच से, क्योंकि हमारा पारिस्थितिकी तंत्र असामान्य नहीं है। सवाल यह है: प्रत्येक CI पुनरावृत्ति के लिए प्रभावी रूप से स्वच्छ स्लेट प्रणाली कैसे प्रदान करें?

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

मैं दो तरीके देखता हूँ कि हमें क्या करना है:

  • या तो किसी प्रकार की जेल स्थापित करें (जैसे कि lxc, शायद)।
  • या कुछ आभासी मशीन स्थापित करें जो स्नैपशॉट कर सकते हैं, और उनका उपयोग कर सकते हैं।

लेकिन इस बिंदु पर मुझे निर्णय लेने के लिए पर्याप्त जानकारी नहीं है।

आप क्या सलाह देंगे? कोई अन्य विकल्प? कोई विशिष्ट उपकरण नाम?

नोट: CI सेवा एक Citrix XenServer अतिथि के अंदर चलाई जाएगी। यदि कीमतें उचित हैं, तो भुगतान किए गए समाधान ठीक हैं। (आमतौर पर वे इस क्षेत्र में उचित नहीं हैं।) रिमोट सीआई समाधान ठीक नहीं है।

जवाबों:


5

शेफ / वैग्रैंट पर एक नज़र डालें । यकीन नहीं है कि यह काफी तेजी से होगा, लेकिन देखने के लिए कुछ।

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

वैग्रैंट, वेवी, शेफ-सोलो और नाइफ-सोलो सामान मुझे लगता है कि यह सबसे ज्यादा कवर करता है जो आप करना चाहते हैं।

वैग्रांट ब्लॉग पोस्ट एक ब्लॉग पोस्ट जो वैग्रांट का उपयोग करके सर्वर का त्वरित सेटअप दिखा रहा है।


धन्यवाद। क्या आप अपने उत्तर में अधिक जानकारी प्रदान करने की परवाह करते हैं?
अलेक्जेंडर ग्लैडीश

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

13

जेनकिंस पर एक नजर है । इसमें प्लगइन्स हैं जो आपको VMWare या VirtualBox में या अमेज़न / यूकलिप्टस क्लाउड में वर्चुअल मशीनों में बिल्ड चलाने की अनुमति देते हैं । क्लाउड में चलने वाली वर्चुअल मशीनों के लिए, आप एक इनइट स्क्रिप्ट को निर्दिष्ट कर सकते हैं, जहाँ आप पैकेज स्थापित करने जैसे कदम उठा सकते हैं।


धन्यवाद, लेकिन जेनकिन्स एक सीआई-सर्वर है और मैं खुद को बनाने के साधनों के बारे में जानना चाहूंगा।
अलेक्जेंडर ग्लैडीश

2
@AlexanderGladysh आप पहिया को क्यों मजबूत करना चाहते हैं? जेनकिन्स बिल्ड, फाइलों को प्लेन शेल स्क्रिप्ट्स से बनाने के लिए सब कुछ चला सकता है, साथ ही इसमें एक मजबूत इंटरफ़ेस, बढ़िया सपोर्ट और बहुत सारे प्लग इन हैं। यहां तक कि अगर अपने निर्माण बहुत जटिल है, यह एक खोल स्क्रिप्ट कहीं जो जेनकींस चला सकते हो गया है
TheLQ

यहां तक ​​कि अगर आप जेनकिंस का उपयोग नहीं करना चाहते हैं, तो मुझे लगता है कि कुछ क्लाउड-आधारित आपके लिए जाने का रास्ता होगा। आप अपनी इच्छित सॉफ़्टवेयर प्रदान करने के लिए मशीन की छवि को अनुकूलित कर सकते हैं और केवल स्टार्ट-अप समय को कम करने के लिए इंस्टेंस को शुरू करते समय परीक्षण के लिए कॉन्फ़िगरेशन और कोड जोड़ सकते हैं।
लार्स कोथॉफ

वैसे भी, जेनकिंस या नो जेनकिन्स, जल्दी से साफ स्लेट ओएस स्नैपशॉट प्राप्त करने के लिए क्या उपयोग करना है? (कृपया, तृतीय-पक्ष बादलों का उल्लेख करना बंद करें - इसे हमारे स्वयं के सर्वर पर चलाया जाना चाहिए।)
अलेक्जेंडर ग्लैडिस

अपने स्वयं के सर्वर पर एक नीलगिरी / ओपनस्टैक / ... क्लाउड चलाएं?
लार्स कोथॉफ

2

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

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

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


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

इसके अलावा, कृपया "वीएम इन्फ्रास्ट्रक्चर का उपयोग करें और एक बेस टेम्पलेट बनाएं" के बारे में विस्तार से बताएं।
अलेक्जेंडर ग्लैडिस

2

हम अपनी परियोजना के लिए एक सतत एकीकरण (CI) सेवा स्थापित करना चाहते हैं। सीआई सेवा को तैनाती सहित परियोजना के जीवन के सभी पहलुओं को नियंत्रित करना चाहिए।

जेनकिंस का उल्लेख काफी कम लोगों ने किया है। आप स्क्रिप्ट के साथ ग्राउंड-अप कर सकते हैं, लेकिन जेनकिन्स आपको कम ओवरहेड के साथ एक समान लचीलापन प्रदान करेगा।

यही है, हम चाहते हैं कि प्रत्येक पुनरावृत्ति पर एक सीआई एजेंट एक साफ प्रणाली (विशेष रूप से Ubuntu सर्वर) लेने के लिए, हमारी परियोजना को वहां तैनात करे और परीक्षण चलाए।

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

यह वह जगह है जहाँ आभासी मशीन चित्र काम में आते हैं। आप अपनी स्वच्छ छवि को सेट कर सकते हैं और हर मशीन का एक कांटा लॉन्च कर सकते हैं। मूल छवि कभी भी संशोधित नहीं होती है, लेकिन आपके परीक्षण से अंतर नहीं पता चलेगा। आपको निश्चित रूप से एक मिनट के समय में बूटस्ट्रैप छवि प्राप्त करने में सक्षम होना चाहिए।

यदि कीमतें उचित हैं, तो भुगतान किए गए समाधान ठीक हैं। (आमतौर पर वे इस क्षेत्र में उचित नहीं हैं।) रिमोट सीआई समाधान ठीक नहीं है।

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


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

@AlexanderGladysh यदि आप कई मशीनों का उपयोग कर रहे हैं / CI काम के बहुत से बनाने के लिए उपयोग कर रहे हैं। यदि आपके पास कम से कम 3 मशीनों के क्लस्टर को वारंट करने के लिए पर्याप्त कार्यभार नहीं है तो यह बेकार है।
जेफ फेरलैंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.