नहीं, यह दो कारणों से नहीं है:
गति
कमिटमेंट तेज होना चाहिए। एक प्रतिबद्धता जो 500 एमएस लेती है, उदाहरण के लिए, बहुत धीमी है और डेवलपर्स को अधिक संयम के लिए प्रोत्साहित करेगी। यह देखते हुए कि हैलो वर्ल्ड से बड़ी किसी भी परियोजना में, आपके पास दर्जनों या सैकड़ों परीक्षण होंगे, उन्हें प्री-कमिट के दौरान चलाने में बहुत अधिक समय लगेगा।
बेशक, हजारों परीक्षणों के साथ बड़ी परियोजनाओं के लिए चीजें खराब हो जाती हैं जो एक वितरित आर्किटेक्चर पर मिनटों के लिए चलती हैं, या एक मशीन पर सप्ताह या महीने।
सबसे बुरी बात यह है कि इसे तेज करने के लिए बहुत कुछ नहीं है। छोटी पायथन परियोजनाएं, जो कहती हैं, सौ यूनिट परीक्षण, एक औसत सर्वर पर चलाने के लिए कम से कम एक सेकंड लेते हैं, लेकिन अक्सर बहुत लंबा होता है। C # एप्लिकेशन के लिए, संकलन समय के कारण, यह औसतन चार-पाँच सेकंड का होगा।
उस बिंदु से, आप बेहतर सर्वर के लिए अतिरिक्त $ 10 000 का भुगतान कर सकते हैं जो समय कम करेगा, लेकिन बहुत अधिक नहीं, या कई सर्वरों पर परीक्षण चलाएगा, जो केवल चीजों को धीमा कर देगा।
जब आप हजारों परीक्षण (साथ ही कार्यात्मक, प्रणाली और एकीकरण परीक्षण) करते हैं, तो दोनों सप्ताह के बजाय कुछ ही मिनटों में उन्हें चलाने की अनुमति देते हैं, लेकिन यह आपको छोटे स्तर की परियोजनाओं के लिए मदद नहीं करेगा।
इसके बजाय, आप क्या कर सकते हैं:
डेवलपर्स को प्रतिबद्ध करने के लिए स्थानीय स्तर पर संशोधित कोड से संबंधित परीक्षणों को दृढ़ता से चलाने के लिए प्रोत्साहित करें। वे संभवतः हजारों यूनिट परीक्षण नहीं चला सकते, लेकिन वे उनमें से पांच-दस चला सकते हैं।
सुनिश्चित करें कि प्रासंगिक परीक्षण ढूंढना और उन्हें चलाना वास्तव में आसान (और तेज़) है। उदाहरण के लिए, विजुअल स्टूडियो यह पता लगाने में सक्षम है कि अंतिम रन के बाद से किए गए परिवर्तनों से कौन से परीक्षण प्रभावित हो सकते हैं। अन्य IDE / प्लेटफार्मों / भाषाओं / रूपरेखाओं में समान कार्यक्षमता हो सकती है।
जितना हो सके कमिटमेंट रखें। शैली के नियमों को लागू करना ठीक है, क्योंकि अक्सर, यह ऐसा करने के लिए एकमात्र जगह है, और क्योंकि इस तरह की जांच अक्सर आश्चर्यजनक रूप से तेज होती है। स्थिर विश्लेषण करना ठीक है जैसे ही यह तेजी से रहता है, जो शायद ही कभी होता है। इकाई परीक्षण चलाना ठीक नहीं है।
अपने निरंतर एकीकरण सर्वर पर यूनिट परीक्षण चलाएं।
सुनिश्चित करें कि डेवलपर्स को स्वचालित रूप से सूचित किया जाता है जब उन्होंने निर्माण को तोड़ दिया था (या जब यूनिट परीक्षण विफल हो गए थे, जो व्यावहारिक रूप से एक ही बात है यदि आप एक कंपाइलर को एक उपकरण मानते हैं जो कुछ संभावित गलतियों की जांच करता है जो आप अपने कोड में पेश कर सकते हैं)।
उदाहरण के लिए, पिछले बिल्ड की जांच के लिए एक वेब पेज पर जाना एक समाधान नहीं है। उन्हें स्वचालित रूप से सूचित किया जाना चाहिए । पॉपअप दिखाना या एसएमएस भेजना दो उदाहरण हैं कि उन्हें कैसे सूचित किया जा सकता है।
सुनिश्चित करें कि डेवलपर्स समझते हैं कि बिल्ड को तोड़ना (या प्रतिगमन परीक्षणों को विफल करना) ठीक नहीं है, और जैसे ही ऐसा होता है, उनकी सर्वोच्च प्राथमिकता इसे ठीक करना है। इससे कोई फर्क नहीं पड़ता कि वे एक उच्च प्राथमिकता वाले फीचर पर काम कर रहे हैं जो उनके मालिक ने कल के लिए जहाज करने के लिए कहा: वे निर्माण में विफल रहे, उन्हें इसे ठीक करना चाहिए।
सुरक्षा
सर्वर जो रिपॉजिटरी को होस्ट करता है उसे कस्टम कोड नहीं चलाना चाहिए, जैसे कि यूनिट परीक्षण, विशेष रूप से सुरक्षा कारणों से। GitLab के एक ही सर्वर पर CI धावक में उन कारणों को पहले ही समझाया गया था ?
यदि, दूसरी ओर, आपका विचार प्री-कमिट हुक से बिल्ड सर्वर पर एक प्रक्रिया शुरू करना है, तो यह और भी कम कर देगा।