6

저는 팀이 현재 우리 프로젝트의 현재 상태에 대한 훌륭한 해결책이라고 생각하면서 모노 리포지에 관해 교육을 해왔습니다. 우리는 여러 웹 제품 (클라이언트 포털, 내부 포털, API, 코어 공유 코드)을 보유하고 있습니다.monorepo에서 제품을 버전으로 업그레이드하는 방법은 무엇입니까?

내가 찾고자하는 답변을 찾는 데 어려움을 겪고있는 곳은 버전 관리입니다.

모든 프로젝트 및 제품이 모노 리포 안에있을 때의 버전 전략은 무엇입니까?

  • 1 버전이 모두 적합합니까?
  • 독립적 인 버전 관리가있는 하위 모듈 (모노 레포를 갖는 지점을 손상시키는 종류)
  • 다른 전략은 무엇입니까?

CI 관점에서 볼 때 프로젝트 A에서 무언가를 커밋 할 때 모든 프로젝트에서 전체 테스트를 시작하여 변경 사항이 없더라도 아무 것도 부러지지 않았는지 확인해야합니다. 의존성/공유 모듈?

+0

사용하는 VCS (git처럼 보임)와 사용하는 빌드 도구를 명확히 언급해야합니다. 또한 어떤 종류의 릴리스 워크 플로우를 사용합니다. 또한 1의 2 질문은 stackoverflow에 좋지 않습니다. – tkruse

답변

2

모든 프로젝트 및 제품이 모노 리포 안에있을 때의 버전 전략은 무엇입니까?

나는 한 버전 모두 다음과 같은 이유로 맞는 것을 제안 : 귀하의 제품을 출시 할 때

  • 당신은 예를 들어 release-x.x.x로 전체 분기를 태그 할 수 있습니다. 버그가 발생하면 "YYY가 사용 된 XXX 버전"을 확인하지 않아도됩니다.
  • XXX의 x.x.x 버전은 YYY 버전 x.x.x를 사용합니다. 본질적으로 프로젝트를 동기화 상태로 유지하십시오. 어떻게 물론 이것에 대해 이동하는 것은. 프로젝트가 작성됩니다 어떤 기술을

을 따라 그리고 당신은 프로젝트 A를 뭔가를 커밋 할 때 CI의 관점에서, 당신은 모두에서 테스트의 전체 제품군을 출시한다 종속성/공유 모듈을 변경하지 않아도 프로젝트가 중단되지 않았는지 확인하십시오.

테스트를 실행하는 데 특히 시간이 오래 걸리면 아무런 해를 끼칠 수 없습니다. 나는 이것을 확실히 추천 할 것이다. 테스트가 더 자주 실행될수록 시간 의존형 또는 환경 종속 형 버그를 발견 할 수 있습니다.

어떤 이유로 든 테스트를 실행하지 않으려는 경우 VCS를 쿼리하고 변경된 사항에 따라 테스트를 조건부로 트리거하는 스크립트를 작성할 수 있습니다. 이는 VCS와 CI 서버 간의 통합에 크게 의존합니다.