हमारी .NET सॉफ़्टवेयर विकास दुकान में, हमारे पास 28 परियोजनाओं के निर्माण के लिए क्रूज़ कंट्रोल.NET स्थापित है, जिनमें से कुछ परस्पर निर्भर हैं। प्रत्येक प्रोजेक्ट लगभग विजुअल स्टूडियो प्रोजेक्ट्स या फ्लेक्स लाइब्रेरी का प्रतिनिधित्व करता है जो इकाई परीक्षणों के साथ जोड़ा जाता है। जो मुझे नाराज है, वह यह है कि मुझे यह सुनिश्चित करने का एक अच्छा तरीका नहीं मिला है कि परियोजनाएं निर्भरताओं का प्रतिनिधित्व करने वाले आदेश में निर्माण करें।परियोजना निर्भरताओं के साथ CruiseControl.NET में ऑर्डर बनाएं
यहाँ मैं क्या कर रहा हूँ है:
- सब कुछ एक ही निर्माण कतार में है। मैंने ऐसा किया ताकि निर्माण क्रमशः किया जा सके और इसलिए मैं कई कार्यशील निर्देशिकाओं की आवश्यकता से बच सकता हूं।
- मैंने परियोजनाओं पर कतार प्राथमिकताएं निर्धारित की हैं, जिन्हें मैंने सोचा था कि उनके निर्माण आदेश को प्रभावित करेगा। लेकिन दस्तावेज़ीकरण को और सावधानी से पढ़ने के बाद, मैंने पाया कि कतार में कई निर्माण अनुरोध होने पर यह प्राथमिकता को नियंत्रित करता है।
- बिल्ड को लात मारने के लिए अंतराल ट्रिगर्स का उपयोग करने के अलावा, मैं प्रोजेक्ट ट्रिगर्स का उपयोग करता हूं ताकि जब निर्भरता सफलतापूर्वक निर्माण हो, तो उनके आश्रित भी निर्माण करते हैं।
एक तरह से, यह सेटअप काम करता है। मुख्य समस्या यह है कि अगर कोई परियोजना ए और प्रोजेक्ट बी दोनों में कोड में परिवर्तन करता है, जहां प्रोजेक्ट बी प्रोजेक्ट ए पर निर्भर है, कभी-कभी, प्रोजेक्ट बी प्रोजेक्ट ए के सामने निर्माण करेगा क्योंकि प्रोजेक्ट ए अभी तक नहीं बनाया गया है, यह कर सकता है कभी-कभी परियोजना बी को तोड़ने का कारण बनता है। यह अस्थायी है, क्योंकि अंतराल ट्रिगर प्रोजेक्ट ए को बाद में निर्माण करने का कारण बनता है, और इसके सफल निर्माण ने परियोजना बी को पुनर्निर्माण और ठीक करने के लिए ट्रिगर किया है। मैं प्रोजेक्ट ए से पहले प्रोजेक्ट बी बिल्डिंग से बचना चाहता हूं ताकि इंटरमीडिएट ब्रेकेज न हो।
क्रूज़ कंट्रोल.नेट सर्वर पर परस्पर निर्भरता को सही तरीके से प्रबंधित करने के लिए आप किस अभ्यास का उपयोग करते हैं? इस बिंदु पर, मैं TeamCity जैसे गैर-मुक्त सतत एकीकरण पैकेज में बदलने के लिए तैयार नहीं हूं।
ऐसा करने का अर्थ यह होगा कि मुझे प्रत्येक निर्भर परियोजना में प्रत्येक निर्भर परियोजना के लिए निर्माण निर्देशों को डुप्लिकेट करना होगा। लेकिन मुझे लगता है कि अगर यह पता चला कि मैं CC.NET में बिल्ड ऑर्डर को नियंत्रित नहीं कर सकता, तो मुझे अनावश्यक होना होगा। कम से कम मैं एक परियोजना के निर्माण चरणों को समाहित करने के लिए एक्सएमएल इकाइयों के लिए सीसी.NET के समर्थन का उपयोग कर सकता हूं। – Jacob
जरूरी नहीं है। NANT स्क्रिप्ट को स्टोर करने के लिए एकल क्रूज़.बिल्ड फ़ाइल का उपयोग करें। परियोजनाओं में इस एकल क्रूज़.बिल्ड फ़ाइल को साझा करें, इस तरह वे सभी निर्भरता पदानुक्रम का पालन करते हैं और आप स्क्रिप्ट को डुप्लिकेट नहीं कर रहे हैं। –
हालांकि यह बेकार है कि बिल्ड बॉक्स को अभी भी डुप्लिकेट बिल्डिंग करना होगा, ऐसा लगता है कि इसके चारों ओर कोई अच्छा तरीका नहीं है। यह उत्तर सबसे अच्छा दिखता है। दुर्भाग्यवश शायद – Jacob