2012-04-20 6 views
2

우리가 다음 설치 :CCNet 여러 자식 저장소 시간 제한 예외

  • 윈도우 7 프로페셔널 64 비트
  • CCNet v1.6.7981.1
  • msysgit v1.7.9 - preview20120201

Git 서버는 우분투 서버 64 비트를 실행하는 다른 컴퓨터에 설치됩니다. CCNet Windows 서비스는 관리자 계정으로 실행되며 ssh를 사용하여 Ubuntu git server에 액세스합니다. 강제 빌드를 수행 할 때 우리는 아무런 문제가 없으며, 소스와 빌드를 얻는 것이 좋습니다. 우리가 다음과 같은 예외가 얻을 시간 트리거에서 실행되는 때이다 :

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out. 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GitFetch(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.CreateUpateLocalRepository(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.MultiSourceControl.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModificationsWithLogging(ISourceControl sc, 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) 

우리 ccnet 프로젝트

여러 자식 저장소 작업을 샘플 설정은 다음과 같습니다

<sourcecontrol type="multi"> 
     <sourceControls> 
     <git> 
      <repository>[email protected]</repository> 
      <executable>$(gitcmdpath)</executable> 
      <timeout units="minutes">10</timeout> 
     </git> 
     <git> 
      <repository>[email protected]</repository> 
      <executable>$(gitcmdpath)</executable> 
      <timeout units="minutes">10</timeout> 
      <workingDirectory>c:\somerepo2</workingDirectory> 
     </git> 
     </sourceControls> 
    </sourcecontrol> 

우리는 여러 ccnet 프로젝트를 같은 저장소 집합을 활용 (다른 폴더에 체크 아웃)하고 코드 변경이없는 경우 모두 동일한 방식으로 실패합니다. 간격 트리거를 같은 길이로 설정하면 일괄 적으로 동일한 시간에 리포지토리를 모두 확인합니다. 이것이 시간 초과되는 이유 일 수 있습니까? 또한 이것을 디버깅하기 위해 ccnet.log에서 찾을 수있는 것도 없습니다.

어떤 도움을 환영합니다.

답변

1

연속 빌드를 하나의 큐에 넣고 전체 빌드를 다른 큐로 빌드하여 임시 해결책을 가지고 있습니다. 연속 빌드는 30 초 간격으로 소스 제어 수정을 기반으로하며, 전체 빌드는 하루에 한 번이므로 현재 분리되어 있습니다. 나는 약 2 주 동안 아무런 문제없이 구현했다.