अपने सतत एकीकरण प्रणाली को बच्चा सम्भालना


22

मेरी टीम में मेरी एक भूमिका बिल्ड व्यक्ति की है । मैं अपनी बिल्ड स्क्रिप्ट को बनाए रखने / अपडेट करने और निरंतर एकीकरण सर्वर पर 'सुचारू रूप से निर्माण' कर रहा हूं। मुझे आमतौर पर इस नौकरी से ऐतराज नहीं है, हालाँकि अक्सर ऐसा महसूस होता है कि मैं लगातार सीआई सर्वर को बेबीसिट कर रहा हूं।

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

मुझे पता है कि कई परिपक्व टीमें कंटिन्यूअस इंटीग्रेशन का उपयोग करती हैं, लेकिन अच्छी प्रथाओं के बारे में बहुत सारी सामग्री नहीं है।

क्या मेरी समस्याएं बताती हैं कि हमारा निरंतर एकीकरण बहुत परिपक्व नहीं है या यह केवल नौकरी का हिस्सा है?

पालन ​​करने के लिए कुछ अच्छे अभ्यास क्या हैं? परिपक्व निरंतर एकीकरण की विशेषताएं क्या हैं ?

अद्यतन करें

कुछ टिप्पणियों का जवाब देने के बजाय मैं एक अपडेट करने जा रहा हूं। हमारे पास एक एकल, सरल कमांड है जो ऐप के निर्माण के दौरान बिल्ट सर्वर क्या करेगा। यह सभी यूनिट / एकीकरण और कुछ त्वरित यूआई आधारित परीक्षणों को संकलित करेगा।

सभी के जवाबों को पढ़कर, ऐसा लगता है कि हमें दो बड़ी समस्याएं हो सकती हैं।

  1. जब कोई विफलता विफल हो तो CI सर्वर जोर से शिकायत नहीं करता है।
  2. डेवलपर्स यह महसूस नहीं करते हैं कि यह सुनिश्चित करने के लिए कि उनकी प्रतिबद्धता सफलतापूर्वक चल रही है, हर किसी की जिम्मेदारी नहीं है।

मेरी टीम में जो चीजें कठिन हैं, वह यह है कि हमारे पास एक बड़ी टीम (10+ डेवलपर्स) है और हमारे पास कुछ ऑफ-शो टीम के सदस्य हैं, जब हम काम पर नहीं होते हैं। क्योंकि टीम बड़ी है और हमने स्थापित किया है कि अक्सर छोटे-छोटे काम पसंद किए जाते हैं, हम कभी-कभी एक दिन में बहुत अधिक सक्रिय होते हैं।


16
वाह, मैंने सुना है कि डेवलपर्स अपने स्थानीय मशीन पर कोडिंग करने से पहले कोड का परीक्षण नहीं कर रहे हैं, लेकिन इसका निर्माण नहीं कर रहे हैं? वह व्यावहारिक रूप से अपराधी है
एर '

2
@ एलिसन: हो सकता है कि ऐसा हो, हालांकि मेरे लिए "बिल्ड तोड़ना" का अर्थ है कोड बनाना जो निर्माण नहीं करता है । एक असफल परीक्षण बहुत कम महत्वपूर्ण मुद्दा है; यह आमतौर पर अन्य डेवलपर्स को अपना काम करने से रोकने वाला नहीं है।
Aaronaught

1
@ व्यक्तिगत रूप से मैं इसे विपरीत - कोड के रूप में देखूंगा जो कि संकलन अभी भी स्वचालित परीक्षण में विफल हो सकता है और इसलिए "बिल्ड को तोड़ें"।
आर्मंड

2
मार्टिन फाउलर से एक साउंडबाइट को उद्धृत करने के लिए: यदि यह दर्द होता है, तो इसे अधिक बार करें।
रवांग

1
किसी ने (अगर मुझे सही से याद है, तो यह वार्ड कनिंघम था) ने मुझे एक व्याख्यान के दौरान अपनी टीम की प्रैक्टिस के बारे में बताया: जिस व्यक्ति ने बिल्ड को तोड़ दिया था, उसे दिन के लिए एक टी शर्ट पहननी थी, उस पर "मैंने निर्माण तोड़ दिया" शब्दों के साथ। । उन्होंने यह भी उल्लेख किया कि टी शर्ट कभी धोया नहीं गया।
डॉक्टर ब्राउन

जवाबों:


29

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

अधिकांश CI सर्वर (मैंने केवल हडसन का उपयोग किया है) एक स्वचालित ईमेल भेजेगा जिसमें निर्मित कमिट्स होंगे जो निर्माण को तोड़ने का कारण बने। आपकी भूमिका का एकमात्र हिस्सा उनके पीछे खड़ा होना मुश्किल लग रहा है जब तक कि संदिग्ध जो कुछ भी तोड़ता है उसे ठीक करता है।


3
क्या होता है अगर इसके दिन में देर हो जाए और वे काम करना छोड़ दें? क्या ऐसा कोई नियम होना चाहिए जो आप तब तक नहीं कर सकते जब तक आप यह सुनिश्चित नहीं कर सकते कि यह एक सफल निर्माण है?
c_maker

4
मुझे डर है कि धमकी देने वाले छोटे ध्यान केंद्रित लोगों के बजाय बड़े पैमाने पर अतिव्यापी कमिट को प्रोत्साहित करेंगे।
c_maker

3
@c_maker: निर्माण को तोड़ने की संभावना कम , केंद्रित नहीं होगी? यह मेरे लिए एक अनुशासन समस्या की तरह लगता है, एक प्रक्रिया समस्या नहीं है।
एरोन

6
जो कोई भी बिल्ड तोड़ता है, उसे कॉफी / केक / जो भी आपकी टीम का पसंदीदा कैंडी है, सभी को प्राप्त करना है। या दिन भर हर किसी के लिए कॉफ़ी पिएं, या ... ऐसे कई उपाय हैं जिनसे आप बिलकुल अनचाहा तोड़ सकते हैं, जबकि इतना खतरा नहीं है जितना लोगों को जमा करने से बचने के लिए। उत्तरार्द्ध को भी सप्ताह में एक बार हर किसी को कम से कम अपने परिवर्तनों को प्रस्तुत करने की आवश्यकता को संबोधित किया जा सकता है। (दिन में एक बार बहुत अधिक काम करने पर बहुत बार।)
मार्जन वेनेमा

5
जब तक वे इसे तोड़ते हैं, तब तक बिल्ड को तोड़ने की परवाह कौन करता है?

21

आपकी टीम को एक बात गलत लगी:

निर्माण के लिए जिम्मेदार होने के नाते सर्वर के लिए जिम्मेदार होने के समान नहीं है निर्माण

यह कोड में जाँच करने वाले व्यक्ति की जिम्मेदारी है कि वह इसे "काम" (कुछ मूल्य के काम के लिए) करे। बिल्ड सर्वर होने का एकमात्र कारण इस प्रक्रिया में ओवरसाइट्स को पकड़ना है। कोई भी बिल्ड सर्वर अपने नमक को उस व्यक्ति (यों) को सूचित कर सकता है, जिन्होंने अंतिम निर्माण के बाद से कोड में जाँच की है (साथ ही किसी और की भी, जो इच्छुक है) निम्नलिखित जानकारी के साथ:

  • निर्माण टूट गया!
  • क्या गलत हो गया जब निर्माण!
  • पिछले निर्माण के बाद से क्या बदल गया है!

यह बहुत बार ईमेल द्वारा होता है। यह महत्वपूर्ण है कि प्रत्येक चेक-इन के बाद यह बहुत जल्दी होता है।

व्यक्ति फिर देख सकता है कि क्या गलत हुआ, और इसे ठीक करें, और बिल्ड सर्वर तब किसी को भी सूचित करें कि बिल्ड वापस सामान्य हो गया है। यह सब अपने आप में दूसरों की भागीदारी के बिना लेकिन चेक-इन दोषियों में होना चाहिए।

तो आपके प्रश्न का उत्तर देने के लिए: एक परिपक्व सीआई वातावरण को अपने सामान्य ऑपरेशन में चौकीदार की भागीदारी की आवश्यकता नहीं होती है।

इसके अलावा, यदि "अजीब स्थितियां मौजूद हैं" बहुत बार होती हैं तो पता करें कि इसका क्या कारण है, और सिस्टम को अधिक मजबूत बनाते हैं।


9

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

"गोल्डन ब्रांच" की रणनीति तब तक काम नहीं करती है जब तक कि गोल्डन ब्रांच के लिए गेटकीपर न हो।

Git जैसी DVCS मदद कर सकती है; कमिट करने के बजाय, डेवलपर केवल CI सर्वर के एकीकरण के लिए एक बदलाव प्रस्तुत कर सकता है, और सर्वर फिर परिवर्तन को एकीकृत करने का प्रयास कर सकता है। यदि एकीकरण सफल होता है, तो परिवर्तन को विलय कर दिया जाता है, और यदि यह अस्वीकार नहीं किया जाता है।


8

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

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

इस दृष्टिकोण में जोड़े गए लाभों में शामिल हैं:

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

पुनश्च। संपूर्ण बिल्ड बेबीसिटर अवधारणा हास्यास्पद है, लेकिन दूसरों ने इसे कवर किया है।


तथास्तु। सिर्फ इसलिए कि कुछ किया जा सकता है, इसका मतलब यह नहीं है कि यह हमेशा किया जाना चाहिए।
gbjbaanb

7

सबसे पहले, डेवलपर्स को नियमित रूप से बिल्ड नहीं तोड़ना चाहिए - वे सीआई शाखा के लिए प्रतिबद्ध होने से पहले स्थानीय स्तर पर परीक्षणों का निर्माण और संचालन करना चाहिए। यह निर्माण को तोड़ने के लिए शर्म की निशानी होना चाहिए, और इसे लागू करना महत्वपूर्ण है। मैंने इसे पोस्टिंग आँकड़ों के माध्यम से किया है, और मैंने देखा है कि अन्य टीमों के पास एक "बिल्ड बैग" है, जहां आप हर बार एक डॉलर डालते हैं जो आप बिल्ड को तोड़ते हैं। परियोजना के अंत में कि पैसा बीयर की ओर जाता है।

यदि शर्म / व्यक्तिगत गर्व काम नहीं करता है, तो आपको भारी सामान (जैसे धमकी समाप्ति) पर जाना पड़ सकता है। दिन के लिए जाने से पहले निर्माण को तोड़ना एक बड़ा अपराध होना चाहिए। और हर डेवलपर को अपने डेस्कटॉप पर एक बिल्ड स्टेटस नोटिफिकेशन होना चाहिए। इस सब में सबसे अच्छी बात यह है कि यह छोटे आवागमन को प्रोत्साहित करता है, जिसे वैसे भी पसंद किया जाता है।

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

मैं कंटीन्यूअस डिलिवरी बुक की सिफारिश नहीं कर सकता । यदि आप अपने CI प्रक्रिया को परिपक्व करने के तरीके के बारे में एक गाइड की तलाश कर रहे हैं, तो इसे आज़माएं।


2
जाने से पहले निर्माण तोड़ने के बारे में सहमत हुए। आप एक बदलाव करते हैं, आप निर्माण के खत्म होने का इंतजार करते हैं ताकि आपको पता चले कि यह काम किया है। यह काम नहीं किया? आपके जाने से पहले, अपना परिवर्तन रोलबैक करें या ठीक करें। ऐसा नहीं करना चाहते हैं? दिन में अंतिम परिवर्तन न करें।
कार्सन 63000

1
"चाहिए" अच्छा है, लेकिन कोई भी मानवीय कारक होने का एक गैर-शून्य मौका है। यदि बिल्ड महत्वपूर्ण है, तो एक या अधिक स्टेजिंग बिल्ड सर्वर रखें।

3

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

जो व्यक्ति वर्तमान में बिल्ड के लिए जिम्मेदार है, उसके लिए एक विशेष टोपी हो सकती है। इसे सौंपने के लिए एक समारोह हो सकता है।

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

अब, एक तरफ प्रक्रिया का विवरण, मैं एक निर्माण और परीक्षण चलाने के बिना डेवलपर्स की जाँच में निराशा व्यक्त करने वाले लोगों के कोरस में शामिल होने जा रहा हूं। गवारा नहीं!

यदि आपके पास टीम के कुछ सदस्य हैं जो बिल्ड को तोड़ने की अधिक संभावना रखते हैं (और मेरे अपने अनुभव के आधार पर, मैं ज्यादातर दूसरे देश में सदस्यों के बारे में सोच रहा हूं), और यदि आप कुछ अच्छे आधुनिक स्रोत नियंत्रण का उपयोग कर रहे हैं जैसे Mercurial या Git, आप उन्हें टीम के बाकी हिस्सों में एक अलग शाखा में देख सकते हैं, उस पर एक अलग CI प्रक्रिया चला सकते हैं, और एक सफल बिल्ड (नोट जो आपको करना होगा) के बाद स्वचालित रूप से उस शाखा से परिवर्तन को ट्रंक में मर्ज कर सकते हैं मर्ज की जाँच करने से पहले मर्ज के बाद एक दूसरा निर्माण और परीक्षण चलाएं!)। चूंकि स्वचालित विलय हमेशा सफल नहीं होता है, इसलिए अंततः शाखा को मैनुअल ध्यान देने की आवश्यकता होगी, हालांकि, जो एक वास्तविक दर्द हो सकता है। हालांकि, बाकी टीम के लिए टूटे हुए कोड की जाँच करने की तुलना में कम दर्दनाक हो सकता है।


2

जैसा कि जोनाथन खो ने कहा कि आप सभी को बिल्ड सर्वर और बिल्ड स्क्रिप्ट के लिए जिम्मेदार होना चाहिए। इसके तीन कारण हैं:

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

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

  1. स्क्रिप्ट का निर्माण न केवल CI सर्वर पर बल्कि स्थानीय विकास मशीनों पर भी चलना चाहिए। उन्हें एक ही आउटपुट का उत्पादन करना चाहिए, एक ही परीक्षण चलाना चाहिए और एक ही कारणों से असफल होना चाहिए। यह डेवलपर्स को अपना कोड करने से पहले स्क्रिप्ट को चलाने की अनुमति देता है।
  2. यदि कोई भी निर्माण तोड़ता है, तो उसे ट्राई पॉपअप, ईमेल, फ्लैशिंग लाइट, शोर आदि के माध्यम से सार्वजनिक किया जाता है। यह न केवल टीम के सदस्यों को शर्मिंदा करने का काम करता है, बल्कि यह टीम के बाकी सभी लोगों को कूदने का अवसर प्रदान करता है। सहायता करते हैं।
  3. कुछ समय के लिए बिल्ड को ठीक करने से बचें। किसी और से करवा लो। यदि कोई अन्य व्यक्ति खराब चीजों के होने का इंतजार नहीं करता है और इसे पूरी टीम के लिए सीखने के बिंदु के रूप में उपयोग करता है तो यह समझने के लिए कि सीआई सर्वर महत्वपूर्ण क्यों है।
  4. कोशिश करें और अपने बिल्ड सर्वर और विकास मशीनों को यथासंभव तीसरे पक्ष के घटकों से रहित रखें, खासकर जीएसी को साफ रखें। परियोजनाओं पुस्तकालय फ़ोल्डर में होने वाले तीसरे पक्ष के घटकों पर भरोसा करें। यह लापता घटकों को अधिक तेज़ी से पहचानने में मदद करता है।

मैं किसी को भी गले लगाने से पूरी तरह असहमत हूं। क्या आप अपने संकलक को अलार्म फ्लैश करने के लिए पसंद करेंगे जब आपके पास सिंटैक्स त्रुटि होगी?

@ Thorbjørn यह एक सीआई सर्वर है जो आपका स्थानीय विकास बॉक्स नहीं है। मुद्दा यह है कि टीम को कोड को चेक करने से रोकने के लिए अपनी शक्ति में सब कुछ करना चाहिए जो बिल्ड को तोड़ता है। उम्मीद है कि लोग मज़ेदार दोस्ताना माहौल में काम करते हैं और मैं जिस शर्मिंदगी की बात कर रहा हूं, उसका मतलब उत्साही नहीं है, लेकिन यह लोगों को अगली बार सोचने से पहले प्रतिबद्ध करता है। लेकिन हमारे पास एक अजीब ध्वनि है जो बिल्ड सर्वर के टूटने पर खेलती है।
ब्रॉन्म्सकी जू

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

@ Thorbjørn कुछ हद तक असहमति और असहमति के लिए पूरी तरह से अच्छा है क्योंकि यह हमें अपने विचारों पर चर्चा करने की अनुमति देता है। आप के साथ फिर से असहमत होने के लिए उत्सुक, अब मुझे जूनियर डेवलपर्स को वापस पाने के लिए :)
ब्रोंम्सकी

1

दृश्यता आपकी सहायता करेगी। सभी टीम के सदस्यों को यह जानना होगा कि एक सक्रिय समस्या है जिसे उन्हें ठीक करना चाहिए। ईमेल सूचनाएं उपयोगी हैं, लेकिन अगर कोई डेवलपर व्यस्त है और तुरंत इस पर प्रतिक्रिया नहीं करता है, तो वह शायद इसके बारे में भूल जाएगा और ईमेल एक विशाल सूचना ढेर में समाप्त हो जाएगा।

आप Catlight या BuildNotify जैसे टूल का उपयोग करके देख सकते हैं । वे ट्रे क्षेत्र में महत्वपूर्ण बिल्ड की वर्तमान स्थिति दिखाते हैं। हर बार जब डेवलपर उस घड़ी को देखता है तो वह देखता है कि एक टूटी हुई इमारत है जिसे ठीक करने की जरूरत है।

ट्रे में चेतावनी चेतावनी की स्थिति का निर्माण करती है

कैटलाइट यह भी दिखाएगा कि किसने पहले निर्माण को तोड़ा, इस व्यक्ति पर सामाजिक दबाव डाला, क्योंकि पूरी टीम प्रत्येक लगातार निर्माण विफलता पर इसे देखेगी।

यहां छवि विवरण दर्ज करें


0

एक रणनीति यह है कि बहुत सारी छोटी परियोजनाओं के लिए बहुत सी छोटी शाखाओं का उपयोग किया जाए। फिर जब कोई निर्माण तोड़ता है, तो वे केवल अपने लिए निर्माण तोड़ रहे हैं। इसलिए वे बिल्ड सर्वर से परेशान ईमेल प्राप्त करते हैं और इसके बारे में चिंता करना उनके ऊपर है।

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


जब आपके पास एक बड़ा ऐप होता है, तो 'बहुत सारी छोटी शाखाएँ' अच्छी तरह से काम नहीं करती हैं।
c_maker

2
नहीं, यह अच्छा काम करता है। हालाँकि आप दर्द को विकास के समय से लेकर विलय के समय तक स्थानांतरित करते हैं। यदि आप नियमित रूप से छोटे वर्क पैकेजों को मर्ज करते हैं, तो इससे बहुत नुकसान नहीं होता है।
gbjbaanb

@ जीबीजैनब: सही है, इसीलिए मैंने छोटी शाखाओं और छोटी परियोजनाओं को निर्दिष्ट किया है। एक और बोनस के रूप में, यदि मुख्य बिल्ड एक घंटे के लिए टूट गया है, तो संभावनाएं हैं कि अन्य लोगों को काम जारी रखने में सक्षम होने की संभावना है क्योंकि उनके बिल्ड नहीं तोड़े गए हैं।
btilly

@c_maker: हर रणनीति व्यापार के सेट के साथ आती है, और सभी स्थितियों के लिए कोई भी सही नहीं है। हालाँकि दोनों जो मैंने आपको दिए हैं, उनका उपयोग अभी कई संगठनों में काफी सफलता के साथ किया जा रहा है।
btilly

0

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


0

ध्यान रखने योग्य बातें:

  1. आपकी टीम को पालन करने के लिए मानकों का एक सेट चाहिए
  2. आपको स्वच्छ कोड के विचार के साथ बोर्ड पर प्रबंधन प्राप्त करने और बेहतर कोड प्रथाओं के लिए प्रयास करने की आवश्यकता है।
  3. टेस्ट टेस्ट टेस्ट! जांच करने से पहले हमेशा परीक्षण करें।
  4. हालांकि मैं मानता हूं कि निर्माण को तोड़ना ठीक है, यह एक दुर्लभ है और मेरा मतलब है कि अत्यंत दुर्लभ अवसर जो स्वीकार्य होगा। यदि यह दैनिक है, तो मैं दरवाजे की तलाश करूंगा या अपने बॉस से मानकों के बारे में बात करूंगा।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.