2010-01-18 13 views
10

हमारे पास क्रूज़ कंट्रोल.NET है जो हमारी कई परियोजनाओं के निरंतर एकीकरण के लिए स्थापित है।क्या हम स्रोत नियंत्रण टाइमआउट त्रुटियों को अनदेखा करने के लिए CruiseControl.NET को बता सकते हैं?

हम यह सुनिश्चित करने के लिए <cb:define> ब्लॉक का उपयोग कर रहे हैं ताकि हमारे सभी स्रोत नियंत्रण संचालन एक ही तरीके से किए जा सकें और कॉन्फ़िगर DRY को बनाए रखा जा सके।

हम थोड़ी देर में एक समस्या का सामना कर रहे हैं जिससे निर्माण "अपवाद" दिखा सकता है। संदेश इस प्रकार है:

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out. 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Svn.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request) 

आम config अनुभाग इस प्रकार है:

<sourcecontrol type="svn"> 
    <trunkUrl>http://ourserver/svn/$(project-svn-path)/trunk/</trunkUrl> 
    <executable>C:\Program Files\CollabNet Subversion Server\csvn.exe</executable> 
    <username>user</username> 
    <password>password<password> 
    <revert>true</revert> 
</sourcecontrol> 

मैं यदि संभव हो तो, इस विशिष्ट त्रुटि उपेक्षा करना चाहते हैं।

मुझे किन परिवर्तनों की आवश्यकता है?

<maxSourceControlRetries>5</maxSourceControlRetries> 
<stopProjectOnReachingMaxSourceControlRetries>true</stopProjectOnReachingMaxSourceControlRetries> 
<sourceControlErrorHandling>ReportOnRetryAmount</sourceControlErrorHandling> 

आप <project> टैग, नहीं <sourcecontrol> नीचे इन सही रखना होगा:

+0

निश्चित रूप से यदि आप किसी स्रोत नियंत्रण टाइमआउट को अनदेखा करते हैं, तो आप विश्वसनीय रूप से सबसे हालिया संशोधन का निर्माण नहीं कर रहे हैं और आपका "निरंतर एकीकरण" निर्माण व्यर्थ है? –

+0

@ डेविड एम: ठीक है, यह आमतौर पर एसएलए विंडो के दौरान होता है जब एसवीएन सर्वर रखरखाव के लिए नीचे चला जाता है। यह एक असाधारण परिस्थिति नहीं है, इसलिए यदि यह कुछ घंटों से भी कम समय के लिए होता है तो मैं इस मुद्दे को अनदेखा करना चाहता हूं। –

+0

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

उत्तर

16

यहाँ एक ब्लॉक मैं निर्माण स्थिति को प्रभावित त्रुटियों के इन प्रकार को रोकने के लिए उपयोग करते हैं। मुझे यकीन नहीं है कि आप केवल "टाइम आउट" अपवाद को अनदेखा कर पाएंगे, हालांकि - सभी एसवीएन अपवादों का इलाज समान होगा।

अद्यतन: यदि आप CC.NET documentation इन सेटिंग के बारे में अधिक जानकारी प्राप्त कर सकते हैं, लेकिन मेरे प्रासंगिक सामान कॉपी करते हैं:

maxSourceControlRetries: एक पंक्ति में स्रोत नियंत्रण अपवादों की अधिकतम राशि है कि हो सकता है, इससे पहले प्रोजेक्ट रुक गई स्थिति में जाता है (जब stopProjectOnReachingMaxSourceControlRetries को सत्य पर सेट किया जाता है)।

stopProjectOnReachingMaxSourceControlRetries: प्रोजेक्ट को maxSourceControlRetries तक पहुंचने पर रोकता है या नहीं। जब सत्य पर सेट किया जाता है, तब परियोजना रोक दी जाएगी जब लगातार स्रोत नियंत्रण त्रुटियों की मात्रा maxSourceControlRetries के बराबर होती है।

स्रोत नियंत्रण नियंत्रक: स्रोत नियंत्रण त्रुटि उत्पन्न होने पर क्या कार्रवाई करने की आवश्यकता होती है (GetModifications के दौरान)। इन संभावित मान हैं:

  • ReportEveryFailure: प्रकाशक अनुभाग जब भी कोई त्रुटि
  • ReportOnRetryAmount है चलाता है: केवल प्रकाशक अनुभाग जब maxSourceControlRetries तक पहुँच गया है, प्रकाशक अनुभाग केवल एक बार चलाया जाएगा चलाता है।
  • ReportOnEveryRetryAount: जब भी maxSourceControlRetries तक पहुंच गया है तो प्रकाशक अनुभाग चलाता है। जब maxSourceControlRetries तक पहुंच गया है और प्रकाशक अनुभाग चला गया है, तो काउंटर 0
+0

मैं इसे स्वीकार करने के रूप में चिह्नित कर रहा हूं, भले ही मेरे पास इसका परीक्षण करने का कोई तरीका न हो। क्या आप मुझे एक एहसान कर सकते हैं और उन प्रविष्टियों में से प्रत्येक को समझा सकते हैं? –

+0

मैंने कुछ CC.NET दस्तावेज़ों के साथ उत्तर अपडेट किया है। आइए बस यह कहें कि मुझे एसवीएन टाइमआउट (आमतौर पर रात के दौरान) के साथ एक ही समस्या है और अक्सर निर्माण की स्थिति को "अपवाद" के रूप में चिह्नित किया गया था। इन सेटिंग्स के साथ थोड़ा सा खेलने के बाद, मैंने यहां पोस्ट किए गए लोगों पर बस गए और मुझे इसके बाद कोई समस्या नहीं हुई। आप इनके साथ खेलना चाहेंगे (उदाहरण के लिए, रेट्री गिनती बढ़ाकर)। –

+0

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

8

क्या आप केवल 'टाइमआउट' मान नहीं बढ़ा सकते हैं?

<sourcecontrol> 
    ... 
    <timeout>60000</timeout> <!-- timeout in milliseconds --> 
    ... 
</sourcecontrol> 
+0

आमतौर पर समस्या रात भर होती है, जब सर्वर वास्तव में नीचे होता है, या ऐसा कुछ। –

+4

धन्यवाद। इस मुद्दे के साथ मेरी मदद मिली। हालांकि हमें 1 का उपयोग करना पड़ा था, आपने हमें सही दिशा में इंगित किया था। आपको +1 – David

+0

@ डेविड आप टिप्पणी करते हैं कि यह मेरे लिए काम करे, धन्यवाद! – Holger

0

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

<triggers> 
    <urlTrigger url="http://url.to.your.svn.server" /> 
</triggers> 

तो यदि सर्वर पहुंच योग्य नहीं है, तो CCNet ईवेंट को ट्रिगर नहीं करेगा। इससे असफलताओं का मौका प्रभावी रूप से कम हो गया।

Link to Documentation of URI Trigger

अद्यतन: 2 महीने के लिए उपरोक्त रेखा के बाद एसवीएन सर्वर कनेक्टिविटी समस्या के कारण हमें कभी भी झूठी विफलता नहीं मिली थी।

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

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