2009-08-13 16 views
10

मैं PHPUnderControl का उपयोग कर रहा हूं जो मेरे निरंतर एकीकरण और इकाई परीक्षण के लिए क्रूज़ कंट्रोल के शीर्ष पर चलता है। मेरे पास phpdoc उत्पन्न करने के लिए PHPDocumentor चलाने के लिए भी सेटअप है और यह मेरे लिए कोडिंग मानकों को लागू करने के लिए PHP कोड स्निफर चलाता है। लेकिन अब मैं रिमोट सर्वर पर तैनाती को आसान बनाने के लिए उसी सर्वर (उबंटू) पर कुछ सेट अप करना चाहता हूं। मेरे पास पहले से ही यह सेटअप है इसलिए प्रत्येक सफल निर्माण के बाद सर्वर पर प्रोजेक्ट फ़ोल्डर में एक निर्देशिका में ट्रंक से एक एसवीएन निर्यात किया जाता है।PHP बिल्ड सिस्टम

मैं एक छोटी सी कस्टम PHP स्क्रिप्ट लिखने के बारे में सोच रहा हूं जो एक कॉन्फ़िगर किए गए रिमोट सर्वर पर एसएसएच करेगा, नवीनतम निर्यात को टैरबॉल करेगा, इसे कॉपी करेगा, अनार करेगा और किसी भी माइग्रेशन चलाएगा। इस तरह की एक PHP स्क्रिप्ट प्रारंभ में बहुत कठिन नहीं होनी चाहिए, जब तक कि मुझे अंततः एकाधिक सर्वरों पर स्केलिंग शुरू करने की आवश्यकता न हो। मुझे पता है कि Phing, Fabric और अन्य जैसे सिस्टम हैं।

मेरा सवाल यह है कि अगर किसी के पास कोई अनुभव है और कुछ प्रो और कॉन प्रदान कर सकते हैं? मैंने अपने सर्वर पर फ़िंग सेट करना शुरू कर दिया है और उनके साथ खेलने के लिए फैब्रिक की कोशिश कर रहा हूं, लेकिन यह सोच रहा था कि अगर किसी ने उन्हें अधिक व्यापक रूप से उपयोग किया है, या उन्हें स्केल करना है, तो कुछ फीडबैक प्रदान कर सकता है।

उत्तर

8

मैं PHP के साथ Capistrano का उपयोग किया है (भले ही यह के रूप में यह रूबी में लिखा है एक रेल-y बात की अधिक है)।

यह वास्तव में उपयोग करने के लिए सीधा है, लेकिन कहा कि मुझे इसके साथ बहुत अधिक पैमाने पर स्केल नहीं करना पड़ा है। हालांकि हम विभिन्न विभिन्न स्टेजिंग/उत्पादन सर्वर पर तैनात करते हैं, और उन परिदृश्यों में बहु-चरण विस्तार उपयोगी रहा है।

हालांकि अधिकांश चीज़ें रूबी की तरह, हुक का एक बहुत और "जादू" अगर आप Capistrano करने के लिए और कुछ इसके साथ मुश्किल कोशिश कर नया हो जो भ्रामक प्राप्त कर सकते हैं।

यह अन्य तैनाती उपकरण की तुलना में कैसे करता है, मैं टिप्पणी नहीं कर सकता। मुझे पता है कि हम फ़िंग का उपयोग करते थे, लेकिन मुझे अनिश्चितता है कि हम कैपिस्ट्रानो में क्यों गए।

+0

मैं Capistrano पसंद है। +1 –

0

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

1

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

0

मैंने अपने स्वयं के rsync को इस तरह के उपकरण के रूप में लिखा है क्योंकि मैं तीसरी दुनिया के contry में एक बहुत ही खराब इंटरनेट कनेक्शन से काम करता हूं और सभी प्रकार की असफलताओं और भूखे कनेक्शन हैं ताकि rsync काम नहीं कर सके।

अपने दूरस्थ सिस्टम पर आप कम से कम एक litte स्क्रिप्ट चल माइग्रेशन से पहले बैकअप कर रही है लिखना चाहिए।

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

लेकिन सबसे पहले - सोचें कि यह वास्तव में आपके समय के लायक है - अगर आप केवल एक चौथाई अपडेट करते हैं तो कागज़ पर एक साधारण चेकलिस्ट पर्याप्त होगी।

2

यदि आपको कैपिस्ट्रानो पसंद है, लेकिन कामना है कि यह थोड़ा और PHP'ish था, Fredistrano देखें।

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

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

2

बल्डर नामक एक नया निर्माण उपकरण है। यह वाईएमएल की बजाय कॉन्फ़िगरेशन के लिए वाईएमएल का उपयोग करता है, जैसे कि अधिकांश बिल्ड सिस्टम, और इसकी अत्यधिक एक्स्टेंसिबल।

http://bldr.io

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