Jenkins ASP.NET अनुप्रयोगों की तैनाती को स्वचालित करने के लिए


13

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

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

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

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


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

मेरा प्रश्न अपडेट करें, कृपया मुझे बताएं कि क्या मुझे कोई अतिरिक्त जानकारी प्रदान करने की आवश्यकता है।
सनी

जवाबों:


11

मैं साझा करूँगा कि हम क्या उपयोग कर रहे हैं, और जहाँ हम जाने की योजना बना रहे हैं, शायद यह आपको एक बेहतर विचार देने में मदद करेगा।

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

अब, जाहिर है कि यह पूरी तरह से आदर्श नहीं है, लेकिन यह हमारे लिए काम कर रहा है। हम भविष्य में इसका विस्तार करना चाहते हैं:

  • Jenkins से फ़ाइलों को सीधे IIS में धकेलने के लिए Web Deploy का उपयोग करें , और कोई भी अन्य कमांड जिसे हमें चलाने की आवश्यकता है।
  • सभी SQL अपडेट्स को संभालने के लिए ऑटोमैटिक माइग्रेशन (एंटिटी फ्रेमवर्क की एक सुविधा) का उपयोग करें, गो लाइव के हिस्से के रूप में।

यह लगभग वही है जो हम अनुसरण कर रहे हैं। लेकिन, मुझे आश्चर्य है कि अगर वेब एंप्लाॅयड विंडोज सर्विसेज़ इत्यादि को स्थापित कर सकता है और जटिल वेब अनुप्रयोगों के लिए आवश्यक सभी। वर्तमान में, हम ps टूल और इसके ठीक काम का उपयोग कर रहे हैं। DB के लिए, हम DeployDB टूल का उपयोग करने की योजना बना रहे हैं।
सनी

जब आप फ़ाइलें लॉक कर रहे हैं तो आप स्थितियों को कैसे संभालते हैं? जब कोई आपके ऐप के साथ काम कर रहा हो तो आप परिस्थितियों को कैसे संभालते हैं। क्या आपके पास प्रकाशन के समय काम करने वाले उपयोगकर्ताओं के लिए कई नोड्स या सिर्फ ब्रेक एप्लिकेशन है?
पायोत्र पेरक

1
@Peri - मैं अपने मूल उत्तर में उल्लेख करना भूल गया, लेकिन हम दो उत्पादन सर्वर रखने की योजना बना रहे हैं, और आवश्यकता पड़ने पर उनके बीच फ़्लिप कर रहे हैं (IIS या nginx का उपयोग करके)। यह तैनाती होने पर हमें दूसरे लाइव सर्वर को "वार्म" करने देगा, और फिर उस पर स्विच करेगा, इसलिए नोटिक डाउनटाइम नहीं होना चाहिए।
निकोलस

4

मैं पहले से ही .net ऐप्स और TFS के लिए जेनकिंस का उपयोग कर रहा हूं।

  1. अपने प्रोजेक्ट में आवश्यक कॉन्फ़िगरेशन जोड़ें और कोड में परिवर्तन और चेक-इन करें।
  2. TFS से नवीनतम प्राप्त करें (TFS प्लग-इन का उपयोग करें)
  3. प्रोजेक्ट बनाएँ (MSBuild प्लग-इन का उपयोग करें)। आप कमांड लाइन तर्कों का उपयोग करके Msbuild से कोड प्रकाशित कर सकते हैं।
  4. Msdeploy.exe कमांड ("C: \ Program Files (x86) \ IIS \ Microsoft वेब पर स्थित V2_ msdeploy.exe" का उपयोग करके प्रकाशित स्थान से गंतव्य तक कोड सिंक करें।
  5. आप ईमेल भेज सकते हैं और जेनकिंस के माध्यम से बैकअप भी कर सकते हैं।

आप यूनिट परीक्षण को निष्पादित करने के लिए MSTest.exe का उपयोग कर सकते हैं और इसे जेनकिन कंसोल पर दिखा सकते हैं या परीक्षण परिणाम भी प्रकाशित कर सकते हैं।

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