2009-07-20 18 views
7

मैं एक सीआई सर्वर बना रहा हूं और वास्तविक अनुभव पाने के लिए वास्तव में सराहना करता हूं, और लोगों का उपयोग करने पर एक सिंहावलोकन।आपका निरंतर एकीकरण कैसे काम करता है?

तो, आपकी बिल्ड प्रक्रियाएं क्या हैं? वहाँ की तरह कुछ है:

  • एक कोड और परीक्षण के लिए प्रति घंटा,
  • एक और दैनिक निर्माण MSI और कोड मैट्रिक्स के लिए
  • ,
  • आदि,

और यह भी, क्या अपना पूरा का निर्माण करता है प्रक्रिया का उपयोग करें? ,

  • टीम शहर
  • MSBuild,
  • nunit - परीक्षण के लिए,
  • Ncover - परीक्षण के कवरेज के लिए,
  • ndepend - कोड मैट्रिक्स के लिए,
  • सैंडकैसल: आप की तरह कुछ का उपयोग करते हैं - कोड टिप्पणियों द्वारा प्रलेखन के लिए,
  • testcomplete - क्यूए परीक्षणों के लिए,
  • आदि?

साझा करें! ;)

+2

कृपया देखें: http://stackoverflow.com/questions/102902/what-is-a-good-ci-build -प्रोसेस – Shog9

+2

@ शोग 9: जिस प्रश्न का आप उल्लेख करते हैं, वह सीआई को अधिक सार स्तर पर चर्चा करता है (हिम्मत मैं कहता हूं * मेटा *?), जबकि यह प्रश्न विशिष्ट कार्यान्वयन विवरण मांगता है। मुझे लगता है कि वे इसे खोलने के लिए पर्याप्त भिन्न हैं। – Treb

उत्तर

3

हमने हाल ही में CITCON उत्तरी अमेरिका (निरंतर एकीकरण और परीक्षण सम्मेलन) में एक समान बातचीत की थी, जहां हमने सभी ने अपने अनुभव साझा किए और सरल सीआई से सड़क मानचित्र को एक साथ बनाने की कोशिश की ताकि सीआई और रिलीज सिस्टम बनाया जा सके।

मूल सम्मेलन नोट here हैं। फ़्लिकर photostream के साथ। ए cleaned up version भी urbancode ब्लॉग पर उपलब्ध है।

ऑस्ट्रेलियाई टीम CITCON ब्रिसबेन में विषय पर दोबारा गौर किया और इस बात का एक pencast उपलब्ध

आशा उन संसाधनों के कुछ उपयोगी हो रहा है।

2

जावा के लिए, हम हर प्रतिबद्ध के लिए वहाँ एक निर्माण, जिसमें सब कुछ संकलित किया गया है और सभी परीक्षण इकाइयों Maven2 का उपयोग कर चलाए जा रहे हैं है, HudsonSVN भंडार में प्रतिबद्ध के लिए जाँच का एक उदाहरण है। इसके अलावा हडसन Sonar के उदाहरण से जुड़ा हुआ है जो हमें कोडिंग शैली और परीक्षण कवरेज के बारे में आंकड़े बताता है।

Sonar screenshot http://nemo.sonarsource.org/charts/trends/60175?sids=1024412,1025601,1026859,1073764,1348107,2255284&metrics=complexity,mandatory%5Fviolations%5Fdensity,lines,coverage&format=png&ts=1244661473034

मीठा :)

+0

क्या आप लगभग प्रति दिन काम की संख्या जानते हैं? – Treb

0

मेरे मामले में (एक इन-हाउस डिजाइन किया/बनाया/समर्थित सीबी प्रणाली), VCS के पेड़ किसी दिए गए सीबी config द्वारा लक्षित में करता है स्वचालित रूप से एक सीबी कतार अनुरोध (एक सीबी चल रहा है, जबकि कई अनुरोधों को एक में गिर गया है, जो वर्तमान सीबी प्रक्रिया के रूप में जल्द ही चला जाएगा)।

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

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

रिलीज इंजीनियरिंग अभ्यास के शीर्ष पर नहीं, मुझे लगता है, लेकिन विकल्पों की अपनी सीमा में यह बहुत ही विविधता, निर्भरता-भारीपन, और सी ;-) की एक विस्तृत विविध परियोजनाओं के लिए हमारे लिए अच्छा काम करता है।

2

मेरी पिछली परियोजना पर हमारे पास दो luntbuild सर्वर और एक एसवीएन सर्वर होता था।

पहली लंटबिल्ड मशीन का निर्माण परियोजना के निर्माण के लिए किया गया था - प्रत्येक प्रतिबद्धता के लिए वृद्धिशील + यूनिट परीक्षण और फिर साफ बिल्ड + यूनिट परीक्षण + रात के दौरान पूर्ण पैकेजिंग स्थापित करें।

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

2

हम क्रूज़ कंट्रोल.net का उपयोग हमारे सीआई सर्वर के रूप में नेंट के संयोजन में कर रहे हैं। अधिकतर बिल्ड (हमारे पास लगभग 30 बिल्ड हैं) परिवर्तनों पर ट्रिगर होते हैं। कुछ कम महत्वपूर्ण भारी निर्माण केवल हर रात एक बार ट्रिगर होते हैं, यह रखरखाव के लिए भी जाता है जो सामान्य निर्माण के अधिकांश साफ़ करता है।

हमारे सी/सी ++ कोड के लिए हम एक मालिकाना निर्माण प्रणाली का उपयोग कर रहे हैं जो कंपनी में उपलब्ध प्रत्येक मशीन (जैसे IncrediBuild, लेकिन अधिक लचीला) में कोड निर्माण वितरित करने में सक्षम है। हमारे सी # बिल्ड के लिए हम सीधे devenv.com पर कॉल करते हैं, लेकिन हम यूनिट परीक्षण चलाने के लिए एनयूनीट का उपयोग करते हैं। हमारे सी ++ यूनिट परीक्षण हमारे स्वयं के ढांचे का उपयोग कर रहे हैं, उन्हें परिणाम एक्सएमएल में चला रहे हैं जो एनयूनीट के समान ही है। कुछ अतिरिक्त कोड जांच के लिए हम हर रात पक्लिंट चलाते हैं। अभी के लिए, अभी तक कोई कोड कवरेज नहीं किया गया है, जो शर्म की बात है।

हम अपने उत्पाद के फाइनल निर्माण को तैयार करने के लिए सिस्टम का भी उपयोग कर रहे हैं। यह सिर्फ पहला कदम है, इसे अभी भी कुछ मैन्युअल कार्रवाइयों की आवश्यकता है।

2

प्रक्रियाएं बनाएं - हमारे पास वर्तमान में बड़ी संख्या में सक्रिय कोड हैं जो हम लगातार चलते हैं।

  • त्वरित सतत एकीकरण का निर्माण हर इतना प्रतिबद्ध के बाद कि हम टूट कोड, या टूट परीक्षण के बारे में प्रतिक्रिया प्राप्त कर सकते हैं चलाता है कि जितनी जल्दी संभव हो
  • पूर्ण स्वचालित रूप: प्रत्येक शाखा के लिए हम दो चरणों में बांटा गया बनाता है निर्माण जो हर दिन दो बार चलता है जो गारंटी देता है कि कोड स्क्रैच से शुरू होने के लिए शुरू होगा।

हमारे निर्माण प्रक्रिया Zed Builds And Bugs द्वारा समन्वित है इसमें निम्नलिखित शामिल चींटी, बनाओ, Maven, JUnit, FindBugs, शेल स्क्रिप्ट (ऐतिहासिक), विंडोज, लिनक्स, AIX, हिमाचल प्रदेश, और Solaris भर में।

हम वर्तमान में ऐतिहासिक प्रवृत्ति और आंकड़ों के अधिक रोल-अप को शामिल करने की प्रक्रिया में हैं ताकि हम उच्च स्तर से देख सकें कि देव प्रक्रिया कैसे चल रही है।

0

जेनकिन निरंतर-एकीकरण (सीआई) के लिए सबसे अच्छा उपकरण है। सीआई कुछ भी नहीं है लेकिन अक्सर आपके भंडार (एससीएम) में कोड को एकीकृत करता है। इसके अलावा, अपने कोड के निर्माण के लिए जेनकींस में एससीएम को एकीकृत करना।

आप जेनकींस में मतदान आवृत्ति सेट कर सकते हैं। ताकि, जब भी एससीएम में परिवर्तन किए जाते हैं और प्रतिबद्ध होते हैं, तो जेनकींस एक निर्माण करने की कोशिश करेंगे। इस तरह काम करता है .. निरंतर एकीकरण।

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