대기업에서 지속적인 통합은 어떻게 구성됩니까?


11

우리 회사에서는 각 기능 / 버그 수정 분기가 dev에 병합되는 방법을 확인하기 위해 중간 빌드를 수행하지 않는 것이 일반적입니다. 매일 많은 빌드가 실패하고 빌드 오류가 발생하는 일일 빌드 만 있습니다. 1000 명 이상의 개발자를 위해 각 병합에 대해 빌드하는 것은 부당하다고 들었습니다.

그래서 개발자가 많은 회사 (Microsoft, Facebook)가있는 회사에서 CI가 어떻게 구성되어 있는지 검색했지만 아무것도 찾지 못했습니다. 아마도 내부자가 말해 줄 수 있습니까?



@gnat 당신은 충분합니까? 어떻게 관련이 있습니까? 나는 내부자 경험을 요구했고 예를 들어 회사를 지적했다. 고객 지원을 요청하지 않았습니다.
Megamozg

11
@ gnat 나는 그것이 어떻게 관련되어 있는지 알지 못한다. Megamozg : CI는 프로젝트 모듈로 구성되며 1000 명의 개발자가있는 모듈은 없습니다. 따라서 사람이 너무 많으면 프로젝트 / 모듈을 더 작은 부분으로 줄이십시오.
Walfrat

@ Walfrat는 완전히 관련되어 있습니다. 이 사이트는 대기업 내부의 회사가 다양한 일을 수행하는 방법에 대한 설문 조사 / 설문 조사를 수행하기위한 것이 아닙니다. 그런 것들에 대해 궁금한 점이 있다면이 회사의 지원 채널을 사용해야합니다.
gnat

@gnat 나는 당신이 제공 한 링크, 특히 Walfrat에 대한 응답으로 당신이 제공 한 주석과 함께 어떻게 적용되는지 보지 못했습니다. 이 의견을 바탕으로이 IMHO는 적절한 링크 (투표 유형 질문에 관한 부분) softwareengineering.meta.stackexchange.com/a/6490
Newtopian

답변:


12

기본적으로 스케일링 문제입니다. 작업을 모듈로 분리하면 다른 프로젝트 및 / 또는 제품의 기능이 될 수 있습니다.

해당 모듈 세트를 다루는 팀이 있습니다. 각 팀에는 범위에 대한 CI주기가 설정되어 있으며 해당주기가 경과 한 후에 만 ​​마스터 CI 주기로 코드가 푸시되어 마스터 CI주기가 실행됩니다.

마스터 CI주기는 다음과 같은 측면에서 팀 수준 CI주기와 다를 수 있습니다.

  • 팀 수준 CI주기는 회사 전체의 코드를 작성할 필요가 없으며, 담당 모듈과 종속 모듈 만 작성하면됩니다. 완전히 독립적이고 다른 팀에있는 두 개의 모듈이 있으면 다른 팀의 CI주기에 포함되지 않습니다.
  • 팀 수준 CI주기는 마스터 CI주기보다 훨씬 자세한 자동 테스트를 가질 수 있습니다. 마스터 CI주기에는 마스터 솔루션의 크기에 따라 매일 또는 매주 실행되는 온 전성 검사 테스트 및 회귀 테스트가 있습니다. 이러한 테스트는 때때로 24 시간 이상이 소요될 수 있습니다.

이 접근 방식으로 수행해야 할 작업은 로컬 CI주기가 지나면 개발자가 코드를 중앙 저장소로 푸시하는 데 많은 시간을 소비하지 않도록 로컬 저장소에서 중앙 저장소로 자동 푸시를 제공하는 것입니다.


7

@Vladimir_Stokic이 말한 것 외에도 일부 팀 (광산 개발자는 ~ 150 명)에서는 24 시간마다 빌드를 더 자주 수행합니다. 커밋이 발생할 때마다 5 분 타이머를 시작합니다. 5 분이 지나면 5 분 간격 동안 발생한 모든 커밋이 결합되고 빌드됩니다. 빌드는 일반적으로 증분 빌드입니다. 각 빌드마다 단위 테스트를 실행하는 별도의 빌더가 있습니다. 빌드가 완료된 후 빌드 중에 더 많은 커밋이 발생한 경우 (변경된 사항에 따라 1 ~ 45 분 소요) 보류중인 변경 내용이 빌드됩니다. 우리는 또한 야간 (깨끗하고 완전한) 빌드를 가지고 있지만 각 커밋에서 발생하는 빌드는 테스트 실패 여부를 매우 빠르게 알려줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.