2014-05-09 4 views
3

CI가 회사 내의 솔루션에 설정되어 있습니다.동일한 빌드에서 다른 프로젝트가 잠겨있는 로컬 캐시 된 너겟 패키지에 액세스 할 때 빌드가 실패하지 않도록하려면 어떻게합니까?

빌드가 대략 13 분 정도 걸리며 조금 길어 보입니다. 일부 파고 들자면 /maxcpucount 스위치를 msbuild 명령으로 전달하지 않아서 각 프로젝트가 병렬이 아닌 순차적으로 빌드되고 있음을 알게되었습니다. 이 스위치를 추가하면 빌드 시간이 3 분으로 단축되었습니다.

그러나 캐시 된 너겟 패키지가 이미 다른 프로세스에서 사용 중이라는 메시지와 함께 빌드가 간헐적으로 실패하는 것을보기 시작했습니다. 빌드에 실패한 프로젝트와 잠긴 누에 트 패키지는 매번 바뀔 것입니다.

동일한 솔루션에서 동시에 여러 솔루션을 구축했기 때문에 두 개의 프로젝트가 동시에 로컬에 캐시 된 동일한 누에 킷 패키지에 동시에 액세스하려는 상황이 발생할 수있었습니다.

꽤 흔한 것처럼 우리는 분명히이 문제가있는 유일한 사람이 될 수 없습니다. 누구든지이 문제에 경험이 있습니까? 우리가 뭔가 잘못하고있는거야? 어떻게 이러한 빌드가 실패하지 않도록 할 수 있습니까?

답변

1

그래서 나는 이유를 알 수는 없지만 마침내이 문제의 원인을 알았습니다.

Teamcity MSBuild 단계에서 작업 디렉토리가 %build.root%으로 설정되었습니다. 검사 디렉토리의 기본값이 사용되도록이 값을 제거하면 오류 발생이 중지 된 것으로 보입니다.