2010-01-18 11 views
10

CruiseControl.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) 

일반적인 구성 섹션은 다음과 같습니다

<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

@David M : 일반적으로 SVN 서버가 유지 보수를 위해 중단 될 때 SLA 창에서 발생합니다. 이것은 예외적 인 상황이 아니므로 몇 시간 이내에 발생하면이 문제를 무시하고 싶습니다. –

+0

우리는 인터넷에 호스팅 된 svn 서버와 이상한 인터넷 연결을 가지고 있습니다. 연결이 끊어 질 때마다 우리는 실패한 빌드를 얻습니다. 이는 유용하지 않습니다. 그래서 질문에 감사드립니다. –

답변

16

는 여기에 내가 빌드 상태에 영향을 미치는 이러한 종류의 오류를 방지하기 위해 사용하는 블록이다. 그래도 "제한 시간 초과"예외는 무시할 수 있을지 확신하지 못합니다. 모든 SVN 예외는 동일하게 처리됩니다.

UPDATE : 당신은 CC.NET documentation에서 이러한 설정에 대한 자세한 내용을 보려면,하지만 나 관련 물건을 복사 할 수 있습니다 다음 전에 발생할 수있는 행의 소스 제어 예외의 최대 양 :

maxSourceControlRetries을 프로젝트가 중지 된 상태로 이동합니다 (stopProjectOnReachingMaxSourceControlRetries가 true로 설정된 경우).

stopProjectOnReachingMaxSourceControlRetries : maxSourceControlRetries에 도달 할 때까지 프로젝트를 중지합니다. true로 설정하면 연속적인 소스 제어 오류의 양이 maxSourceControlRetries와 같을 때 프로젝트가 중지됩니다.

sourceControlErrorHandling : 소스 제어 오류가 발생했을 때 (GetModifications 중) 수행 할 작업입니다. 다음은 가능한 값은 다음과 같습니다

  • ReportEveryFailure는 : 오류
  • ReportOnRetryAmount있을 때마다 게시자 섹션을 실행합니다에만 maxSourceControlRetries에 도달했을 때, 게시자 섹션은 한 번만 실행됩니다 게시자 섹션은 실행됩니다.
  • ReportOnEveryRetryAmount : maxSourceControlRetries에 도달 할 때마다 게시자 섹션을 실행합니다. maxSourceControlRetries에 도달하고 게시자 섹션이 실행되면 카운터는 다시 0으로 설정됩니다.
+0

필자는 필자가 필자가 필자가 반드시 테스트 할 방법이 없어도 이것을 받아 들일 것입니다. 부탁을 들어 그 각 항목을 설명해 주시겠습니까? –

+0

일부 CC.NET 문서를 사용하여 답변을 업데이트했습니다. SVN 제한 시간 (보통 밤 중)과 동일한 문제가 있었고 종종 빌드 상태가 "예외"로 표시되었다고합시다. 이 설정으로 조금 놀고 난 후에, 나는 내가 여기 게시했던 것들에 정착했고, 그 후에 아무런 문제가 없었다. 직접 재시도 횟수를 늘려서 직접 놀고 싶을 수도 있습니다. –

+0

동일한 구성을 사용하고 있습니다. 슬프게도 문제가 해결되지 않습니다. 내 네트워크 관리자는 임의의 간격으로 네트워크를 깨뜨리는 나쁜 습관을 가지고 있습니다. 누군가가 빌드를 수동으로 강제 수행 할 때까지는 모든 빌드가 빨간색으로 표시됩니다. – skolima

8

'시간 제한'값을 늘릴 수는 없습니까?

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

일반적으로 서버가 다운되거나 그와 비슷한 문제가 발생하면 밤새 문제가 발생합니다. –

+4

감사합니다. 이것은 내가 가지고있는 문제에 도움이되었습니다. 우리가 1을 사용해야 만 올바른 방향으로 우리를 지적했습니다. +1. – David

+0

@David 당신은 코멘트가 나를 위해 일할 수있어, 고마워! – Holger

0

허용되는 답변 외에. URL 트리거를 사용하여 많은 도움을 얻었습니다.

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

서버에 연결할 수 없으면 CCNet은 이벤트를 트리거하지 않습니다. 그것은 효과적으로 실패의 가능성을 줄였습니다.

Link to Documentation of URI Trigger.

업데이트 : 위의 라인이 2 개월 가까이 계속 된 후 svn 서버 연결 문제로 인한 단일 오류가 발생하지 않았습니다.

관련 문제