저는 5 명의 팀과 총 약 40 명의 개발자로 구성된 개발 그룹의 일원입니다. 3 주 스프린트로 스크럼 방법론을 따르고 있습니다. 지속적인 통합 설정 (Jenkins)이 있으며 빌드 자동화는 몇 시간이 소요됩니다 (광범위한 자동화 테스트로 인해). 기본적으로 개발 프로세스가 잘 작동합니다.
그러나 새로운 스프린트로 며칠이 지나면 빌드가 불안정 해지고 스프린트 엔드 "커밋 중지"까지 흔들리는 경우가 많습니다. 이것의 부정적인 영향은 파이프 라인보다 훨씬 낮은 빌드 단계, 특히 UI / 웹 테스트는 며칠 동안 실행 되지 않는 것입니다 ( '녹색'빌드에서만 트리거되기 때문). 결과적으로 새로 도입 된 버그는 종종 스프린트에서 매우 늦게 감지됩니다.
- 각 커밋은 기본 테스트 세트에 대해 검증됩니다. 확인되면 코드 검토 (Gerrit) 후 변경 사항이 마스터로 푸시됩니다.
- 기본 단위 테스트는 30 분마다 실행되며 지속 시간은 10 분 미만입니다.
- 통합 테스트는 2 시간마다, 지속 시간은 1 시간입니다.
- 성공적인 통합 테스트에서 몇 시간 동안 UI / Webtest 실행
스프린트 동안 빌드 안정성을 담당하는 사람 (스프린트 당 책임이 전달됨)에 따라 빌드를 다시 안정시키기 위해 중간의 임시 "커밋 중지"가있을 수 있습니다.
그래서 우리는 원합니다 :
- 스프린트 동안 방해받지 않고 변화를 개발하고 커밋하기 위해 개발팀
- 후속 빌드 결과가 거의 의미가 없으므로 빌드 단계가 실패하면 빌드 프로세스를 포기합니다.
- 개발자에게 적시에 피드백을 제공하기위한 빌드 프로세스
(2)가 주어지면 (1)과 (3)은 서로 모순되는 것 같습니다. 누구든지 이것을 다루는 좋은 습관이 있습니까?
( 우리는 현재 풀리고있는 지점 (2)이며 실패한 빌드 단계에서도 빌드를 계속할 수 있습니다. 아직 품질에 영향을 미치는 피드백은 없습니다. )
고마워, 사이먼
several hours
라면 이것이 진짜 문제 라고 말하고 싶습니다 . 결합 된 솔루션이 너무 크고 광범위 함을 나타냅니다. 솔루션을 구성 요소 화 한 다음 패키지로 작은 코드 덩어리를 가져야합니다 (모든 플랫폼의 모든 주요 언어로 어떤 방식 으로든 사용 가능). 따라서 모든 변경 사항은 구성 요소에만 적용되며 훨씬 빨리 감지됩니다. 전체 빌드는 기본적으로 이미 결합 된 구성 요소를 함께 모으고 더 빠를 것입니다. 그런 다음 올바른 구성 요소가 해결되었는지 확인하기 위해 일부 테스트 만 실행할 수 있습니다.