안녕하세요 .선주님 (맞나요?)
말씀하신 물리적인 비용의 문제는 CI 에 명시된 단점입니다.
따라서 해당 부분은 플랫폼의 특성 (예, 빌드 시간, inspection 의 복잡도, test 성숙도) 에 따라서 비용 스펙트럼이 넓습니다. 이러한 면 때문에 문제가 되는 경우는 제 경우 대개 1) 비용 대비 기대치가 높거나 2) 한번에 너무 많은 것들을 하려고 할 때 생겼습니다.
만약, 빌드나 테스트 서버의 확장에 예산등으로 제한적인 요소가 있다면 아래와 같이 하는 것도 좋은 방법입니다.
- 커밋 단위 빌드와 테스트가 아닌 시간단위와 커밋 묶음 단위로 빌드와 테스트 (예, 5개의 커밋이 들어오거나 20분에 한 번씩 빌드와 테스트 돌리기)
제가 일전에 테스트 한 결과 fail rate 가 20% 미만이여서 위와 같은 경우 비용을 상당히 줄일 수 있었습니다. 다만, build or test fail 시에 묶여있는 커밋중에 어떤게 문제가 있는지 나눠서 빌드하는 단계가 필요하겠구요. 일전에 미국의 대규모 칩 벤더에 갔을때 빌드와 테스트를 이와 유사하게 진행하길래 그 아이디어에서 차용해서 해본건데 상당히 괜찮았습니다.
더불어 제 생각에 gerrit 을 사용하는데 빌드가 response time 에 큰 문제를 준다면, 그것은 리뷰와 같은 인간이 개입해야 하는 과정이 제대로 수행되지 않고 있는게 아닐까 합니다. Gerrit 의 주 목적은 code review 입니다. 그것을 CI의 한 부분으로 사용하는 것이구요.
덧. SVN용은 Rietveld 라는 Gerrit 의 부모뻘 되는 오픈소스 툴이 있습니다. 또한 Gerrit 은 push 가 완료되기 전이라기 보다 Gerrit 에 push 된 커밋을 Main repo 에 merge 하기 전에 리뷰와 테스트 하는거라 생각됩니다. (실제 구조 자체가 그렇구요)
2013년 2월 9일 토요일 오후 10시 59분 18초 UTC+9, Sunjoo Park 님의 말: