6

से कैसे संपर्क करें मैं स्क्रैच (टोमकैट + स्प्रिंग रेस्ट + जावा) से एक कंपनी बनाने की प्रक्रिया में हूं, इसलिए हमारे पास कुछ चीजें सही करने के लिए लक्जरी है (या सूची में हमारी पिछली गलतियों को दोहराना नहीं है), इनमें से एक जिन लक्ष्यों को हम हासिल करना चाहते हैं वह क्षमता स्वचालित रूप से निर्माण, परीक्षण (इकाई, एकीकरण) & तैनाती है।सीआई

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

मैंने टीमसिटी को सीआई सर्वर के रूप में चुना है क्योंकि मैं इसके साथ कुछ हद तक परिचित हूं और अब तक जेटब्रेन के सभी उत्पादों के साथ मेरा उत्कृष्ट अनुभव रहा है।

अब तक मैं परिभाषित किया है दो निर्माण विन्यास

  1. विकास विवेक: Git से बाहर चेक, डाटाबेस तैयार करने के लिए, की Maven लक्ष्यों को अंजाम डीबी स्क्रिप्ट चलाता साफ स्थापित (ताकि हमारे TestNG सूट निष्पादित किया जा रहा है) , कोड कवरेज और स्थिर कोड विश्लेषण निष्पादित करता है यह कॉन्फ़िगरेशन निष्पादित कर रहा है और बहुत अच्छा है।

  2. एकता: चेक बाहर Git से, डाटाबेस तैयार करने के लिए, स्वच्छ स्थापित की Maven लक्ष्यों पर अमल (ताकि हमारे TestNG सूट निष्पादित किया जा रहा है)

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

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

Btw - एडब्ल्यूएस

धन्यवाद दोस्तों को नियोजित करना।

उत्तर

4

सबसे पहले, मैं आपको निरंतर वितरण (जेज़ नम्र, डेविड फ़र्ले) पढ़ने की पूरी तरह से अनुशंसा करता हूं, इसे इस पर जानकारी का भरपूर धन मिल गया है। sample chapter here है।

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

  1. चरण प्रतिबद्ध - विवेक देव - संकलन, इकाई परीक्षण & कुछ मीट्रिक।यह प्रारंभिक चरण भी बाइनरी पाइपलाइन के बाकी के लिए आवश्यक बनाता है
  2. एकता मंच - इस स्मृति में पिछले चरण (नहीं एक नया चेकआउट) के रूप में ही फ़ाइलें लेता है और चलाता है डाटाबेस एकीकरण परीक्षणों
  3. स्वचालित स्वीकृति परीक्षण चरण - से बाइनरी लेता चरण के लिए प्रतिबद्ध है और एक सर्वर जहाँ हम सेलेनियम परीक्षण चलाने के लिए तैनात
  4. क्यूए चरण - इस क्यूए द्वारा तैनात किया जाता है जो केवलखींचने के लिए एक बटन पर क्लिक करेंजो कुछ भी निर्माण वे चाहते हैं, फिर यह सिर्फ एक क्यूए सर्वर के लिए प्रतिबद्ध मंच से बाइनरी तैनात
  5. UAT - क्यूए लेकिन रूप में एक ही वातावरण जहां हम भी प्रदर्शन परीक्षण करने की तरह एक और अधिक उत्पादन
  6. उत्पादन - प्रतिबद्धता चरण से द्विआधारी लेता है और उत्पादन के लिए तैनाती करता है।
इन चरणों में से

हर एक 'गुणवत्ता गेट' के रूप में कार्य - परीक्षण विफलताओं, मीट्रिक% s आदि कुछ चरणों स्वचालित रूप से प्रवाह दूसरों मैन्युअल ट्रिगर कर रहे हैं - निर्माण आगे प्रगति के लिए जब तक यह कुछ सीमा से गुजरता अनुमति नहीं है। प्रत्येक वातावरण के लिए आवश्यक किसी कॉन्फ़िगरेशन परिवर्तन मूल बाइनरी फ़ाइलों को अनपॅक करके, सेटिंग बदलना, इसे फिर से पैक करना - आदर्श रूप से मैं कॉन्फ़िगरेशन को एप्लिकेशन बाइनरी से अलग करना चाहता हूं लेकिन अभी तक ऐसा करने का कोई तरीका नहीं मिला है।

स्वचालित स्वीकृति परीक्षण चरण बस सर्वर पर एक मौजूदा अनुप्रयोग को अद्यतन करता है - क्यूए चरण एक स्टॉप पूर्ण करता है, अनइंस्टॉल करता है, & प्रारंभ करें। प्रत्येक एक अलग लिपि चलाता है - चींटी & पायथन का संयोजन।

Here's बिल्ड पाइपलाइन प्लगइन के साथ जेनकींस में पाइपलाइन कैसा दिखता है।

[संपादित करें]

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

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

आंकड़े कार्य को चलाने के लिए बहुत लंबा समय लगता है (> 15 मिनट) इसलिए मैं प्रतिबद्धता पर एक सबसेट चलाता हूं और रात भर दौड़ता हूं जो पूरे बहुत सारे Findbugs, पीएमडी, चेकस्टाइल & कोबर्टुरा करता है। मैं इन सब को प्रतिबद्ध करने के बजाय बहुत अधिक चलाऊंगा लेकिन इसके लिए कुछ और हार्डवेयर & किसी प्रकार के निर्माण ग्रिड को स्थापित करने के लिए काम करने की आवश्यकता होगी।

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

यह अच्छा है कि जेनकिन्स प्लगइन के माध्यम से बहुत सारे का समर्थन करता है - हम एटलसियन बांस से चले गए क्योंकि हम जो चाहते थे वह अधिकांश उपलब्ध नहीं था और मौजूदा प्लगइन्स काम नहीं करेंगे या बांस संस्करण के साथ संगत नहीं थे। मैंने थोड़ी देर के लिए टीम सिटी का उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि यह 'पाइपलाइन' [aparently not] के इस विचार का समर्थन करता है या नहीं। 'बिल्ड पाइपलाइन' प्लगइन काफी नया है और इसमें कुछ मोटा किनारा है लेकिन सक्रिय विकास में है - मुझे लगता है कि जेनकिन्स के 'प्रचारित बिल्ड' & टचस्टोन के निर्माण के साथ ऐसा करना संभव है लेकिन इसका प्रयास नहीं किया है। यदि आपके पास पर्याप्त संसाधन हैं (पैसा!) तो आप Go

+0

देख सकते हैं कि यह एक अच्छा और अच्छी तरह से परिभाषित दृष्टिकोण जैसा दिखता है, इसे लागू करने के लिए आपको कितने समय लगे? और क्या आप सेलेनियम परीक्षण (एक अलग परियोजना?) और तैनाती को लागू करने के तरीके के बारे में थोड़ा अधिक तकनीकी रूप से विशिष्ट हो सकते हैं? – Amnon

+0

जैसा कि मैंने कहा - 'मैंने कार्यान्वित करना शुरू कर दिया है' - इसलिए यह अभी तक पूरा नहीं हुआ है - मैं कुछ और जानकारी के साथ अपना उत्तर अपडेट करूंगा। – blank

+0

क्या आपने कभी इसे समाप्त किया था? यह देखना दिलचस्प होगा कि आपने इसे कैसे हासिल किया। –

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