2010-11-02 10 views
21

मैं वर्तमान में निरंतर एकीकरण सर्वर के लिए एक अच्छा सेटअप खोज रहा हूं जो कई लिनक्स वितरणों के लिए विभिन्न सी ++ अनुप्रयोगों का निर्माण करेगा।सी ++ के लिए सतत एकीकरण सर्वर - लाइब्रेरी निर्भरताओं के बारे में क्या?

मेरा प्राथमिक प्रश्न यह है कि यहां अन्य उपयोगकर्ताओं ने लिनक्स वितरण के बीच सिस्टम पुस्तकालयों में मतभेदों को कैसे संभाला है?

हालांकि यूआई पुस्तकालयों जैसे अनुप्रयोगों के साथ प्रत्यक्ष अप्रत्यक्षताएं बनाने के लिए अपेक्षाकृत आसान हो सकता है, "अप्रत्यक्ष" निर्भरता जैसे कि ग्लिबैक एक बड़े दर्द की तरह दिखता है यदि उन्हें हर बार एप्लिकेशन के साथ बनाया जाना था। इसलिए मैं प्रत्येक वितरण के लिए एक अलग आभासी मशीन में वास्तविक निर्माण निष्पादन को स्थानांतरित करने की सोच रहा हूं, उदा। आदेश चलाने के लिए rlogin का उपयोग कर। मेरा लक्ष्य बिल्ड-मशीन लाइब्रेरी संस्करणों और लक्षित वितरण में तैनात किए गए बाइनरी असंगतताओं को रोकने के लिए है।

क्या किसी को यहां ऐसी प्रक्रिया के साथ कोई अनुभव है और यह बता सकता है कि उपरोक्त एक व्यवहार्य दृष्टिकोण की तरह लगता है या नहीं?

+0

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

+0

मैं भी इस प्रश्न का एक अच्छा जवाब देखना चाहता हूं।आईएमएचओ, यह "मॉड्यूल" के रूप में अन्य मॉड्यूल के लिए "कॉन्फ़िगरेशन प्रबंधन" मुद्दों पर जाता है, और एक lib को जोड़कर, इसका मतलब है कि आप को स्पष्ट रूप से अप-स्ट्रीम libs को लिंक करना होगा। चूंकि इसके लिए lib-versioning-limitations की आवश्यकता होती है, इसलिए यह समस्या जटिल हो जाती है (उदा।, डीएलएल-नरक, या RPM-hell)। बाध्य संगत संस्करणों के संदर्भ में अप्रत्यक्ष निर्भरता प्रचार आवश्यक है। – charley

उत्तर

4

Buildbotbuildmasters and buildslaves की धारणा है।

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

हमारे पास कई अलग-अलग प्लेटफॉर्म बनाने के लिए बिल्डबॉट स्थापित है, उनमें से कुछ वीएम हैं, और यह हमारे लिए अच्छा काम कर रहा है।

6

हम इस उद्देश्य के लिए Jenkins (संगत एकीकरण) और CMake (बिल्ड सिस्टम) का उपयोग करते हैं। जेनकींस बिल्डबॉट के समान है, यानी इसमें बिल्डमास्टर और बिल्डस्लेव भी हैं। वर्तमान में मैंने 4 अलग-अलग प्लेटफार्मों (एफसी 8, एफसी 10, एफसी 12 और विंडोज 7) के निर्माण के लिए 8 गुलाम बनाए हैं। हम डीबग और रिलीज बाइनरी दोनों का निर्माण करते हैं, इसलिए मैंने प्रत्येक प्लेटफॉर्म और बिल्ड प्रकार के लिए एक गुलाम को समर्पित किया।

क्यूटी & बूस्ट जैसे तीसरे पक्ष के पुस्तकालयों के लिए, मैंने उन्हें प्रत्येक प्लेटफॉर्म पर संकलित किया और उन्हें एक अलग भंडार में चेक किया।

@esavard: हम क्रॉस संकलन करने के लिए सीएमके 2.8 का उपयोग करते हैं, मैंने minigw का उपयोग नहीं किया है, लेकिन एक त्वरित Google खोज इंगित करता है कि यह संभव है। सीएमके और मिनीजीडब्ल्यू का उपयोग कर लिनक्स पर विंडोज के लिए संकलन पार करने के लिए ट्यूटोरियल में a link है।

मैंने बिल्डबॉट का उपयोग नहीं किया है और इसकी विशेषताओं पर टिप्पणी नहीं कर सकता लेकिन सोचा कि मुझे एक विकल्प का उल्लेख करना चाहिए जिसका हम वर्तमान में उपयोग कर रहे हैं।

उम्मीद है कि इससे मदद मिलती है।

+0

सीएमके के लिए +1 ... – Macke

+0

क्या आपको लगता है कि मैं सीएमके के बजाय qmake का उपयोग करके कुछ हासिल कर सकता हूं (हम अभी qmake का उपयोग करते हैं और हम इससे पहले स्कैन का उपयोग कर रहे थे)? –

+0

मैंने qmake का उपयोग नहीं किया है, इसलिए मैं यह सुनिश्चित नहीं कर सकता कि यह कैसे काम करेगा। [यहां] (http://silmor.de/29) एक लिंक है जो क्यूमेक के साथ लिनक्स पर विंडोज के लिए क्यूटी एप्स क्यूटी ऐप्स के बारे में बात करता है। स्कैन भी बहुत अच्छे हैं, मैंने सीएमके को चुनने से पहले इसे आजमाया। हम एकाधिक आईडीई के समर्थन के कारण सीएमके के साथ गए थे हमारे पास ग्रहण, कोड :: ब्लॉक, वीएस05, वीएस 10 और एमएक्स का उपयोग करने वाले लोग हैं। केवल जिन समस्याओं में मैंने भाग लिया था वे सीएमके का उपयोग कर प्री-कंपाइलड हेडर का समर्थन करने के लिए थे। – user258808

0

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

अच्छी बात यह है कि मैं परीक्षण करना चाहता हूं, परीक्षण चरण को स्वचालित चरण एक चरणबद्ध करें लेकिन मुझे अभी तक ऐसा करने का समय नहीं दिया गया है।

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