2012. 3. 30.

CruiseControl.NET 에서 Robocopy 사용시의 에러

최근 진행되는 프로젝트는 현재 CruiseControl.NET 을 이용하고 있다.

아직 Real Open 된 프로젝트가 아니어서, 현재는 테스트 서버에만 적용하고 있는 상황으로
CCNet.config 상의 시나리오는 아래와 같이 진행된다.(매우 간단하고 평번하다)

1. svn 에서 변경사항을 update

2. MSBuild 를 이용해서 솔루션 빌드 수행

3. IIS 정지

4. Robocopy 를 이용해서 변경된 파일을 deploy directory에 Copy

5. IIS 시작

매우 단순하고, 일반적인 CruiseControl.NET 의 시나리오인데...

항상 변경이 있으면 Robocopy 수행후에 에러가 발생한다.


  robocopy.exe
  {basedirectory}
  .\ {deploydirectory} /E /R:2 /XA:H /PURGE /XO /XD ".svn" /NDL /NC /NS /NP
  60
  0,1


뭐 대충 위와 같은 Configuration 이었는데, 위 내용은 ccnet 사이트에서도 나온 내용을 거의 그대로 사용한 것이라서.. 문제가 없을꺼라 생각했다.

에러때문에 항상 force integration 만 사용을 해 왔다.(사실 우린 스케쥴까지 쓸 필요는 없는 프로젝트다)

force integration을 두번씩 하면 되니까 좀 불편하지만 사용을 했는데 오늘 갑자기 짜증이 확나서 이리저리 검색하고 결국 수정했다.

확인해보니 robocopy가 return 하는 exit code 중 0~16까지의 code 중 0~7은 오류는 아니다. (Robocopy Exit Code)

그래서 위의 설정을 간단히 아래와 같이 바꿨다는...

  robocopy.exe
  {basedirectory}
  .\ {deploydirectory} /E /R:2 /XA:H /PURGE /XO /XD ".svn" /NDL /NC /NS /NP
  60
  0,1,2,3,4,5,6,7

이제 한번에 Force Integration이 성공한다.

10분만 투자해서 검색하고 설정파일 수정했으면 될 것을 한달 정도를 불편해하면서 살았으니, 이 귀차니즘은 정말 불치병이다. 쩝!