우리는 여러 가지 솔루션으로 구성된 분산 .net 시스템을 가지고 있습니다. 각각의 구성 및 배포 요구 사항은 다릅니다. 현재 모든 코드는 하나의 TFS 프로젝트에 있으며 각 솔루션마다 고유 한 빌드가 있습니다. 이들은 솔루션 소스 제어 폴더의 변경을 트리거하도록 구성됩니다.여러 솔루션을 사용하여 분산 .net 시스템 배포
Team City, Git 및 Rake (분기 및 라이센스 비용의 용이성으로 인해)로 이동하고 있으므로 전체 빌드 프로세스를 검토하고 이에 대한 좋은 정보를 찾을 수 없습니다. 해결하기 위해 애 쓰고있는 문제는 다음과 같습니다.
개별 빌드 또는 하나의 대형 빌드가 있어야합니까? 시스템이 작동하려면 모든 솔루션을 빌드하고 배포해야하지만 빠르고 쉽게 디버깅 할 수 있으므로 작은 빌드를 사용하는 것이 좋습니다. 일부 솔루션은 다른 솔루션보다 "독립적"입니다. 우리의 현재 관행은 테스트 또는 프로덕션 환경에 배포하려는 경우 모든 빌드를 대기열에 배치하는 것일 뿐이지 만 가끔 변경된 경우 개별 솔루션을 큐에 대기시키는 경우도 있습니다.
우리는 모든 솔루션을 하나의 저장소에 저장해야합니까, 아니면 각각의 저장소를 가지고 있어야합니까? 우리는 몇몇 공유 프로젝트와 dll을 사용합니다. 어떻게 이들이 별도의 저장소에서 작동합니까?
답변을 완전히 이해하지 못했습니다. 정확히 "솔루션/프로젝트를 망친 것"은 무엇입니까? 왜 공유 프로젝트를위한 별도의 저장소를 만들고 싶습니까? 우리는 모든 솔루션을 하나의 저장소 아래 폴더에두고 상대 경로를 사용하여 프로젝트를 공유합니다 (Visual Studio에서 기존 프로젝트 추가). 프로젝트를 우리의 모든 솔루션으로 나눠 줄 것을 제안하고 있습니까? (이것은 오버 헤드가 합쳐집니다)? 우리가 하나의 큰 빌드를 고려하는 유일한 이유는 빌드의 대부분이 서로 의존한다는 것입니다. – JontyMC
솔루션/프로젝트를 망친 것 - 너무 큰 솔루션은 개발자와 함께 일하는 대부분의 사람들 (devs, qa, 코드 리뷰어)에게 약간의 혼동을줍니다. (예 : 클라이언트가 몇 가지 기능 만 갖고 싶어하는 경우) 기능을 분리하는 것이 더 어렵지만 개발자가 프로젝트간에 과도한 의존성을 추가했습니다 (때로는 발생). 솔루션이 분할되면 각 부분을 별도로 유지 관리하는 것이 더 쉽습니다. – Genius
저장소 정보. 모든 솔루션을 하나의 저장소에 저장하면 Branch, Merge 등의 SourceControl 명령을 사용하기가 더 어려워집니다. – Genius