문제

저는 현재 직장에서 지속적인 통합 환경을 설정하는 중입니다.우리는 VisualSVN 서버와 CrusieControl.NET을 사용하고 있습니다.때때로 빌드가 실패하고 증상은 CruiseControl.NET 작업 복사본에 충돌이 있다는 것입니다.이는 제가 Visual Studio 솔루션을 설정한 방식 때문이라고 생각합니다.이 환경에서 더 많은 프로젝트를 실행할수록 설정 방법에 대한 더 나은 이해가 가능해지기 때문에 이 단계에서 충돌이 발생하는 이유에 대해 의문을 제기하지 않을 것입니다.빌드를 수정하려면 작업 복사본을 삭제하고 새 빌드를 강제 실행합니다. 이는 (현재) 매번 작동합니다.그래서 내 질문은 다음과 같습니다작업 복사본을 삭제하는 것은 지속적인 통합 빌드 프로세스의 유효한 부분입니다. 어떻게 해야 합니까?

MSTask를 포함한 솔루션을 시도하고 명령줄에서 삭제를 호출했지만 운이 없습니다.

너무 장황하게 말해서 죄송합니다. 잘하셨습니다. 베타 버전입니다. :)

도움이 되었습니까?

해결책

빌드 전후에 전체 삭제를 수행하는 것이 좋습니다.이는 빌드 환경에서 오래된 파일을 선택할 가능성이 없음을 의미합니다.귀하의 건물은 저장소에 있는 것과 정확하게 일치합니다.

Nant에서 했던 것처럼 작업 복사본 삭제도 가능합니다.

Nant에서는 삭제하려는 스크립트가 아닌 자체 폴더에 깨끗한 스크립트를 넣은 다음 CC.net에서 호출합니다.

나는 이것이 배치 파일로도 가능하다고 가정합니다.rmdir 명령을 살펴보십시오. http://www.computerhope.com/rmdirhlp.htm

@pauldoo

나는 항상 깨끗한 상태에서 수행되어야 하는 릴리스 빌드를 수행할 때 어떤 놀라움도 원하지 않기 때문에 CI 서버에서 전체 삭제를 수행하는 것을 선호합니다.하지만 두 가지를 모두 처리할 수 있어야 합니다. 그렇지 않을 이유가 없습니다.

다른 팁

@제이미:연속 통합 서버를 사용할 때 매번 클린 빌드를 수행할 수 없는 한 가지 이유는 빌드 시간입니다.제가 작업한 일부 프로젝트에서는 클린 빌드에 80분 이상이 소요됩니다(체크아웃할 수천 개의 C++ 파일로 구성된 임베디드 프로젝트 및 여러 대상에 대해 컴파일).이 경우 클린 빌드가 증분 빌드가 포착하지 못하는 것을 포착할 가능성과 빠른 피드백의 이점을 비교해야 합니다.우리의 경우 CI 시스템에서 증분 빌드를 허용하는 동시에 빌드 프로세스를 개선하고 병렬화하는 작업을 수행했습니다.클린 빌드를 수행하지 않았기 때문에 몇 가지 문제가 있었지만 밤이나 매주 클린 빌드를 수행하면 CI 시스템의 빠른 피드백을 잃지 않고 위험을 제거할 수 있었습니다.

CC.NET을 확인해 보면 지라 정확히 원하는 작업을 수행하고 TFS와 마찬가지로 소스 제어 블록 내에서 CleanCopy를 true로 설정하는 Subversion용 CleanCopy를 구현하기 위해 체크인된 패치가 있습니다.

중요한 빌드를 수행하기 전에 모든 빌드 프로세스에서 '정리'를 수행하는 것은 매우 일반적이며 일반적으로 좋은 방법입니다.이렇게 하면 이전 빌드의 '아티팩트'가 출력을 오염시키는 것을 방지할 수 있습니다.

정리는 기본적으로 작업 복사본을 삭제하여 수행하는 작업입니다.

@브래드 바커

Clean은 빌드 제품을 완전히 지우는 것을 의미합니다.

작업 복사본을 삭제하면 다른 모든 것(소스 및 프로젝트 파일 등)도 삭제됩니다.

일반적으로 빌드 머신이 전체 삭제를 수행하지 않고도 작동할 수 있다면 이는 좋은 일입니다. 이는 일반 개발자가 수행하는 작업을 복제하기 때문입니다.업데이트 중에 발견된 충돌은 개발자가 예상할 수 있는 상황에 대한 조기 경고입니다.


@제이미

공식 릴리스의 경우 완전히 깔끔한 체크아웃을 수행하는 것이 좋습니다.그래서 빌드 목적에 따라 다르다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top