2008-10-10 7 views
8

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

तब जब हमने अपने तरीकों की त्रुटियों को सीखना शुरू किया, तो हमने समर्पित बिल्ड मशीन पर पूरे एप्लिकेशन को स्वत: बनाने का एक तरीका तलाश लिया। उस समय की संस्कृति बाहरी उपकरणों को लाने के लिए बहुत विपरीत थी, इसलिए हमने वीबी ऐप लिखकर अपना खुद का ऑटोबल्ड सिस्टम बनाया।

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

अब मैं ऐसी स्थिति में हूं जहां मैं इस प्रक्रिया को बदल सकता हूं, और मैं पूरी प्रणाली को स्क्रैप करना चाहता हूं और इसके स्थान पर कुछ और डाल रहा हूं। मेरे लक्ष्य हैं:

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

आपके अनुभव क्या हैं? क्या आप एक ऑटोबल्ड सिस्टम की सिफारिश कर सकते हैं? क्या मेरे पास अलग-अलग लक्ष्य होना चाहिए?

उत्तर

4

यदि आप माइक्रोसॉफ्ट स्टैक पर हैं तो निश्चित रूप से एमएसबिल्ड में देखें।

जोएल हमेशा चल रहा है और FinalBuilder कितना शानदार है, इसलिए यह भी एक लायक हो सकता है।

5

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

+0

+1, मैं अपनी कंपनी के बिल्ड इंजीनियर के रूप में चांदनी का उपयोग करता हूं और मैं इसे रात के निर्माण (कई उत्पादों पर लगभग 300+ हैंडसेट) के लिए उपयोग करता हूं और इसे रिलीज बिल्ड के लिए भी उपयोग करता हूं। – omermuhammed

+1

आइकॉनिक रूप से, अब मैं हडसन पर स्विच कर चुका हूं :) आईएमओ, यह सीसी की तुलना में बहुत अधिक पॉलिश है और विभिन्न परियोजना प्रकारों को स्थापित करने में बहुत आसान है। बिल्डबॉट के लिए – workmad3

1

एमएस विजुअल स्टूडियो के साथ दिए गए टूल्स के रूप में आप एमएसबिल्ड का उपयोग करना चाहेंगे। MSBuild के लिए अतिरिक्त Community टूलसेट आपको सबवर्सन और ज़िप आउटपुट से चेकआउट कोड की संभावना भी प्रदान करेंगे।

हम इसे सफलतापूर्वक हमारी कंपनी में उपयोग कर रहे हैं। परियोजनाओं में 100+ सबप्रोजेक्ट्स के साथ कई समाधान होते हैं। एक जादू की तरह काम करता है।

1

Visual Build Pro अच्छा है, अगर आपकी बिल्ड मशीनें विंडोज हैं। मुझे लगता है कि यह आपके पास क्यूए की आवश्यकता के अनुसार सिस्टम की आवश्यकता को भर देगा। लेकिन मुझे गलत मत समझो, यह बहुत शक्तिशाली है।

4

हम सिर्फ पर्ल स्क्रिप्ट के एक हाथ से लुढ़काए सेट से Buildbot सेटअप में माइग्रेट हुए। मैंने इसे पाया क्योंकि यह Google's using for Chrome है।

आप नाइटलीज़ कर सकते हैं, या जब भी कोई चेकइन करता है, या कई अन्य चीजें करता है तो यह अलग-अलग परीक्षण निर्माण करने के लिए स्रोत नियंत्रण के साथ एकीकृत कर सकता है। यह भी समानांतर है; आपके पास बिल्डिंग फार्म में एक से अधिक मशीन हो सकती हैं, या तो विशेष कर्तव्यों के लिए या अधिक लोड को संभालने के लिए।

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

बॉक्स में से यह most OSS source control tools का समर्थन करता है, लेकिन यदि आप टीएफएस या कुछ और का उपयोग कर रहे हैं तो आपको दास मशीनों पर स्थापित पैकेज को संशोधित करने की आवश्यकता हो सकती है।

+0

+1! मैंने हाल ही में क्रूज़ कंट्रोल से बीबी तक स्विच किया है, फायदे कई हैं (आसान कॉन्फ़िगरेशन, मनमानी लॉग फाइलों का ट्रैक रखता है, आसान डिबगिंग, कॉमिकल आईआरसी कंट्रोल बॉट ...) – richq

2

मुझे लगता है कि आप यहां सही रास्ते पर हैं।

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

आपको लोगों या टीमों के बीच निर्माण के लिए ज़िम्मेदारी साझा करने की आवश्यकता हो सकती है इस। मैं कहूंगा कि एक दैनिक निर्माण एक "टीम जिम्मेदारी" है।

मैं बेसलाइन बिल्ड कॉन्फ़िगरेशन स्थापित करना चाहता हूं जिसे "विशेष उपयोग" बिल्ड (केवल रिलीज़ संस्करण बनाने के अलावा) के लिए बढ़ाया जा सकता है, उदाहरण के लिए अंतर्राष्ट्रीय विज्ञप्ति, FxCop/गुणवत्ता उपकरण config, + चलाने यूनिट टेस्ट का निर्माण, सतत एकीकरण बनाता है, डेवलपर वर्कस्टेशन पर चलने के लिए एक निर्माण config, आदि

इसके बजाय

, मैं उद्देश्य था निम्नलिखित प्राप्त करने के लिए:

  • स्वचालित संस्करण, पर हस्ताक्षर करने आदि डीबग बिल्ड मदद करने के लिए वर्बोज़ निर्गम (प्रवेश) के उत्पादन के लिए
  • की क्षमता टूट जाता है
  • उस बिंदु पर - यह ठीक से त्रुटियों को संभाल चाहिए अधिक से अधिक जानकारी पर कब्जा और इसे ठीक से लॉग इन करें
  • consiste ncy - यह उसी तरह हर बार काम करना चाहिए दोहराने योग्य परिणामों का उत्पादन करने के
  • एक साफ, सीमित पहुँच वातावरण में
  • भागो
  • खैर टिप्पणी की/आदि दस्तावेज इतना है कि यह नए कर्मचारियों द्वारा समझा जा सकता,
  • विकल्प उत्पन्न करने के लिए रिलीज नोट्स, मेट्रिक्स संकलित करें, रिपोर्ट तैयार करें (यदि यह विकल्प उपलब्ध है)
  • एकाधिक वातावरण पर तैनात करने की क्षमता
  • स्रोत नियंत्रण से स्रोत कोड प्राप्त करने के विभिन्न तरीकों का समर्थन करें, उदाहरण के लिए changeset, लेबल, दिनांक आदि
  • उपकरण सिफारिशों के रूप में से, मैं FinalBuilder का उपयोग किया है, दृश्य बिल्ड प्रो, MSBuild/टीम बिल्ड, Nant, CruiseControl और CIFactory प्लस और अच्छे पुराने जमाने बैच फ़ाइलें।

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

    +0

    अच्छा जवाब है, लेकिन मैं वास्तव में चाहता हूं कि आप कुछ और शामिल करेंगे पेशेवरों और विपक्ष के रूप में आप उन्हें देखते हैं, जैसा कि आपने उपकरण की एक अच्छी श्रृंखला का उपयोग किया है। +1 –

    5

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

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

    1

    हम ऐसा करने के लिए CruiseControl.NET और UppercuT (जो NANT का उपयोग करता है) का उपयोग करते हैं। अपरक्यूटी इमारत के लिए सम्मेलनों का उपयोग करता है, इसलिए यह किसी के लिए तीन प्रश्नों का उत्तर देकर शुरू करना आसान बनाता है (समाधान का नाम क्या है? स्रोत नियंत्रण का मार्ग क्या है? आपकी कंपनी का नाम क्या है?) और आप इमारत बना रहे हैं।

    http://code.google.com/p/uppercut/

    कुछ अच्छी यहाँ स्पष्टीकरण: UppercuT

    0

    हम चींटी निर्माण स्क्रिप्ट से बड़ा जावा वेब अनुप्रयोग के निर्माण के लिए के लिए हडसन buildbot का उपयोग करें। हडसन हमारे उद्देश्यों के लिए बहुत प्यारा है। इसमें एक मास्टर/गुलाम सेटअप है, इसलिए निर्माण एक साथ किया जा सकता है (टाइमर या ऑन-डिमांड पर)। स्लेव नोड्स किसी भी ओएस/हार्डवेयर कॉम्बो हो सकते हैं बशर्ते इसमें पहले से ही आवश्यक निर्माण उपकरण हों और नेटवर्क पर हों (और हर 10 मिनट में क्रैश नहीं होगा)।

    लाइव कंसोल आउटपुट सहित पूर्ण वेब-आधारित इंटरफ़ेस, परिवर्तन बदलना, निर्माण से कलाकृतियों पिछले निर्माण (यदि सफल हो) सहित नेटवर्क में उपलब्ध हैं। अद्भुत सॉस! क्रूज़ कंट्रोल के लिए

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

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