.NET पोर्टफोलियो के लिए स्वचालित बिल्ड प्लेटफ़ॉर्म - सबसे अच्छा विकल्प? [बन्द है]


10

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

मेरे पास अभी NAnt के शीर्ष पर एक जटिल बिल्ड ढांचा है जो इन सभी अनुप्रयोगों के लिए बिल्ड का प्रबंधन करता है। बिल्ड फ्रेमवर्क विभिन्न चीजों को करने के लिए NAnt का उपयोग करता है:

  • तोड़फोड़ से बाहर कोड खींचो, साथ ही तोड़फोड़ में टैग बनाएँ
  • अन्य प्लेटफार्मों के लिए .NET या अन्य संकलक के लिए MSBuild का उपयोग करके कोड का निर्माण करें
  • विधानसभा संख्याओं के अंदर झांकना संस्करण संख्या बढ़ाने के लिए फाइल
  • ऐसी कुछ फ़ाइलों को हटा दें जिन्हें बिल्ड / रिलीज़ में शामिल नहीं किया जाना चाहिए
  • फ़ोल्डर परिनियोजन के लिए कोड जारी करता है
  • ज़िप कोड बैकअप प्रयोजनों के लिए
  • विंडोज सेवाओं की तैनाती; शुरू करो और उन्हें रोको
  • आदि।

उन चीजों में से अधिकांश को केवल NAnt के साथ ही किया जा सकता है, लेकिन हमने NAnt के लिए कुछ ऐसे विस्तार कार्यों का निर्माण किया, जो हमारे पर्यावरण के लिए विशिष्ट थे। इसके अलावा, ऊपर दी गई अधिकांश प्रक्रियाएं हमारे विभिन्न एप्लिकेशन स्क्रिप्ट्स के निर्माण में बहुत सी जेनरिक और पुन: उपयोग की जाती हैं, ताकि हम तर्क न दोहराएं। इसलिए यह सरल NAnt कोड नहीं है, और सरल बिल्ड स्क्रिप्ट नहीं है। दर्जनों NAnt फाइलें हैं जो एक बिल्ड को निष्पादित करने के लिए एक साथ आती हैं।

हाल ही में मैं कुछ कारणों से NAnt से असंतुष्ट था: (1) यह वाक्यविन्यास सिर्फ भयानक है - XML ​​के शीर्ष पर प्रोग्रामिंग भाषाएं वास्तव में बनाए रखने के लिए भयानक हैं, (2) परियोजना को बेल पर मर गया लगता है; वहाँ हाल ही में अद्यतन का एक टन नहीं किया गया है और ऐसा लगता है जैसे कोई भी वास्तव में पतवार पर नहीं है। .NET 4 के साथ काम करने की कोशिश करने से गतिविधि की कमी के कारण कुछ दर्द बिंदु हो सकते हैं।

तो, उस पृष्ठभूमि के सभी के साथ, यहाँ मेरा सवाल है। कुछ चीजें जिन्हें मैं ऊपर दी गई सूची के आधार पर पूरा करना चाहता हूं, और यह देखते हुए कि मैं मुख्य रूप से एक .NET शॉप में हूं, लेकिन मुझे गैर- .NET प्रोजेक्ट्स बनाने की आवश्यकता है, क्या NAnt का एक विकल्प है जिसे मुझे विचार करना चाहिए इसमें स्विच हो रहा है?

मेरी रडार पर चीजें शामिल Powershell (के साथ या बिना psake ), MSBuild ही है, और द्वारा रेक । इन सभी के पक्ष और विपक्ष हैं। उदाहरण के लिए, क्या MSBuild पर्याप्त शक्तिशाली है? मुझे याद है कि वर्षों पहले इसका उपयोग किया था और यह NAnt जितनी शक्ति नहीं थी। क्या मैं सच में चाहता हूं कि मेरी टीम रूबी को सिर्फ रेक का इस्तेमाल करने के लिए सीखे। क्या वास्तव में मेरे पोर्टफोलियो को पिन करने के लिए psake एक प्रोजेक्ट के लिए पर्याप्त परिपक्व है? क्या पॉवर्सहेल "धातु के बहुत करीब है" और मैं इसे बनाने के लिए अपनी खुद की लाइब्रेरी का उपयोग करने के लिए इसे लिखने के लिए समाप्त करूंगा?

क्या अन्य उपकरण हैं जिन पर मुझे विचार करना चाहिए? यदि आप महत्वपूर्ण जटिलता के एक .NET पोर्टफोलियो को बनाए रखने के साथ शामिल थे, तो आप किस टूल का निर्माण कर रहे हैं? वर्तमान में आपकी टीम क्या उपयोग करती है?

जवाबों:


2

यदि आप पहले से ही TeamCity का उपयोग कर रहे हैं, तो आपको अपनी मौजूदा सुविधाओं का उपयोग करने में सक्षम होना चाहिए, जो आपको सबसे अधिक चाहिए। यह मूल रूप से Visual Studio .sln फ़ाइलों के निर्माण का समर्थन करता है और यदि आपको अपनी सभी परियोजनाओं के लिए अतिरिक्त सामान की आवश्यकता होती है, तो आप .NET फ्रेमवर्क -targets फ़ाइलों को अपनी बिल्ड मशीनों पर संशोधित कर सकते हैं, इसलिए आपको अलग-अलग csproj फ़ाइलों को बदलने की आवश्यकता नहीं है।

यह स्वचालित रूप से तोड़फोड़, ज़िप कलाकृतियों से बाहर की जाँच करेगा, आपको यह नियंत्रित करने की अनुमति देता है कि कौन सी फाइलों को तैनाती योग्य कलाकृतियों माना जाता है। नया संस्करण (6.0) कई बिल्ड चरणों की भी अनुमति देता है, इसलिए कलाकृतियों की xcopy तैनाती को साझा करने का अवसर है।

आप अपने स्वयं के ऐप / कार्य भी लिख सकते हैं जो एक बिल्ड (कमांड-लाइन रनर के माध्यम से) के हिस्से के रूप में चल सकते हैं और आप जो कुछ भी करना चाहते हैं (जैसे कि विंडोज प्रक्रियाओं को शुरू / रोक सकते हैं)।


3

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


2

एक जोड़ी के रूप में हडसन और MSBuild पर एक नज़र डालें । पावर MSBuild की मजबूत क्षमताओं और हडसन के प्लगइन्स के साथ आता है ।

उदाहरण के लिए, आप हडसन का उपयोग कर सकते हैं और अपनी NAnt स्क्रिप्ट्स को तब तक चला सकते हैं जब तक आप MSBuild पर नहीं जाते हैं और तब यह आपकी MSBuild स्क्रिप्ट्स को भी चला सकता है।

विशेष रूप से अपने बिंदुओं को संबोधित करते हुए:

  • तोड़फोड़ और टैगिंग
  • MSBuild
  • असेंबलीइन्फो में झांकना SO पर पूछा गया था , लेकिन समाधान आपकी पसंद के अनुसार नहीं हो सकता है
  • MSBuild आसानी से फ़ाइलों को हटा सकते हैं
  • "तैनाती फ़ोल्डर के लिए कोड जारी करें" - आप निर्माण प्रणाली को उस चरण को छोड़ सकते हैं और कई तरीकों का उपयोग करके इसे स्वचालित रूप से तैनात कर सकते हैं। या आप चाहें तो एफटीपी कर सकते हैं।
  • MSBuild ज़िप कर सकते हैं
  • Windows सेवाएँ, फिर से MSBuild यहाँ आपका मित्र है।

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

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

हम्म ... टीमसिटी के साथ उस सूची में कुछ भी असंभव नहीं है, लेकिन शायद हडसन के साथ यह आसान है। किसी भी तरह से, जब तक हम टीसी के साथ कुछ दर्द बिंदुओं को नहीं मारते, मुझे नहीं लगता कि हम जल्द ही कभी भी स्विच करेंगे।
RationalGeek

@jkohlhepp: कठिनाई यह है कि एक ही स्थान में कई समाधान हैं। दिन के अंत में, हडसन है आसान है और है 100% मुक्त। IIRC, एक चीज जो TC के हडसन पर हो सकती है, वह मल्टी-एजेंट बिल्डिंग है।
स्टीवन एवर्स

2

मैं ऑटोमेटेड बिल्ड स्टूडियो का उपयोग करता हूं । मैं इससे छुटकारा पाना चाहता हूं।

केवल यही कारण है कि मैं 100% एमएस बिल्ड या टीम फाउंडेशन बिल्ड पर स्विच नहीं करता हूं , यह वह लागत है जो आज पूरी तरह से काम करने वाली स्क्रिप्ट के पुनर्निर्माण में शामिल होगी। स्क्रिप्ट ज्यादा नहीं बदलती हैं ...

हालांकि, अगले उत्पाद के लिए, यह टीम फाउंडेशन बिल्ड मुख्य निम्नलिखित कारणों के लिए बिना किसी हिचकिचाहट के होगा (वे बहुत अधिक हैं):

  • इसे तैनात करना आसान है (नवीनतम संस्करण: 2010)
  • यह विजुअल स्टूडियो और टीम फाउंडेशन सर्वर के साथ पूरी तरह से एकीकृत है
  • यह MS Build जैसा मानक बन रहा है
  • यह बिज़स्पार्क (स्टार्टअप्स के लिए) के साथ मुफ़्त है

चूंकि आप .NET में भी हैं, इसलिए मैं आपको TFB का उपयोग करने की गर्मजोशी से सलाह देता हूं।

यदि आप Bizspark के लिए आवेदन नहीं कर सकते हैं या लाइसेंस खरीदने का जोखिम नहीं उठा सकते हैं, तो आप CruiseControl.NET + MS Build और कुछ समर्थन स्क्रिप्ट के लिए जा सकते हैं । एक बड़ी उपयोगिता कंपनी में मैंने काम किया, हमने अपनी सभी परियोजनाओं का निर्माण, परीक्षण, तैनाती और रिपोर्ट करने के लिए क्रूज़कंट्रोल.नेट का उपयोग किया था । इसमें स्वचालित वेब सेवा परिनियोजन शामिल था।


मैंने इस विकल्प पर विचार नहीं किया था, लेकिन मुझे नहीं लगता कि यह हमारे लिए एक यथार्थवादी विकल्प होगा क्योंकि हम टीएफएस का बिल्कुल भी उपयोग नहीं कर रहे हैं, और इसे अतीत (बजट और अन्य कारणों से) में स्थानांतरित करने के प्रयास किए हैं। लेकिन सुझाव के लिए धन्यवाद जो एक दिलचस्प विचार है।
RationalGeek

यह विस्तार नहीं है। यदि आपका प्रबंधन मूल्य संवेदनशील है, तो MS बिल्ड एक आदर्श मैच होगा। मैं केवल MS Build + CruiseControl.NET के साथ काम करता था और यह बहुत अच्छा काम करता था! मेरे जवाब में इसे जोड़ देंगे।

@Pierre 303: जिज्ञासाओं के लिए, आप ऑटोमेटेड बिल्ड स्टूडियो से छुटकारा क्यों चाहते हैं?
RationalGeek

@Pierre 303: TFS का खर्च केवल चिंता का विषय नहीं है। मेरी दुकान एक बड़े उद्यम का हिस्सा है, और उन्होंने तोड़फोड़ और अन्य साधनों पर मानकीकृत किया है और "गैर-मानक" होने के नाते और टीएफएस के साथ जाने से राजनीतिक मुद्दे पैदा होते हैं।
RationalGeek

@jkohlhepp: इसका उपयोग करना आसान नहीं है, यह विज़ुअल स्टूडियो (कम से कम मेरे पास संस्करण है) के साथ अच्छी तरह से एकीकृत नहीं है और यह एक मानक होने से बहुत दूर है।

2

फ़ाइनलबर्स्ट आपके सभी अनुरोधित वस्तुओं को एक अच्छे GUI और मुफ्त में फेंकने वाले एक बिल्डर सर्वर एप्लिकेशन के साथ कर सकते हैं।


2

मैं वर्तमान में MSBuild (> 3000 लाइनों की स्क्रिप्ट) का उपयोग करके आप जो कर रहे हैं (यानी बिल्ड से पैकेजिंग के लिए तैनाती तक) कर रहे हैं। CI क्रूज़कंट्रोल.नेट का उपयोग कर रहा है और उम्मीद है कि मैं भविष्य में टीमबील्ड में स्थानांतरित हो सकता हूं। MSBuild बोझिल (XML में प्रोग्रामिंग) है, लेकिन यह विशेष रूप से बैच प्रोसेसिंग और निर्भरता ट्रैकिंग के लिए काफी शक्तिशाली है। इसे नए .Net संस्करणों में सक्रिय रूप से बनाए रखा गया है और बेहतर बनाया गया है और यह विजुअल स्टूडियो और टीएफएस में बिल्ड सिस्टम का आधार है। इसके अलावा दृश्य स्टूडियो प्रोजेक्ट फाइलें वास्तव में MSBuild परियोजनाएं हैं और मैं विभिन्न विस्तार बिंदुओं पर हुक कर सकता हूं। MSBuild विस्तार पैककई अतिरिक्त कार्य हैं और अपने स्वयं के कार्यों को प्रोग्रामेटिक रूप से बनाना बहुत आसान है। मेरा सुझाव है कि MSBuild को एक गंभीर विचार दें। हाल ही में मैं शक्तियां भी सीख रहा हूं और विशेष रूप से परिनियोजन चरण में कुछ कार्यों के लिए इसे खोजना आसान है, जैसे प्रमाणपत्र स्थापित करना और कॉन्फ़िगर करना, IIS आदि।

VisualStudio में MSBuild प्रोजेक्ट को संपादित करें क्योंकि यह सिंटैक्स को समझता है और आपको intellisense देता है। कुछ अन्य अच्छी उपयोगिताओं हैं जो MSBuild के साथ मदद करेंगे।
MSBuild लॉन्च पैड - शेल एक्सटेंशन के लिए
MSBuild SideKicks - आलेखीय रूप से संपादित, निष्पादित और डीबग स्क्रिप्ट।


1

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


ऐसा लगता है कि इनमें से अधिकांश उत्तर बिल्ड स्क्रिप्ट के साथ CI की बराबरी कर रहे हैं। मैंने हमेशा बिल्ड स्क्रिप्ट को स्मार्ट माना है, और CI सर्वर को वह चीज माना है जो ट्रिगर के आधार पर बिल्ड को बंद करता है। लेकिन शायद आप सही हैं और मुझे इस पर पुनर्विचार करने की आवश्यकता है।
राशनलगीक

1

मैं टीमसिटी की दृढ़ता से अनुशंसा करता हूं, इसे कॉन्फ़िगर करना और सेटअप करना आसान है। MSBuild NAnt पर बेहतर कारण के लिए बेहतर है कि vs2008 / 2010 में सभी प्रोजेक्ट / समाधान फाइलें MSBuild फाइलें तकनीकी रूप से हैं, लेकिन आप MSCuild या NAnt के साथ TeamCity को कॉन्फ़िगर कर सकते हैं।

बेशक, TeamCity आप खर्च होंगे। मैंने व्यक्तिगत रूप से एक विकल्प दिया है कि वह रेक पसंद करेगा, सिर्फ इसलिए कि रूबी उपकरण के साथ घर्षण अन्य की तुलना में भले ही साक एक अच्छा उम्मीदवार हो।


1
यदि आपके पास 20 से कम बिल्ड कॉन्फ़िगरेशन और 20 से कम उपयोगकर्ता हैं, तो FYI TeamCity मुफ़्त है। इसके अलावा, यदि आप एक ओपन सोर्स प्रोजेक्ट हैं, तो आप उन्हें मुफ्त असीमित लाइसेंस के लिए आवेदन कर सकते हैं।
रेशनलगीक

0

क्या आप हडसन मानते थे ? यह एक परेशानी का कारण हो सकता है, क्योंकि इसे चलाने के लिए जावा ऐप सर्वर की आवश्यकता होती है, लेकिन मुझे लगता है कि यह आपके वर्तमान NAnt स्क्रिप्ट का उपयोग करने और अन्य उपकरणों का उपयोग करने के लिए उसके शीर्ष पर निर्माण करने की अनुमति दे सकता है


हडसन एक निरंतर एकीकरण मंच का अधिक है, और वास्तव में एक निर्माण मंच नहीं है। हमारे पास एक CI सर्वर है - TeamCity, जो NAnt के साथ ठीक काम करता है। हालाँकि, मैं NAnt को प्रतिस्थापित करने के लिए कारण हैं क्योंकि NAnt स्क्रिप्ट को बनाए रखना दर्दनाक है। हडसन के माध्यम से वर्तमान लिपियों का उपयोग करना इस समस्या को हल नहीं करता है। फिर भी सुझाव के लिए धन्यवाद।
RationalGeek

IMHO हडसन वीएस परियोजनाओं के साथ सही ढंग से क्या करता है में बहुत सीमित है। चेकआउट को आप जिस तरह से उम्मीद करते हैं और पर्दे के पीछे से बंधे हुए नहीं हैं, यह एक बैच फ़ाइल को चलाने के अलावा कुछ भी नहीं कर रहा है जिसे आप वेब इंटरफ़ेस और बहुत सारे प्लग-इन के माध्यम से बनाते हैं। यदि आप इसे अच्छी तरह से काम करने के लिए प्राप्त कर सकते हैं, तो इसकी रिपोर्टिंग अच्छी है।
बिल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.