우리는 CI 용 CruiseControl.Net/NAnt/Subversion 스택을 사용합니다. 모든 빌드에 대해 새로운 체크 아웃을하는 것은 시간이 너무 많이 소요되므로 현재 작업중인 복사본에 대한 업데이트 만 수행합니다. 그러나 이로 인해 소스 제어에서 삭제 된 고아 파일이 작업 복사본에 남아있을 수 있습니다. NAnt 삭제 작업을 사용하여 업데이트 전에 모든 코드 소스 파일을 제거하려고했으나 작업 복사본이 손상 될 수 있습니다. 누구든지 깨끗하고 최신의 작업 복사본을 빌드 할 수있는 빠른 방법을 알고 있습니까? 편집 : SVN 1.3.2연속 통합으로 깨끗한 빌드
답변
'업데이트'만 수행하면 SVN이 소스 제어에서 삭제 된 모든 파일을 삭제합니다. 그러나 빌드 프로세스 중에 작성된 파일이 여전히있을 수 있으며 새 빌드를 방해 할 수 있습니다. 나는 SVN이 그들을 삭제하는 명령을 가지고 있는지 모르겠지만, 당신이 약간의 스크립트로 그것을 할 수 있다고 생각합니다. SVN은 어떤 파일이 소스 제어하에 있고 어떤 것이 아닌지 당신에게 확실히 말할 수 있습니다.
작업 복사본에 svn 업데이트를 수행 한 후 분리 된 파일이있는 경우 Subversion 버전에 버그가 있습니다.
매일 전체 빌드를 수행하고 체크인시 빌드를 그대로 둘 수 있습니다. 또한 배포 빌드의 경우 항상 완전한 빌드를 사용하는 것이 좋습니다.
내가 생각할 수있는 유일한 방법은 빌드 서버에 두 개의 복사본이 있다는 것입니다. 먼저 첫 번째 위치를 업데이트합니다. 두 번째 위치를 삭제합니다. 처음부터 두 번째로 복사 한 다음 두 번째 위치에서 빌드하십시오. 그렇게하면 항상 깨끗한 빌드에서 시작합니다.
왜 체크 아웃이 오래 걸리는지 살펴볼 수 있습니다. 나는 같은 buildserver 스택을 사용했고 결코 이것에 문제가 없었다. Subversion은 일반적으로 빌드 자체보다 시간이 적습니다.
CC 구현시 비슷한 문제가있었습니다.
우리의 솔루션은 이미 기본 유닛 테스트와 함께 더 오래 실행되는 통합 테스트를 실행 한 새벽 3시에 빌드 한 것입니다. 우리는 새벽 3시 새벽에 완전히 깨끗한 건축물을 건설하기로 결정했습니다. 한밤중 이었기 때문에 거의 영향을주지 않았습니다. 다른 모든 "일반"체크인은 증분 빌드를 실행했습니다.