कंटीन्यूअस इंटीग्रेशन (CI) के बारे में एक मूलभूत समस्या है जो आपके प्रश्न में पूरी तरह से स्पष्ट है: CI प्रैक्टिस को लागू करना और बचाव करना कठिन है क्योंकि CI सर्वर सॉफ्टवेयर सेटअप के लिए तुच्छ नहीं है, और न ही आपकी परियोजनाओं को सीआई के माध्यम से चलाने और चलाने के लिए तुच्छ है। सर्वर। इसके साथ, वास्तव में यह देखना कठिन हो जाता है कि सीआई को गले लगाने में लाभ कहां है।
सबसे पहले, CI अंतर्दृष्टि और गुणवत्ता के बारे में है। अच्छा सीआई आपको अपनी परियोजना के करीब लाता है, आपको गुणवत्ता मैट्रिक्स, प्रलेखन, मानक मानकों के अनुपालन आदि पर उचित प्रतिक्रिया देता है, यह आपको आसानी से यह सब कल्पना करने के लिए उपकरण प्रदान करना चाहिए, और आपको कम से कम पहचान और आसानी से अनुमति देता है। इन सभी प्रोजेक्ट मेट्रिक्स के विशिष्ट स्नैपशॉट के साथ परिवर्तनों का एक समूह संबद्ध करें।
यह केवल इकाई परीक्षण चलाने के बारे में नहीं है । हर्गिज नहीं! जो मुझे गुणवत्ता में लाता है। CI त्रुटियों को गले लगाता है, यह उनसे बचता नहीं है या उन्हें दूर नहीं फेंकता है। यह जो करता है वह आपको बाद में शुरू करने के बजाय जल्दी से त्रुटि करने का एक उपकरण प्रदान करता है। तो तुम सच में एक सीआई सर्वर के लिए पहले से परीक्षण कोड प्रतिबद्ध नहीं है। यद्यपि आपको साफ और टूटे हुए कोड का प्रयास नहीं करना चाहिए, आप वास्तव में अपने सर्वर के माध्यम से स्वचालित रूप से एक एकीकरण बिल्डर को चलाने के लिए CI सर्वर का उपयोग करते हैं और यह आकलन करते हैं कि क्या सबकुछ सही निकला। अगर यह है, साफ! यदि यह नहीं है, तो कोई समस्या नहीं है - अच्छा सीआई अभ्यास बताता है कि आपकी अगली प्राथमिकता बस जो कुछ भी टूट गया है उसे ठीक करना चाहिए। जो, एक अच्छे CI सर्वर में, आपके लिए आसानी से बताया जाना चाहिए।
जैसे ही एक टीम का आकार बढ़ता है, सभी के कोड का एकीकरण स्वाभाविक रूप से कठिन हो जाता है। सभी एकीकृत भागों का परीक्षण करना और टीम के सदस्यों पर उस बोझ को उतारना केंद्रीयकृत सीआई सर्वर का काम होना चाहिए। इसलिए आपके पास हर कोई जल्दी (और जितना संभव हो सके) सफाई से आना चाहिए और फिर निगरानी स्थिति का निर्माण करता है (आमतौर पर सूचनाएं अधिसूचित होती हैं)। और फिर, अगर कुछ डेवलपर की प्रतिबद्धताओं के कारण कुछ टूट जाता है, तो इसे तुरंत ठीक करना और उन स्वचालित बिल्ड को तुरंत ओके स्थिति में वापस लाना उनकी जिम्मेदारी बन जाती है।
तो आप देखिए, मेरी राय में हर एक परियोजना को निरंतर एकीकृत होने से लाभ मिलता है। बात यह है कि, अब तक और हर एक CI सर्वर से मन-मुटाव की जटिलता के कारण, मुझे पता है कि लोगों ने वास्तव में छोटे / सरल प्रोजेक्ट्स पर CI प्रथाओं को बंद कर दिया था। क्योंकि, लोग आते हैं, बदसूरत, अति-जटिल, अंडर-डिलवरी, फूला हुआ सॉफ़्टवेयर कॉन्फ़िगर करने में खर्च करने की तुलना में बेहतर चीजें होती हैं।
मेरी यह वही समस्या थी, और इसने मुझे लगभग एक साल पहले से अपने खाली समय में Cintient विकसित किया। मेरा आधार इसे स्थापित करने, कॉन्फ़िगर करने और उपयोग करने के लिए सरल बनाना था, और इसे उन गुणवत्ता मैट्रिक्स पर वितरित करना था जो हर एक और बहुत अधिक विफल या कम करने वाले थे। तो, इस लंबे जवाब के बाद परियोजना के लिए GitHub लिंक (जो स्वतंत्र और खुला-स्रोत है, natch) इंगित करने का मेरा बेशर्म प्लग आता है। जाहिरा तौर पर इसके कुछ अच्छे स्क्रीनशॉट भी हैं। :-) https://github.com/matamouros/cintient
आशा है कि मैंने आपकी मदद की।
(नोट: ब्रायन ओकले की टिप्पणी के बाद संपादित, इस तथ्य पर कि मुझे बेहतर उत्तर बनाने के लिए अधिक समय लेना चाहिए था। मुझे भी लगता है कि वह सही थे।)