패키지 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 패키지 레지스트리를 사용하면, 다양한 지원되는 패키지 관리자용으로 GitLab을 개인 또는 공개 레지스트리로 사용할 수 있습니다. 다운스트림 프로젝트의 종속성으로 사용할 수 있는 패키지를 발행하고 공유할 수 있습니다.

패키지 워크플로우

GitLab 패키지 레지스트리를 사용하여 자체적인 사용자 정의 패키지 워크플로우를 작성하는 방법을 알아보세요:

패키지 보기

프로젝트나 그룹의 패키지를 볼 수 있습니다.

  1. 해당 프로젝트나 그룹에 이동합니다.
  2. 배포 > 패키지 레지스트리로 이동합니다.

이 페이지에서 패키지를 검색, 정렬 및 필터링할 수 있습니다. 브라우저의 URL을 복사하여 검색 결과를 공유할 수 있습니다.

패키지 관리자 구성 또는 특정 패키지 설치에 대한 유용한 코드 스니펫을 찾을 수도 있습니다.

그룹에서 패키지를 볼 때:

  • 그룹과 해당 프로젝트에 발행된 모든 패키지가 표시됩니다.
  • 액세스할 수 있는 프로젝트만 표시됩니다.
  • 개인 프로젝트이거나 해당 프로젝트의 멤버가 아닌 경우 해당 프로젝트의 패키지는 표시되지 않습니다.

패키지 타입에 따른 패키지를 생성하고 업로드하는 방법에 대한 정보는 해당 패키지의 GitLab 문서를 참조하세요.

레지스트리로 인증

인증 방법은 사용 중인 패키지 관리자에 따라 다릅니다. 자세한 정보는 사용하려는 특정 패키지 형식에 대한 문서를 참조하세요.

대부분의 패키지 유형에 대해 다음 자격 증명 유형이 유효합니다:

  • 개인 액세스 토큰: 사용자 권한으로 인증합니다. 패키지 레지스트리의 개인 및 로컬 사용에 적합합니다.
  • 프로젝트 배포 토큰: 프로젝트의 모든 패키지에 액세스를 허용합니다. 많은 사용자에 대한 프로젝트 액세스를 부여하고 취소하는 데 적합합니다.
  • 그룹 배포 토큰: 그룹 및 해당 서브그룹의 모든 패키지에 액세스를 허용합니다. 다수의 사용자에 대한 패키지 액세스를 부여하고 취소하는 데 적합합니다.
  • 작업 토큰: 작업을 실행하는 프로젝트의 사용자가 실행한 작업에 대한 패키지에 액세스를 허용합니다. 다른 외부 프로젝트에 액세스할 수 있습니다.
  • 조직에서 이중 인증(2FA)을 사용하는 경우 api 범위로 설정된 개인 액세스 토큰을 사용해야 합니다.
  • CI/CD 파이프라인을 통해 패키지를 발행하는 경우 CI 작업 토큰을 사용해야 합니다.

참고: 프로젝트의 Settings > General > Visibility, project features, permissions에서 “Package registry” 기능을 비활성화하는 경우 403 Forbidden 응답을 받게 됩니다. 외부 인증이 활성화되어 있는 경우 배포 토큰을 사용한 패키지 레지스트리 액세스는 사용할 수 없습니다.

GitLab CI/CD 사용

GitLab CI/CD를 사용하여 패키지 레지스트리에 빌드하거나 가져올 수 있습니다.

패키지 빌드

CI_JOB_TOKEN을 사용하여 GitLab에 인증할 수 있습니다.

시작하는 데 사용할 수 있는 CI/CD 템플릿은 이 저장소에 있습니다.

CI/CD와 함께 GitLab 패키지 레지스트리를 사용하는 방법에 대한 자세한 정보는 다음을 참조하세요:

패키지를 빌드하려면 패키지의 세부 정보를 볼 때 확장된 활동 정보가 표시됩니다:

Package CI/CD activity

패키지를 게시한 파이프라인과 해당 패키지를 트리거한 커밋 및 사용자를 볼 수 있습니다. 그러나 히스토리는 특정 패키지의 다섯 번의 업데이트로 제한됩니다.

패키지 가져오기

다른 레지스트리에 이미 빌드된 패키지가 있는 경우 패키지 가져오기자를 사용하여 GitLab 패키지 레지스트리로 가져올 수 있습니다.

지원되는 패키지 목록은 다른 저장소에서 패키지 가져오기를 참조하세요.

저장소 사용량 감소

패키지 레지스트리의 저장소 사용량을 감소하는 방법에 대한 정보는 패키지 레지스트리 저장소 사용량 줄이기를 참조하세요.

패키지 레지스트리 비활성화

패키지 레지스트리는 자동으로 활성화됩니다.

GitLab의 자체 관리 인스턴스를 사용하는 경우 관리자는 GitLab 사이드바의 패키지 및 레지스트리 메뉴 항목을 제거할 수 있습니다. 자세한 정보는 관리 문서를 참조하세요.

프로젝트별로 패키지 레지스트리를 제거할 수도 있습니다:

  1. 프로젝트에서 Settings > General로 이동합니다.
  2. Visibility, project features, permissions 섹션을 확장하고 Packages 기능을 비활성화합니다.
  3. 변경 사항 저장을 선택합니다.

배포 > 패키지 레지스트리 항목이 사이드바에서 제거됩니다.

패키지 레지스트리 가시성 권한

프로젝트 수준의 권한을 통해 패키지를 다운로드, 푸시 또는 삭제하는 등의 작업을 결정할 수 있습니다.

패키지 레지스트리의 가시성은 저장소와 상관없이 프로젝트 설정에서 제어할 수 있습니다. 예를 들어, 프로젝트를 공개로 설정하고 저장소 가시성을 프로젝트 멤버만으로 설정하는 경우 패키지 레지스트리는 공개됩니다. 패키지 레지스트리를 비활성화하면 모든 패키지 레지스트리 작업이 비활성화됩니다.

프로젝트 가시성 동작 최소 역할 요구 사항
공개 패키지 레지스트리 보기 n/a, 인터넷의 모든 사용자가 이 작업을 수행할 수 있습니다
공개 패키지 게시하기 Developer
공개 패키지 끌어오기 n/a, 인터넷의 모든 사용자가 이 작업을 수행할 수 있습니다
내부 패키지 레지스트리 보기 Guest
내부 패키지 게시하기 Developer
내부 패키지 끌어오기 Guest (1)
비공개 패키지 레지스트리 보기 Reporter
비공개 패키지 게시하기 Developer
비공개 패키지 끌어오기 Reporter (1)

누구나 패키지 레지스트리에서 가져올 수 있게 허용

  • GitLab 15.7에서 도입됨.
  • GitLab 17.4에서 NuGet 그룹 엔드포인트를 지원하도록 변경됨.
  • GitLab 17.5에서 Maven 그룹 엔드포인트를 지원하도록 변경됨.
  • GitLab 17.5에서 Terraform 모듈 네임스페이스 엔드포인트를 지원하도록 변경됨.

프로젝트의 가시성 여부에 관계없이 패키지 레지스트리에서 누구나 가져오도록 허용하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 개인 또는 내부 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성, 프로젝트 기능, 권한을 확장합니다.
  4. 누구나 패키지 레지스트리에서 가져오는 것을 허용 토글을 켭니다.
  5. 변경 사항 저장을 선택합니다.

인터넷 상에서 누구라도 해당 프로젝트의 패키지 레지스트리에 액세스할 수 있습니다.

누구나 가져오는 것을 비활성화

사전 요구 사항:

  • 관리자여야 합니다.

전역으로 누구나 패키지 레지스트리에서 가져오는 것을 허용 토글을 숨기려면:

익명 다운로드는 심지어 누구나 패키지 레지스트리에서 가져오는 것을 허용 토글을 켠 프로젝트의 경우에도 비활성화됩니다.

누구나 패키지 레지스트리에서 가져오는 것을 허용할 경우에는 몇 가지 알려진 문제가 있습니다:

  • 프로젝트용 엔드포인트가 지원됩니다.
  • 그룹용 NuGet 레지스트리 엔드포인트가 지원됩니다. 그러나 NuGet 클라이언트가 인증 자격 증명을 보내는 방식 때문에 익명 다운로드가 허용되지 않습니다. 이 기능이 사용 중이더라도 GitLab 사용자만 패키지 레지스트리에서 가져올 수 있습니다.
  • 그룹용 Maven 레지스트리 엔드포인트가 지원됩니다.
  • 네임스페이스용 Terraform 모듈 레지스트리 엔드포인트가 지원됩니다.
  • 다른 그룹 및 인스턴스 엔드포인트는 완전히 지원되지 않습니다. 그룹 엔드포인트의 지원은 epic 14234에서 제안되었습니다.
  • Composer와 호환되지 않습니다. Composer는 그룹 엔드포인트만 지원합니다.
  • Conan과는 작동하지만 conan search를 사용하는 것은 작동하지 않습니다.

기여 받기

다음 표는 지원되지 않는 패키지 관리자 형식을 나열하며, GitLab에 기여를 받고 있음을 보여줍니다. GitLab에 기여하는 것을 고려해보세요. 이 개발 문서는 프로세스를 안내합니다.

형식 상태
Chef #36889
CocoaPods #36890
Conda #36891
CRAN #36892
Opkg #36894
P2 #36895
Puppet #36897
RPM #5932
SBT #36898
Swift #12233
Vagrant #36899