फ़ाइलों को उत्पादन में कैसे स्थानांतरित करें?


9

हम एक समूह हैं जो एक मौजूदा कोडबेस के साथ काफी बड़ी वेबसाइट पर काम करना शुरू कर रहे हैं। हमारे पास एक परीक्षण और एक उत्पादन सर्वर है।

हमारा विचार एक परीक्षण भंडार है जिसमें कई देवों के पास धक्का पहुंच है; और एक धन्य भंडार जो केवल कुछ को ही आगे बढ़ा सकता है। धन्य रेपो को हमेशा स्थिर माना जाता है और नवीनतम उत्पादन संस्करण का प्रतिनिधित्व करता है।

मैं फ़ाइलों को उत्पादन में स्थानांतरित करने की प्रक्रिया को कैसे स्वचालित कर सकता हूं? क्या संस्करण नियंत्रण के तहत उत्पादन फ़ाइलों का होना बुरा है? इस तरह, धन्य भंडार को धकेलने का मतलब होगा तैनाती। लेकिन, क्या होता है जब मर्ज संघर्ष होते हैं? क्या इसका समाधान होने तक उत्पादन सर्वर टूट जाएगा?

जवाबों:


7

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

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

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


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

1
@ तमसे: आपके सर्वर पर धन्य रेपो का स्थानीय चेकआउट होना ठीक हो सकता है, अगर आपका यही मतलब है (अपाचे (या कोई अन्य सभ्य वेबसर्वर) तो इससे संबंधित गित से जुड़ी फाइलों को बाहर से दुर्गम बनाना आसान हो जाता है)। हालाँकि आप आसानी से इसका "निर्यात" कर सकते हैं । आपके वेबरोट में फाइलें होने का कोई मतलब नहीं है, वह वहां नहीं है।
back2dos

इर -... तो आपको कैसे पता चलेगा कि अज्ञात गंभीरता के अज्ञात कीड़े क्या हैं यदि वे अज्ञात हैं ... ?
स्पूनइक

@ मुझे लगता है कि back2dos बस तयशुदा रिलीज का उपयोग करके अच्छी तरह से परीक्षण की वकालत कर रहा है, जिसमें "त्वरित n गंदा" फिक्स नहीं है जो अप्रयुक्त है।
अधिकतम

@ साइकाइक: 24-48 घंटे में आप बहुत सारे अज्ञात बग को ज्ञात बग में बदल सकते हैं। इसके अलावा 5 मिनट में, आप एक ज्ञात बग को बहुत सारे अज्ञात बग में बदल सकते हैं। इसे क्विक फिक्स कहते हैं।
back2dos

2

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

आप ऐसी स्थिति में हो सकते हैं जहां आप इसका सीधे-सीधे इस्तेमाल कर सकते हैं - यह जरूरी नहीं कि रेल से बंधा हो - लेकिन यदि ऐसा नहीं है, तो इसका व्यवहार करने का तरीका निश्चित रूप से मददगार है।


1

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

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

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

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