GitLab에 새로운 서비스 컴포넌트 추가하기

GitLab 제품은 서로 통신하는 독립적인 시스템 프로세스로 실행되는 여러 서비스 컴포넌트로 구성되어 있습니다. 이러한 서비스는 동일한 인스턴스에서 실행될 수도 있고 서로 다른 인스턴스에 분산될 수도 있습니다. 기존 컴포넌트 목록은 GitLab 아키텍처 개요에서 확인할 수 있습니다.

통합 단계

다음 개요는 컴포넌트를 통합하는 다양한 단계의 예로 성숙도 메트릭 명칭을 재사용합니다. 이러한 단계는 컴포넌트의 실제 성숙도와 크게 연결되어 있지 않으며 구현 순서에 대한 가이드로 제공됩니다. 예를 들어, 컴포넌트가 Lovable이 되기 위해 기본적으로 활성화될 필요는 없습니다. 기본적으로 활성화되는 것만으로는 컴포넌트가 Lovable이 되지 않습니다.

새로운 컴포넌트 제안하기

GitLab과 새로운 컴포넌트를 통합하는 초기 단계는 이슈 추적기에서 기능 제안하기로 시작합니다.

컴포넌트가 속하는 제품 카테고리를 식별하고 해당 카테고리에 책임이 있는 엔지니어링 관리자와 제품 관리자를 지정합니다.

Feature를 제안에서 릴리스까지 진행하는 일반적인 단계는 제품 개발 흐름에서 확인할 수 있습니다.

GitLab과 새로운 서비스 통합하기

새로운 서비스를 추가하는 것은 다른 기여와 동일한 병합 요청 워크플로우를 따르며, 동일한 완료 기준을 충족해야 합니다.

또한 다음을 포함해야 합니다:

GitLab과 완전히 독립적으로 운영될 수 있는 서비스의 경우:

첫 번째 반복은 서비스에 연결하고 외부 설치 컴포넌트로 사용하는 기능을 추가하는 것입니다. 이는 종종 GitLab에서 서비스에 연결하기 위한 설정을 제공하거나 서비스에서 연결을 허용하는 것과 관련이 있습니다. 그리고 그런 다음 GitLab과 함께 서비스 설치 및 구성 방법에 대한 문서를 배포합니다.

Elasticsearch는 이런 식으로 통합된 서비스의 예입니다. Gitaly와 같은 내부 프로젝트를 포함한 많은 다른 서비스들도 별도로 설치된 대안으로 시작했습니다.

기존 GitLab 코드베이스에 의존하는 서비스의 경우:

첫 번째 반복은 gitlab.yml 구성 또는 기능 플래그를 통해 선택적으로 해야 합니다. 이러한 유형의 서비스에 대해서는 초기 통합의 일환으로 서비스와 그 종속성을 GitLab과 번들링하는 것이 종종 필요합니다.

참고:

ActionCable는 이런 식으로 추가된 서비스의 예입니다.

GitLab과 함께 서비스 번들링

GitLab으로 배송되는 코드는 법무팀의 승인을 받은 라이센스를 사용해야 합니다. 기존 승인된 라이센스 목록을 참조하세요.

새로운 컴파일이 필요한 의존성을 추가할 때 배포 팀에 통지하세요. 우리는 모든 지원되는 플랫폼에서 의존성을 컴파일할 수 있어야 합니다.

GitLab과 함께 번들링될 새로운 서비스는 다음 환경에서 제공되어야 합니다.

개발 환경

새로운 서비스를 번들링하는 첫 번째 단계는 개발 환경에서 이를 제공하여 협업 및 피드백에 참여하는 것입니다.

표준 설치 방법

서비스가 최종 사용자 또는 GitLab.com에 번들링되기 위해서는 표준 설치 방법에 포함되어야 합니다:

서비스 의존성 처리

의존성은 최신 상태로 유지되어야 하며 보안 업데이트를 위해 추적해야 합니다. Rails 코드베이스의 경우, JavaScript 및 Ruby 의존성은 GitLab 의존성 스캐닝을 사용하여 취약성을 스캔합니다.

또한, Omnibus 패키지 또는 클라우드 네이티브 이미지에서 사용되는 모든 시스템 의존성은 의존성 업데이트 자동화에 추가해야 합니다.

릴리즈 관리

서비스 구성 요소를 월간 GitLab 릴리즈와 함께 업데이트하거나 릴리즈해야 하는 경우, 릴리즈 도구 자동화에 추가되어야 합니다. 이 프로젝트는 전달 그룹에 의해 유지 관리됩니다.

GitLab 월간 릴리즈에 구성 요소를 포함하기 위한 다양한 수준의 자동화가 제공됩니다. 이러한 서로 다른 수준에서 릴리즈에 구성 요소를 포함하기 위한 요구 사항과 프로세스는 릴리즈 문서에 상세히 설명되어 있습니다.

릴리즈 도구로 관리되는 릴리즈가 있는 프로젝트 목록은 릴리즈 도구 프로젝트 디렉토리에서 확인할 수 있습니다.

예를 들어, 원하는 Gitaly, GitLab Workhorse 및 GitLab Shell 버전은 다양한 릴리즈 파이프라인을 통해 동기화되어야 합니다.