우리 팀을 시작했을 때 우리는 우리가 맡게 될 시스템을 원래 개발 한 공급 업체로부터 릴리스 기반 전략을 물려 받았습니다. 고객이 몇 가지 개발 된 기능이 릴리스에 포함되지 않도록 요청했을 때까지 작동했습니다 (~ 250,000 라인의 코드, ~ 2500 개 파일, XP SDLC가있는 스크럼).
그런 다음 기능 기반 분기를 살펴보기 시작했습니다. 이것은 또한 잠시 동안 작동했습니다. 회귀 테스트 프로세스가 2 주 이상 걸릴 것이라는 것을 깨달을 때까지 2 개월 정도가 걸렸고 릴리스 될 내용의 불확실성과 함께 큰 불편을 초래했습니다.
순수한 SC 전략의 마지막 "관 속의 못"은 우리가 1. 안정된 트렁크와 2. 생산에 ST, UAT 및 회귀 테스트 된 BINARIES를 포함해야한다고 결정했을 때 나왔습니다 (소스뿐만 아니라 CC를 생각하십시오).
이를 통해 기능과 릴리스 기반 SC 전략을 혼합 한 전략을 고안 할 수 있습니다.
그래서 우리는 트렁크가 있습니다. 모든 스프린트는 스프린트 브랜치로 분기합니다 (민첩하지 않은 사용자의 경우 스프린트는 복잡성에 따라 가변 출력을 사용하는 타임 박스 개발 노력 일뿐입니다.) 스프린트 브랜치에서 기능 브랜치를 만들고 병렬 개발이 시작됩니다. 기능이 완료되고 시스템 테스트가 완료되고 배포 할 의도가 있으면 스프린트 브랜치에 병합됩니다. 일부는 여러 스프린트 (일반적으로 더 복잡한 스프린트)에 떠있을 수 있습니다. 스프린트가 거의 끝나고 기능이 완료되면 스프린트 브랜치의 이름을 "회귀"로 "이름을 변경"한 다음 (CruiseControl이 재구성없이이를 선택할 수있게 함) cc 빌드에서 회귀 / 통합 테스트가 시작됩니다. 귀. 이 작업이 모두 완료되면 프로덕션에 들어갑니다.
간단히 말해, 기능 기반 분기는 개발, 시스템 테스트 및 UAT 기능에 사용됩니다. 스프린트 브랜치 (실제로 릴리스 브랜치)는 온 디맨드 및 통합 테스트 기능을 선택적으로 병합하는 데 사용됩니다.
이제 커뮤니티에 대한 질문이 있습니다. 개발이 많은 지점에서 발생하고 CruiseControl의 재구성 오버 헤드로 인해 지속적인 통합을 수행하는 데 분명히 문제가 있습니다. 누군가 제안하고 조언 할 수 있습니까?