मुझे संस्करण नियंत्रण के लिए एक साइट लाने की जरूरत है, और निरंतर एकीकरण वातावरण स्थापित करना है


41

मैं एक Drupal 6x परियोजना के साथ एक उद्यमी हूं, जिसने संस्करण नियंत्रण (प्रति डेवलपर्स) की आवश्यकता नहीं होने के लिए बहुत कम शुरुआत की, लेकिन अब मुझे यकीन है कि इसके बिना कोई रास्ता नहीं है। JIRA पर व्यापक प्रलेखन है, जो अच्छी तरह से लिखित उपयोगकर्ता कहानियों के साथ सब कुछ कवर करता है। मैंने थोड़ा पढ़ा कि यह कैसे किया जा सकता है और निम्नलिखित योजना के साथ आया -

  1. मॉड्यूल का उपयोग करके डेटाबेस से साइट कोड अलग करें
    1. प्रसंग
    2. विशेषताएं
    3. मजबूत बांह
    4. प्रोफाइलर
  2. एक SVN रिपॉजिटरी में कोड डालें और एक स्टेजिंग साइट बनाएं
  3. EC2 उत्पादन सर्वर पर मंचन सर्वर का एक दर्पण बनाएँ
  4. सेलेनियम परीक्षण बनाएं, और उन्हें Saucelabs का उपयोग करके क्लाउड पर चलाएं
  5. स्वचालित अपडेट चलाने के लिए लोचदार बांस का उपयोग करके JIRA स्टूडियो में एक बिल्ड वर्कफ़्लो बनाएं
  6. Drush Make का उपयोग करके प्रोफाइल अपडेट और इंस्टॉल करें
  7. उत्पादन सर्वर पर अपडेट चलाएं (मुझे यकीन नहीं है कि कैसे)

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

किसी को भी कुछ ऐसा ही करने का कोई अनुभव है? मुठभेड़ के लिए मुझे क्या नुकसान और सीमाएं चाहिए? मैं उपरोक्त योजना को सुधारने / सुधारने के लिए किसी भी सुझाव या किसी भी जानकारी या सलाह के लिए बहुत सराहना करता हूं जो आप विशेषज्ञों के पास मेरे लिए रख सकते हैं।


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

3
निश्चित रूप से एक दिलचस्प सवाल है, लेकिन जवाब देना भी मुश्किल है। आप कई प्रश्न पूछ रहे हैं, इसलिए आपको पूर्ण / सर्वोत्तम उत्तर देना कठिन है। सिर्फ एक संकेत: IMHO, कोई भी परियोजना संस्करण नियंत्रण के लिए बहुत छोटी नहीं है। विशेष रूप से अब वितरित वीसीएस जैसे गिट के साथ, अपने कोड को स्थानीय रिपॉजिटरी में रखने के लिए 5 एस की तरह लगता है। Drupal.stackexchange.com/questions/316/…
Berdir

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

अद्यतन: एक कोड की समीक्षा के बाद, यह निर्धारित किया गया था कि परियोजना में बहुत कस्टम कोड है, जो सुविधाओं का उपयोग करके निर्यात करना वास्तव में मुश्किल होगा। तो हमारे सामने विकल्प हैं - (1) जैसा कि समाप्त और जारी है, और उचित संस्करण नियंत्रण का उपयोग करके डी 7 में समानांतर विकास शुरू करें। इसका मतलब है कि बाद में डेटाबेस को नष्ट करना। डरावना। (2) D6 में Redo आवश्यक सुविधाएँ, रिलीज़ करें, फिर कंटीन्यूअस इंटीग्रेशन करें। (3) D7 में Redo आवश्यक सुविधाएँ, रिलीज़ करें, फिर कंटीन्यूअस इंटीग्रेशन करें। मुख्य प्रश्न यह है कि इनमें से प्रत्येक विकल्प में कितना समय लगेगा। अगर तुम मेरे होते, तो तुम किसे वोट देते?
1

जवाबों:


23

ठीक है, मैं इसे आज़माऊंगा :) मैं आपके सवाल का पूरी तरह से जवाब नहीं दे पाऊंगा, लेकिन शायद आपको कुछ दिलचस्प संकेत दें। ध्यान दें कि मेरी नंबरिंग आपके सीधे जवाब में नहीं है :)

  1. जैसा कि मैंने पहले ही टिप्पणी में उल्लेख किया है, संस्करण नियंत्रण के लिए कोई भी परियोजना बहुत छोटी नहीं है। मैं व्यक्तिगत रूप से गिट की सिफारिश करता हूं। कारण इसकी सादी भयानक गति है (git में प्रतीक्षा समय मिलीसेकंड में मापा जाता है, सेकंड नहीं) और सुविधाओं की विशाल राशि। अजीब नामों और तर्कों के कारण इसे उठाना थोड़ा कठिन हो सकता है, लेकिन निम्नलिखित दस्तावेज उनमें से कई को वास्तव में अच्छा बताते हैं : http://www.eecs.harvard.edu/~cduan/technical/git/ । एक और कारण यह है कि यह अब drupal.org द्वारा उपयोग किया जाता है, इसलिए git को जानने से आपको तब मदद मिलेगी जब आप वापस योगदान करना चाहते हैं (पैच प्रदान करना, परीक्षण पैच, रिलीज़ मॉड्यूल, ...)

  2. उस ने कहा, यदि आप किसी कारण से SVN का उपयोग करना चाहते हैं (जैसे सेवाओं के साथ एकीकरण जो आप उपयोग करने की योजना बना रहे हैं), तो इसके लिए जाएं। SVN भी अच्छी तरह से काम करता है और स्रोत नियंत्रण की तुलना में बहुत बेहतर है। (जब तक आप लिनुस टोरवाल्ड्स से नहीं पूछते ..)। इसके अलावा, अक्सर एक VCS से दूसरे में माइग्रेट करने के तरीके होते हैं यदि आप अपना दिमाग बदलते हैं। एसवीएन -> गिट अच्छी तरह से काम करता है, उदाहरण के लिए।

  3. तीसरा, इस चरण को चरण दर चरण देखें। एक बार में सब कुछ करने की कोशिश मत करो। आपको (और आपके डेवलपर्स) नए उपकरण सीखने का समय दें।

  4. Drupal 6 से Drupal 7 में बदलना कोई मामूली बात नहीं है। खासकर बहुत सारे कस्टम कोड के साथ। नोट केवल एपीआई परिवर्तन और नई अवधारणाओं (इकाई / क्षेत्र प्रणाली की तरह) के टन हैं, वहाँ भी बिंदु है कि कई योगदान मॉड्यूल अभी तक पूरी तरह से नहीं हैं।

  5. परिनियोजन प्रबंधन Drupal के कमजोर बिंदुओं में से एक है, यह भी Drupal 7 में इतना नहीं बदला है। हम समस्या से अवगत हैं और लोग Drupal 8 के लिए इसे हल करने के लिए कड़ी मेहनत कर रहे हैं: http://groups.drupal.org / बिल्ड-सिस्टम-परिवर्तन-प्रबंधन / सेमी । सुविधाएँ आदि मदद करता है, लेकिन यह एक चांदी की गोली नहीं है। सब कुछ एक सुविधा के रूप में निर्यात नहीं किया जा सकता है।

  6. मंचन / उत्पादन साइटों को तैनात करने के लिए कुछ ड्रुपल-स्पेसक विकल्प भी हैं। पंथियन (अभी भी बीटा में) और एक्वीया देव बादल बाहर की जाँच के लायक हो सकते हैं।

  7. निरंतर एकीकरण, स्वचालित परीक्षण महत्वपूर्ण है और वास्तव में उपयोगी है, लेकिन इसे स्थापित करने, परीक्षण लिखने और इतने पर समय की आवश्यकता है। इस समय आपके पास हो भी सकता है और नहीं भी। लेकिन विशेष रूप से स्वचालित परीक्षण एक ऐसा क्षेत्र है जहां वृद्धिशील सुधार करना आसान है। एक बार जब आपके पास उन्हें चलाने के लिए एक वातावरण होता है, तो आप समय की अनुमति के रूप में अधिक से अधिक परीक्षण लिख सकते हैं।

तो, यहाँ टिप्पणी में अद्यतन सवाल के लिए मेरी सिफारिश है :

समाप्त और जारी है, लेकिन अब Drupal 6 के लिए VCS (संस्करण नियंत्रण प्रणाली) का उपयोग करना शुरू करें। अपनी साइट के लिए एक मंचन वातावरण बनाएँ। इस बात पर गौर करें कि आपके द्वारा उपयोग किए जा रहे (योगदान किए गए) मॉड्यूल क्या हैं और यह जांचें कि क्या ड्रुपल 7 का पोर्ट उस बिंदु पर संभव है। जो समय लगेगा उसे कम मत समझना। इसके अलावा परीक्षण / परिनियोजन प्रक्रिया में सुधार करना शुरू करें, जो आप सोचते हैं उससे शुरू करके आपको सबसे अधिक लाभ / लागत मिलेगी।

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


इतने बड़े व्यापक उत्तर के लिए बहुत बहुत धन्यवाद। मैं वास्तव में आप क्या सलाह देते हैं पर बहुत फैसला किया है। यहां तक ​​कि वास्तव में गिट सहित। मैं JIRA को होस्ट से स्टैंडअलोन में स्थानांतरित करूंगा ताकि मैं Git प्लगइन का उपयोग कर सकूं। तो D6 यह है। वर्तमान संस्करण को अभी जारी करें, और जितना संभव हो उतना मौजूदा कोड का उपयोग करके, समानांतर में एक उचित सर्वोत्तम प्रथाओं की प्रतिलिपि बनाना शुरू करें। समर्थन के लिए फिर से धन्यवाद। चीयर्स!
druflex

+1 अच्छी सलाह, व्यापक, डाउन-टू-अर्थ स्ट्रीटवाइज़ और रियल। आप अनुभव से बोल रहे हैं। धन्यवाद।
उपचार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.