2010-06-22 13 views
18

बिल्ड पूर्ण होने के बाद आपके एप्लिकेशन को तैनात करने के वर्कफ़्लो को प्रबंधित करने के लिए आप क्या उपयोग करते हैं? मैं सिर्फ सर्वर पर फाइलें प्राप्त करने के कार्य के बारे में बात नहीं कर रहा हूं, इसके बारे में बात कर रहा हूं कि इसके बाद क्या होता है। सत्यापन, परीक्षण, अनुमोदन, उत्पादन के लिए प्रवास, अवकाश ग्रहण करने वाले पुराने बनाता है, आदिऐप बिल्ड/तैनाती वर्कफ़्लो

उदाहरण:

  1. बिल्ड पूरा करता
  2. बिल्ड एक परीक्षण वातावरण
  3. परीक्षण पूरा हो गया है के लिए तैनात किया गया है (मैनुअल चरण)
  4. यदि परीक्षण यूएटी को तैनात करता है तो
  5. यू को अस्वीकार कर दें एटी पूरा हो गया है (मैनुअल कदम)
  6. UAT गुजरता है किसी और उत्पादन में तैनात हैं अस्वीकार निर्माण
  7. निर्माण रिटायर प्रॉड

किसी भी अच्छा अनुप्रयोगों वहाँ में पहले कि लंबे समय से चल रहा निर्माण कार्य प्रवाह का प्रबंधन कर सकते हैं?

अद्यतन

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

+0

यदि आप किसी प्रकार का वातावरण जोड़ सकते हैं जिसके लिए आप विकास कर रहे हैं, तो उचित समाधान का सुझाव देना आसान होगा। – rasjani

उत्तर

3

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

  1. बिल्ड पूरा करता है (Maven के साथ बनाएँ CruiseControl)
  2. बिल्ड एक परीक्षण पर्यावरण के लिए तैनात किया जाता है (परीक्षण गुजरता है UAT को तैनात किसी और का निर्माण अस्वीकार (परीक्षण में विफल रहते हैं, Maven अंत नहीं होगा, के लिए कोई कॉल चींटी कार्य, CruiseControl से कहा जाता है)
  3. परीक्षण पूरा हो गया है (मैनुअल कदम) (Maven आप इस)
  4. बताता है चींटी तैनाती)
  5. यह चींटी और बैश स्क्रिप्ट का एक मिश्रण के साथ काफी

      यहाँ से, हम करते

    1. UAT पूरा हो गया है (मैनुअल कदम)
    2. UAT गुजरता है करने के लिए लागू करते हैं किसी और उत्पादन में निर्माण
    3. निर्माण रिटायर प्रॉड

    कठिन बात हमने पाया है के बाद से हम गर्म तैनाती के साथ अच्छे अनुभवों नहीं पड़ा है हमारे आवेदन सर्वर को पुनः आरंभ करने के लिए था में पहले से अस्वीकार लेकिन यह केवल Maven, चींटी के साथ संभव है तथा दे घुमा के।

    +1

    बकाया अभी भी सक्रिय होने पर इसे स्वीकार नहीं करने के लिए क्षमा चाहते हैं। मैं शादी करने में व्यस्त था और मेरे सवाल के बारे में भूल गया। उम्मीद है आप समझ गए होंगे। –

    +0

    कोई समस्या नहीं है और बाद में खुशी से रहती है। – Eldelshell

    2

    कई कंपनियां एमएस प्रोजेक्ट जैसे प्रोजेक्ट शेड्यूलिंग एप्लिकेशन का उपयोग करती हैं।

    यहां एक ओपन सोर्स प्रोजेक्ट शेड्यूलिंग एप्लिकेशन है, Open Workbench, जो आपको उपयोगी लगेगा। इसमें सीमाएं हैं, लेकिन मैंने इसे अपने शेड्यूल प्रबंधित करने के लिए उपयोग किया है।

    2

    ThoughtWorks Go हिस्सा दिखता है। हम इस समय Maven का उपयोग करते हैं, लेकिन फिर भी इसकी क्षमताओं के एक फ्रेशन पर।

    +0

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

    2

    मुझे सच में नहीं लगता कि यह कुछ कार्यों के साथ एंटी (http://ant.apache.org) का उपयोग क्यों नहीं किया जा सकता था। चूंकि इन चीजों का समय मैन्युअल है और प्रत्येक माहौल में केवल एक ही समय में सॉफ़्टवेयर की एक प्रति हो सकती है, ऐसा करने के लिए बहुत कुछ नहीं लगता है लेकिन वर्कफ़्लो को कोड दें और इसमें लोगों को दें।

    2

    यदि आप अपने परीक्षणों को स्वचालित करने के लिए प्रबंधन करते हैं (और आपके द्वारा किए जाने वाले सॉफ़्टवेयर के आधार पर, कोई कारण नहीं है), तो आप किसी निरंतर एकीकरण सॉफ़्टवेयर का उपयोग करने में सक्षम होना चाहिए।

    बात यह है कि, प्रत्येक चरण को उन कार्यों के रूप में लिखा जा सकता है जिन्हें पिछले मामले के परिणाम के आधार पर एक दूसरे के बाद निष्पादित किया जा सकता है।

    उदाहरण के लिए, मेरे पास क्रूज़ कंट्रोल का एक सेटअप है जो आप यहां वर्णन करते हैं, परीक्षण चरण unittests (C++/qt) का गुच्छा चला रहा था और यूट सामान टेस्टेबिलिटी ड्राइवर के साथ लिखा गया था।

    1

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

    +0

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

    2

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

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

    एक बार जब आप इन चीजों को स्वचालित कर लेते हैं, तो आप इन कार्यों को निर्धारित करने के लिए निरंतर एकीकरण सर्वर का उपयोग कर सकते हैं या मांग पर कर सकते हैं। मैं Bamboo (मैं एटलसियन के लिए काम करता हूं) से सबसे परिचित हूं, लेकिन मुझे यकीन है कि CruiseControl और Hudson समान विशेषताएं हैं। यहां आपके द्वारा बांस में ऐसा करेंगे:

    1. अपने UAT तैनाती, जो कार्यान्वित अपने तैनाती परीक्षण
    2. के बाद स्क्रिप्ट निर्णय करें कि आप दोनों में से किसी के द्वारा, निर्माण को गति प्रदान करना चाहते हैं के लिए एक नया निर्माण योजना बनाएं:
      • आपका मुख्य निर्माण पर निर्भरता के रूप में जोड़ने, ऐसी है कि वह एक सफल निर्माण पर स्वचालित रूप से चलाता है
      • यह एक समय पर चलाने बनाने के लिए, ताकि आप हर रात को तैनाती पाने
      • बनाते हैं यह केवल, मैन्युअल रूप से शुरू हो रहा है, जिसमें मामला आप जूस जब आप इसे तैनात करना चाहते हैं तो बिल्ड को चलाएं।
    3. बिल्ड के लिए अनुमतियों को कॉन्फ़िगर करें ताकि केवल अधिकृत उपयोगकर्ता आपके सर्वर पर संस्करणों को तैनात कर सकें।

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

    0

    हम इस पुराने वेल्श लड़के का उपयोग एलिस्टेयर नामक करते हैं। एक जादू की तरह काम करता है।

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