2009-11-24 11 views
8

मैं एक विकास टीम का हिस्सा हूं जो कई सीएमएस आधारित परियोजनाओं पर काम करता है, जूमला और ड्रूपल जैसे सिस्टम का उपयोग कर।तैनाती कैसे करें: 1 पैच में डेटाबेस, स्रोत और बाइनरी परिवर्तन?

हमारी विकास प्रक्रिया में, हमारे सभी कोड परिवर्तन गिट के अंदर प्रबंधित किए जाते हैं। एक स्प्रिंट के अंत में, हम डीआईएफएफ बनाते हैं कि हम लाइव साइट पर पैच के माध्यम से आवेदन कर सकते हैं।

समस्या यह है कि समय के सबसे अधिक, परिवर्तन शामिल हैं

  • डाटाबेस स्कीमा परिवर्तन
  • डाटाबेस डाटा परिवर्तन
  • स्रोत कोड में परिवर्तन (छवि)
  • बाइनरी फ़ाइल परिवर्तन
है

गिट डिफ संभालती है स्रोत कोड खूबसूरती से बदलता है। बाइनरी फाइलें केवल इस तथ्य के संदर्भ में डिफ में शामिल नहीं हैं कि फाइलें बदली गई हैं।

डेटाबेस स्कीमा परिवर्तन और डेटाबेस डेटा परिवर्तन एक गड़बड़ है।

अगर मैं एक एकीकृत पैच सिस्टम की तरह कुछ भी मौजूद हूं तो मैं घूम रहा था जिसका उपयोग 1 पैच में इन सभी परिवर्तनों को तैनात करने के लिए किया जा सकता था।

तो सवाल, कि "वहाँ एक प्रणाली है कि 1 शॉट में इन सभी परिवर्तनों को तैनात करने के लिए इस्तेमाल किया जा सकता है?

आदर्श रूप में, इस प्रणाली पैच की तरह सूखी चलाने को चलाने के लिए अनुमति होगी, लेकिन 4 डेटा प्रकार के सभी

संपादित:। आप राय है कि आपके द्वारा दी गई के लिए हर किसी को धन्यवाद, यह इस क्षेत्र में अपना शोध के लिए एक प्रारंभिक बिंदु था

यहाँ मैं अब तक क्या मिला है।:

  1. यह linux पैकेजिंग का उपयोग कर प्रणाली php आधारित अनुप्रयोगों को तैनात करने के लिए मुश्किल है, क्योंकि परियोजना में परिवर्तन iteratively हो बल्कि तो रिलीज के रूप में।

  2. यह एक परियोजना में परिवर्तन को तैनात करने के dbconfig उपयोग करने के लिए संभव हो जाएगा, लेकिन समस्या यह पैदा mysql db डिफ (स्कीमा और डेटा)

  3. है क्या वास्तव में php आधारित अनुप्रयोगों की तैनाती के लिए याद आ रही है एक तैनाती प्रबंधक कि सर्वर पर स्थापित की जाएगी और पैच

की तैनाती के लिए इंटरफेस होगा

मैंने इस विषय पर एक Google वेव शुरू किया और परिणामस्वरूप बहुत सारी जानकारी तैयार की। यदि कोई इस लहर को पढ़ने में रूचि रखता है, तो कृपया मुझे बताएं और मैं आपको जोड़ दूंगा।

उत्तर

2

हमारे आवेदन की स्थापना और उन्नयन को संभालने के लिए, हम debian packaging system का उपयोग करते हैं। (.deb पैकेज)

संदर्भ: हम जे 2 ईई + फ्लेक्स एप्लिकेशन बना रहे हैं। एक वीपीएन के माध्यम से शिपिंग और प्रशासित। तो अब तक आप से दूर नहीं है।

ताजा स्थापित करने और किसी अन्य के लिए एक संस्करण के लिए उन्नयन कठपुतली के माध्यम से किया जाता है (सिस्टम प्रशासन कार्य स्वचालित के लिए एक प्रणाली: वह हमारे .deb स्थापित)

.deb हम

  1. है हमारे संकलित sourcecode
  2. डेटाबेस का स्कीमा
  3. द्विआधारी सामान ([db-config] [1] द्वारा नियंत्रित)
  4. सोचा उपयुक्त अन्य सभी आवेदन ne स्थापित करने के लिए कैसे eded (mysql, बिल्ला ...)

= एक ताजा के लिए सभी सामान

हम भी डेटाबेस के उन्नयन के लिए एक संस्करण से दूसरे

  1. स्क्रिप्ट पर जाने के लिए जानकारी जोड़ने स्थापित (प्रत्येक संस्करण के लिए)
  2. नए द्विआधारी
  3. नई सामग्री मशीन शुरू में lauch करने (जैसे: कुछ हफ्ते पहले हम एक ActiveMQ सर्वर जोड़ने है)

=> एक बार .deb सही ढंग से बनाया गया है, हम एक ऑपरेशन में निर्बाध स्थापित या अपग्रेड कर सकते हैं। (यह बिना किसी संकेत के स्वचालित रूप से बनाया गया है)।

थिएयर प्रति .deb प्रति realease है, प्रत्येक .deb में संस्करण संख्या और हस्ताक्षर है। आप हमारे किसी भी .deb को चुन सकते हैं और वास्तविक संस्करण से उस संस्करण संख्या में ताज़ा इंस्टॉल या अपग्रेड कर सकते हैं।

.deb हमारे निरंतर एकीकरण प्रणाली में है। (हम एक बनाते हैं।प्रत्येक घंटे डेब, जैसे कि हम एक नए संस्करण को फिर से शुरू करने वाले हैं)


लाभ क्या हैं?

  • आत्मविश्वास के साथ स्वचालित रूप से स्थापित/अपग्रेड करें।
  • रोलबैक एक संस्करण
  • रन सूखी देशी रूप

का समर्थन कर रहे अपने सटीक मामले

* Database Schema Changes 
* Database Data Changes 
* Source Code changes 
* Binary file changes (like images) 

डेटाबेस में => आप माइग्रेशन स्क्रिप्ट लिखने के लिए होगा। प्रत्येक संस्करण के लिए एक। (पूर्व: 1.2 Update.sql 1.3 Update.sql)

स्रोत कोड और => उन्हें जोड़ने द्विआधारी, डायन संस्करण में कहते हैं कि वे कॉपी किया जा करने के लिए है/का उपयोग

संपादित करें: मैं के बारे में निश्चित नहीं हूँ सोर्स कोड। हम संकलित कोड के साथ कि क्या कर रहे हैं ...


कुछ लिंक शुरू करने के लिए:

https://wiki.ubuntu.com/PackagingGuide/Complete

http://www.debian.org/doc/manuals/maint-guide/index.fr.html#contents (फ्रेंच में)

[1]: http://pwet.fr/man/linux/formats/dbconfig dbconfig

[1]: http://www.debian.org/doc/FAQ/ch-pkg_basics.en.html डेबियन

+0

+1 जो मैंने कहा था, लाइन पैकेजिंग सिस्टम का उपयोग करने के लिए एक विशिष्ट पैकेजिंग सिस्टम के साथ। ध्यान दें कि ऐप के पिछले संस्करण के साथ डेटाबेस संगतता की देखभाल किए बिना, आपको विफलता के मामले में प्रकाशन और रोलबैक के दौरान साइट/सेवा ऑफ़लाइन लेनी चाहिए। – eglasius

+1

@ एंटोनी क्लाव, आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद, मुझे यह बेहद उपयोगी पाया। आपकी तैनाती रणनीति की रूपरेखा तैयार करने के लिए समय निकालने के लिए धन्यवाद, मुझे लगता है कि आप प्रतिष्ठा अंक के लायक हैं :) –

1

मुझे नहीं लगता कि आपको एक असफल-सुरक्षित तंत्र मिल जाएगा।

मैं अनुशंसा करता हूं कि, जब भी संभव हो, आप स्कीमा/डेटा परिवर्तन करते समय वर्तमान प्रकाशित स्रोत के साथ खाते की संगतता को ध्यान में रखते हैं।

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

उपर्युक्त के साथ, आपके पास एक साधारण कमांड हो सकता है जो डेटाबेस परिवर्तन चलाता है, फिर बाइनरी & स्रोत कोड में परिवर्तन होता है।

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

0

आप माइग्रेशन को दर्द रहित तरीके से करने के लिए एक टूल बना सकते हैं - पीपुल्सॉफ्ट के पैच अपग्रेड सहायक के समान कुछ।

यह मूल रूप से एक स्टैंडअलोन निष्पादन योग्य है जो "अपग्रेड टेम्पलेट" पढ़ता है और कार्य करता है। अपग्रेड टेम्पलेट घोषणात्मक रूप से अपग्रेड कार्यों या "चरणों" का वर्णन करता है। कदम हो सकते हैं - प्रतिलिपि (कक्षाओं और ओथार बाइनरी जैसे पूर्वकल्पित वस्तुओं का बैक अप लेने या स्थानांतरित करने के लिए), डेटाबेस (स्कीमा तत्वों को बदलने के लिए), एसक्यूएल स्क्रिप्ट (वर्तमान डेटा लोड करने या बदलने के लिए)। चरणों में कुछ अनुमानित तर्क सक्षम होंगे - यदि यह है, तो ऐसा करें, अन्यथा इसे छोड़ दें और अगले आदि पर जाएं

टेम्पलेट आमतौर पर एक एक्सएमएल फ़ाइल होता है। यह मैन्युअल कार्यों के लिए निर्देशों के साथ मैन्युअल चरणों के लिए भी प्रदान करता है। प्रत्येक चरण यह भी निर्दिष्ट करता है कि यह पुनर्प्राप्त करने योग्य है या नहीं। अगर यह कदम सफल हो गया है या नहीं तो यह भी मान्य होगा।

इस आवश्यकता के आसपास एक ओपन सोर्स प्रोजेक्ट होना संभव हो सकता है जो काफी आम है।

+0

@ srini.venigalla, आपका उत्तर अब तक जो कुछ मैं ढूंढ रहा था उसके सबसे नज़दीक है।मैं जानना चाहता था कि इस तरह का कोई उपकरण पहले से मौजूद है, ओपन सोर्स या नहीं। मुझे लगता है कि ऐसे ओपन सोर्स टूल की आवश्यकता है। मैं इस बारे में सोच रहा हूं कि ऐसे टूल के साथ डेटाबेस स्कीमा और सामग्री डेटा diff कैसे उत्पन्न किया जा सकता है। क्या आपके पास इस विषय पर कोई विचार है? –

+1

@ srini.venigalla आप डेबियन पैकेजिंग सिस्टम का वर्णन कर रहे हैं :)। अपग्रेड टेम्पलेट एक नियम.एक्सएमएल है जहां आप कहते हैं कि प्रत्येक मामले में क्या करना है (इंस्टॉल करें, अपडेट करें, अनइंस्टॉल करें ...) –

+0

हम्म .. मैं ज्यादातर विंडोज़ लड़का हूं। बस मैक में ले जा रहा है। उबंटू और मैक बंदरगाहों के साथ थोड़ा सा गड़बड़ कर दिया लेकिन डेबियन के साथ ज्यादा नहीं। एक सामान्य पैकेज के रूप में डेबियन के इस उपप्रणाली को बनाना अच्छा लगेगा! मैं इस तरह के एक उपकरण को कई बार बनाने का लुत्फ उठा रहा था लेकिन उच्च कॉलिंग कभी नहीं सुना :-) –

0

आपको स्थानीय फ़ाइल में गिट प्रतिबद्ध वस्तुओं को सहेजने की आवश्यकता है और फिर उन्हें अन्य रेपो/शाखा में आयात करना होगा।