2011-10-14 16 views
28

हम 3 वातावरण है:बहुस्तरीय तैनाती के लिए टीम सिटी सर्वोत्तम प्रथाएं क्या हैं?

  • विकास: टीम शहर यहां तैनात सबवर्सन ट्रंक पर करता है के लिए।
  • स्टेजिंग: रिलीज उम्मीदवारों के निर्माण पर उपयोगकर्ता स्वीकृति यहां की जाती है।
  • उत्पादन: जब यूएटी पास हो गया, तो उत्तीर्ण कोड सेट यहां तैनात किया गया है।

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

फिर, मैं कलाकृतियों को बचाने के लिए प्रत्येक स्टेजिंग परिनियोजन चाहता हूं। जब एक स्टेजिंग परिनियोजन यूएटी पास करता है, तो मैं उस पैकेज को उत्पादन में तैनात करना चाहता हूं।

मुझे यकीन नहीं है कि इसे टीम सिटी में कैसे सेट अप करें। मैं संस्करण 6.5.4 का उपयोग कर रहा हूं, और मुझे पता है कि एक "प्रचार ..." कार्रवाई/ट्रिगर है, लेकिन मुझे लगता है कि यह सहेजे गए कलाकृतियों पर निर्भर करता है। मैं कलाकृतियों के रूप में हर बार विकास तैनाती को बचाना नहीं चाहता हूं, लेकिन मैं चाहता हूं कि स्टेजिंग परिनियोजन चलाने वाले व्यक्ति को स्टेजिंग पर तैनात करने के लिए कौन सी सफल विकास परिनियोजन निर्दिष्ट करने में सक्षम हो।

मुझे पता है कि ऐसा करने के कई तरीके हो सकते हैं, क्या कोई सर्वोत्तम अभ्यास है? आपका सेटअप क्या है और आप इसकी सिफारिश क्यों करते हैं?

अद्यतन:

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

अद्यतन 2

मैं अभी भी 1 पुरस्कार इनाम के दिन है, और मैंने सोचा था कि नीचे इस सवाल का जवाब मेरे सवाल का जवाब नहीं था, लेकिन यह फिर से पढाना के बाद मुझे लगता है कि मेरे सवाल नहीं था कि मैं क्या यह सोचा था।

क्या स्टेजिंग/उत्पादन वातावरण में किसी प्रकार की स्वचालित तैनाती के लिए टीम सिटी का उपयोग करने के कोई तरीके हैं?

+0

थोड़ा देर से यहाँ लेकिन, जैसे तुम सच में एक परिभाषित [DevOps toolchain] (https://en.wikipedia.org/wiki/DevOps_toolchain) और सबसे निश्चित रूप से एक आवेदन रिहाई स्वचालन उपकरण से लाभान्वित होंगे लगता है। यह मानक बन रहा है - सीआई की टीमसिटी जैसे टूल और समन्वय और तैनाती के लिए एआरए टूल्स में लिंक करना। https://en.wikipedia.org/wiki/Application_release_automation –

उत्तर

15

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


के बारे में अनुमतियाँ, मुझे लगता है आप से क्या मतलब है "केवल कुछ भूमिका के साथ लोगों/उत्पादन करने के लिए एक तैनाती स्क्रिप्ट चला सकते हैं अनुमति" और जुलिएन के प्रति आपकी प्रतिक्रिया है कि आप शायद devs उत्पादन करने के लिए प्रत्यक्ष की तैनाती नहीं करना चाहते लेकिन आप चाहते हैं कि वे परियोजना में अन्य बिल्डों को देख सकें। यह संभवत: जूलियन के परिदृश्य के समान ही है जब आईटी टीमसीटी से "ऑफलाइन" प्रक्रिया लेता है (या तो यह या यह सिर्फ आईटी कर रहा है जो मैं करता हूं और जोर देता हूं कि उन्हें एक अलग, पूरी तरह से अक्षम प्रक्रिया का उपयोग करना चाहिए क्योंकि "यह वही तरीका है जो हम करते हैं "- मुझे उस पर शुरू नहीं मिलता है)

समस्या यह है कि TeamCity में सभी अनुमतियों परियोजना के खिलाफ लागू होते हैं और कभी नहीं निर्माण आप अपने सभी बनाता है के साथ एक परियोजना मिल गया है, इसलिए यदि बस है! , देव बनाम उत्पादन निर्माण के लिए अनुमति ग्रैन्युलरिटी लागू करने की कोई क्षमता नहीं है। मैंने पहले इसे दो तरीकों से निपटाया है:

  1. इसे सामाजिक रूप से संभाल लें। हर कोई जानता है कि उनकी जिम्मेदारियां क्या हैं और आप जो भी चलाने के लिए नहीं हैं, वह नहीं चलाते हैं। यदि आप करते हैं, तो यह आपके लिए ऑडिट और पता लगाने योग्य है। परिपक्वता होने पर ठीक काम करें, ज़िम्मेदारियों का स्पष्ट विचार और अनुपालन आवश्यकता जो इसे प्रतिबंधित करती है।
  2. अलग-अलग परियोजनाएं बनाएं। मुझे ऐसा करने की इच्छा नहीं है लेकिन समस्या को ठीक करता है। आप अभी भी किसी अन्य प्रोजेक्ट से कलाकृतियों का उपयोग कर सकते हैं और इसका मतलब है कि आप केवल एक प्रोजेक्ट के साथ समाप्त होते हैं जिसमें उन सभी वातावरणों को तैनात किया जाता है जो आप सभी देवताओं के लिए खुश हैं और संवेदनशील वातावरण के लिए एक और प्रोजेक्ट के लिए खुश हैं। नकारात्मकता यह है कि यदि उत्पादन निर्माण विफल रहता है, तो जिन लोगों को आप शायद समर्थन चाहते हैं, वे इसे एक्सेस नहीं कर पाएंगे!

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

एक बार जब आप अपने देव तैनाती से इन कलाकृतियों को प्राप्त कर लेते हैं, तो आप उन्हें अलग-अलग निर्माण के माध्यम से अपने अन्य वातावरण में फिर से तैनात कर सकते हैं।आपको कॉन्फ़िगरेशन ट्रांसफॉर्म (मान लीजिए कि आप उनका उपयोग कर रहे हैं) के साथ कोई समस्या होगी, लेकिन इसे संबोधित करने के बारे में कुछ विचारों के लिए this 2 part series का एक पठन है (मुझे अभी तक इसे विस्तार से अवशोषित नहीं करना है, लेकिन मेरा मानना ​​है कि वह सही रास्ते पर है)।

क्या यह आपके प्रश्न का उत्तर देता है? क्या अभी भी कुछ याद आ रही है?

+0

उत्कृष्ट उत्तर के लिए धन्यवाद। मैं अब अनुमतियों पर बहुत स्पष्ट हूं। मुझे उस 2 भाग श्रृंखला को पढ़ना होगा जो आपने कॉन्फ़िगरेशन ट्रांसफॉर्म के संबंध में लिंक किया है। दुर्भाग्यवश, हमारे पास वर्तमान में बहुत कम .NET 4.0 प्रोजेक्ट हैं। हमारे अधिकांश ऐप्स 2.0 ढांचे हैं, और हम कॉन्फ़िगरेशन फ़ाइलों को प्रबंधित करने के लिए बहुत ही कमजोर और भाग्यशाली "web.config पर प्रतिलिपि न करें" पर भरोसा कर रहे हैं। इसलिए, मेरे पास बस एक साधारण NANT है (क्योंकि यह मुझे MSBuild से अधिक आसान लगता है) पुरानी फ़ाइलों को हटाने और web.config को छोड़कर, नए लोगों के साथ प्रतिलिपि बनाने के लिए स्क्रिप्ट। – JustinP8

+0

ध्यान रखें कि आप अभी भी अपनी परियोजनाओं को .NET 2 * और * कॉन्फ़िगरेशन ट्रांसफ़ॉर्म में बदल सकते हैं, आपको केवल विजुअल स्टूडियो 2010 की आवश्यकता है। यह आपका सबसे अच्छा मध्य ग्राउंड हो सकता है। –

+0

दिलचस्प ... हम उन्हें 2010 के समाधान में चल रहे हैं, लेकिन किसी कारण से मैं यह नहीं समझ पाया कि कॉन्फ़िगरेशन रूपांतरणों को कैसे काम करना है। मैंने सोचा कि ऐसा इसलिए था क्योंकि यह 2.0 फ्रेमवर्क में चल रहा है, 4.0 नहीं। – JustinP8

8

हमने टीमसिटी को हमारे बिल्ड सर्वर के रूप में भी इस्तेमाल किया है, इसलिए मुझे अपने सेटअप की व्याख्या करने दें। हम 4 वातावरण

  • विकास देव द्वारा प्रयोग किया जाता तैनाती की जांच और कुछ UAT
  • उत्पादन

के लिए चरण एक सर्वर वातावरण परीक्षण प्रयोजनों के लिए

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

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

    इसके बजाय हम क्या करते हैं कि हम क्यूए बिल्ड से कलाकृतियों का उत्पादन करने के लिए टीमसिटी का उपयोग करते हैं। कलाकृतियों स्टेजिंग/उत्पादन तैनाती के लिए भेजे गए तैनाती किट हैं।

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

    मैं समझता हूं कि आपकी ज़रूरतें हमारे मुकाबले थोड़ी अलग हो सकती हैं लेकिन मुझे आशा है कि इससे आपको सर्वश्रेष्ठ सेटअप खोजने में मदद मिलेगी।

  • +1

    मेरे सहयोगी और मैं एक क्यूए शाखा का उपयोग करके चर्चा कर रहे थे, और फिर कलाकृतियों के साथ स्टेजिंग/उत्पादन तैनाती को संभालने के लिए यह समझदारी होगी। मैं अभी भी वास्तव में उत्पादन परिनियोजन के लिए निर्माण चलाने के लिए लोगों की अनुमतियों का एक निश्चित सेट देने में सक्षम होना चाहता हूं, इस तरह हमारे पास टीम सिटी के अंदर लॉग के रूप में उत्पादन तैनाती का एक अच्छा इतिहास है। Subversion में विलय के बारे में सोचा है कि मुझे पहले से ही सिरदर्द दे रहा है! :) हम डीवीसीएस में जाने की कोशिश कर रहे हैं ... जो इस तरह के सेटअप को अधिक आसान बना देगा। – JustinP8

    3

    मुझे लगता है कि आप Octopus Deploy या BuildMaster की तरह कुछ की जाँच कर सकते हैं। वे तैनाती प्रथाओं के लिए एक अच्छी संरचना प्रदान करते हैं जिन्हें आप स्वचालित करने की कोशिश कर रहे हैं। दोनों उपकरण अच्छी तरह से टीमसिटी के साथ एकीकृत करते हैं।

    असल में, आप सीआई के लिए टीमसिटी का उपयोग करना जारी रखेंगे, और आप टीमसिटी के साथ अपने विकास पर्यावरण पर भी तैनाती जारी रख सकते हैं, लेकिन आप स्टेजिंग के लिए मौजूदा (मौजूदा) निर्माण को बढ़ावा देने के लिए तैनाती उपकरण में से एक का उपयोग करेंगे और उत्पादन।

    संपादित 2014-02-05 - अद्यतन

    BuildMaster के निर्माताओं के लिए एक नया तैनाती सुविधा है - ProGet Deploy - अपने NuGet सर्वर उपकरण, ProGet के लिए। यह ऑक्टोपस परिनियोजन के समान ही है, इसलिए मैंने अभी तक इसके साथ नहीं खेला है, इसलिए ऑक्टोपस के पास बेहतर वातावरण हो सकता है कि कौन से संस्करण तैनात किए गए हैं; मैं अभी भी उस महत्वपूर्ण विशेषता के कारण बिल्डमास्टर का उपयोग करता हूं।

    इसके अलावा, मैं वर्तमान में दोनों TeamCity, BuildMaster, और PROGET उपयोग कर रहा हूँ और मैं कभी नहीं स्वचालित नहीं होने बनाता करने के लिए वापस जाना चाहता हूँ। वर्तमान में, मेरे सभी ऐप्स BuildMaster के माध्यम से बनाए और तैनात किए गए हैं। मेरी सभी लाइब्रेरी परियोजनाएं टीमसिटी में बनाई गई हैं और प्रोगेट पर तैनात हैं। NuGet आधारभूत संरचना के माध्यम से मेरी आंतरिक निर्भरताओं का प्रबंधन करने में सक्षम होने के कारण अच्छा है।

    संबंधित मुद्दे