पर्यावरण का सारांश।एमएसबिल्ड: डीबी माइग्रेशन स्क्रिप्ट का स्वचालित संग्रह?
- Asp.net वेब अनुप्रयोग (स्रोत SVN में संग्रहीत)
- SQL सर्वर डेटाबेस। (एसवीएन में संग्रहीत डेटाबेस स्कीमा (टेबल/स्पॉक्स)
- डीबी संस्करण वेब एप्लिकेशन असेंबली संस्करण के साथ समन्वयित है। (तालिका 'CurrentVersion' में संग्रहित)
- सीआई हडसन सर्वर जो रेपो से वेब ऐप की जांच करता है और ऐप प्रकाशित/पैकेज करने के लिए कस्टम msbuild फ़ाइल चलाता है।
मेरी एमएसबिल्ड स्क्रिप्ट प्रत्येक बिल्ड पर वेब ऐप (Major.Minor.Revision.build) के असेंबली संस्करण को अपडेट करती है। 'संशोधन' वर्तमान में चेक आउट आउट एसवीएन संशोधन और हडसन बिल्ड नंबर (प्रत्येक स्वचालित निर्माण पर वृद्धि) के लिए 'बिल्ड' पर सेट है।
इस तरह से मैं ऐप से एक विशिष्ट ट्रंक संशोधन में मिलान कर सकता हूं, हडसन बिल्ड नंबर से अन्य बिल्ड आंकड़े भी प्राप्त कर सकते हैं।
मैं ज़िप पैकेज में जोड़ने के लिए माइग्रेशन स्क्रिप्ट (अपडेटेड स्पॉक्स इत्यादि) के संग्रह को स्वचालित करना चाहता हूं। मुझे लगता है कि डीबी के एसवीएन संशोधन की तुलना करके अनुमान लगाया जा रहा है, जिसे अभी तक तैनात किया जा रहा है, मैं उस डेटाबेस/पर्यावरण पर अंतिम तैनाती के बाद ट्रंक में डीबी फाइलों को बदल सकता हूं।
यह आसानी से svn diff -r REVNO:REVNO
कमांड को सूचीबद्ध .sql फ़ाइलों को सूचीबद्ध करने के लिए मैन्युअल रूप से कॉल करके हासिल किया जा सकता है। इन फ़ाइलों को मैन्युअल रूप से पैकेज में जोड़ा जाना चाहिए। यह बहुत अच्छा होगा अगर यह स्वचालित हो सकता है।
सबसे पहले मुझे लगता है कि मुझे डीबी के संस्करण की जांच करने के लिए एक कस्टम कार्य लिखना होगा जिसे अभी तक तैनात नहीं किया गया है। उसके बाद मैं काफी अनिश्चित हूं। क्या किसी के पास कोई सुझाव है कि यह एमएसबिल्ड कार्य के माध्यम से मौजूदा या कस्टम के माध्यम से कैसे हासिल किया जाएगा?
अंततः मुझे उस पैकेज में जोड़ने के लिए एक स्क्रिप्ट ऑटोजेन करना होगा जो डेटाबेस संस्करण तालिका को अपडेट करता है ताकि एप्लिकेशन के साथ सिंक हो सके।
यह एक अजीब सवाल है। हम बिल्ड स्क्रिप्ट का काफी उपयोग करते हैं, लेकिन मैं अभी भी हमारे डीबी को एसवीएन में लाने के लिए संघर्ष कर रहा हूं, कभी-कभी डेवलपर बदलने के लिए प्रतिरोधी हो सकते हैं :) –
ठीक है, एक एसवीएन कमांड मिला जो बदली गई फ़ाइलों की सूची को एक आउटपुट में आउटपुट कर सकता है एक्सएमएल फ़ाइल। उस से मैं msbuild के माध्यम से उस XML फ़ाइल को संसाधित करने में सक्षम होना चाहिए ताकि व्यक्तिगत कार्य फ़ाइलों को चेकआउट करने के लिए आवश्यक हो। '>;' कमांड क्रूक्स था;) svn diff -r REVNO: REVNO --xml --sumarize "svn: // PathToTrunk">; घ: /temp.xml –