새 패키지 형식 개발
GitLab에서 새로운 패키지 관리 시스템 지원을 추가하는 방법과 MVC 접근 방식, API 엔드포인트, 인증, 파일 업로드 등의 구현 절차를 설명합니다.
이 문서는 새로운 패키지 관리 시스템 에 대한 지원을 GitLab에 추가하는 방법을 안내합니다. 이미 지원되는 형식은 패키지 및 레지스트리 문서 에서 확인할 수 있습니다. 새 형식은 백엔드 변경만으로 추가할 수 있습니다. 이 가이드는 개략적이며 코드를 작성하는 방식을 구체적으로 다루지 않습니다. 하지만 다음 머지 리퀘스트를 통해 좋은 예시를 찾을 수 있습니다: npm 레지스트리 지원 Maven 리포지터리 Maven 리포지터리의 인스턴스 수준 API NuGet 그룹 수준 API 일반 정보 # 기존 데이터베이스 모델에는 다음 조건이 필요합니다: 모든 패키지는 프로젝트에 속합니다. 모든 패키지 파일은 패키지에 속합니다. 패키지는 하나 이상의 패키지 파일을 가질 수 있습니다. 패키지 모델은 패키지와 해당 버전에 대한 정보를 저장하는 것을 기반으로 합니다. API 엔드포인트 # 패키지 시스템은 API를 통해 GitLab과 연동합니다. 예를 들어 lib/api/npm_project_packages.rb 는 npm 클라이언트와 작동하는 API 엔드포인트를 구현합니다. 따라서 가장 먼저 해야 할 일은 패키지 시스템 클라이언트가 작동하는 데 필요한 API 엔드포인트를 포함하는 새 lib/api/your_name_project_packages.rb 파일을 추가하는 것입니다. 일반적으로 다음과 같은 엔드포인트가 필요합니다: GET 패키지 정보. GET 패키지 파일 콘텐츠. PUT 패키지 업로드. 패키지는 프로젝트에 속하므로, 패키지를 업로드하고 다운로드하기 위한 프로젝트 수준의 엔드포인트(리모트)가 있어야 합니다. 예를 들어: GET https://gitlab.com/api/v4/projects/<your_project_id>/packages/npm/ PUT https://gitlab.com/api/v4/projects/<your_project_id>/packages/npm/ 그룹 수준 및 인스턴스 수준 엔드포인트는 프로젝트 수준 엔드포인트가 프로덕션에서 사용 가능해진 이후에만 고려해야 합니다. 리모트 계층 구조 # 패키지는 다양한 접근 수준 내에서 범위가 지정되며, 일반적으로 리모트를 설정하여 구성합니다. 리모트 엔드포인트는 프로젝트 수준으로 설정할 수 있으며, 이 경우 패키지를 설치할 때 해당 프로젝트에 속한 패키지만 표시됩니다. 또는 그룹 수준 엔드포인트를 사용하여 특정 그룹의 모든 패키지를 볼 수 있습니다. 마지막으로, 인스턴스 수준 엔드포인트를 사용하면 전체 GitLab 인스턴스의 모든 패키지를 볼 수 있습니다. MVC로서 프로젝트 수준 엔드포인트부터 시작하는 것을 권장합니다. 리모트 계층 구조의 일반적인 반복 계획은 다음과 같습니다: 프로젝트에서 게시 및 설치 그룹에서 설치 인스턴스에서 게시 및 설치 (self-managed 고객용) 인스턴스 수준 엔드포인트를 사용하려면 더 엄격한 명명 규칙 이 필요합니다. Composer 패키지 명명 범위는 인스턴스 수준입니다. 명명 규칙 # 인스턴스 수준 엔드포인트에서 이름 충돌을 방지하려면