패키지 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 이동됨 GitLab Premium에서 GitLab Free로 13.3에서.

GitLab 패키지 레지스트리를 사용하면 GitLab을 다양한 지원되는 패키지 관리자의 개인 또는 공개 레지스트리로 사용할 수 있습니다.

패키지를 게시하고 공유할 수 있으며, 이는 하위 프로젝트에서 종속성으로 소비될 수 있습니다.

패키지 워크플로우

GitLab 패키지 레지스트리를 사용하여 맞춤형 패키지 워크플로우를 만드는 방법을 알아보세요:

패키지 보기

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

  1. 프로젝트 또는 그룹으로 이동합니다.
  2. 배포 > 패키지 레지스트리로 이동합니다.

이 페이지에서 패키지를 검색, 정렬 및 필터링할 수 있습니다.

브라우저에서 URL을 복사하여 붙여넣기로 검색 결과를 공유할 수 있습니다.

패키지 관리자를 구성하거나 특정 패키지를 설치하는 데 유용한 코드 조각도 찾을 수 있습니다.

그룹에서 패키지를 볼 때:

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

패키지를 생성하고 업로드하는 방법에 대한 정보는 패키지 유형에 대한 GitLab 문서를 참조하세요.

레지스트리에 인증하기

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

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

  • 개인 액세스 토큰:
    사용자 권한으로 인증합니다. 패키지 레지스트리를 개인 및 로컬 용도로 사용할 때 좋습니다.

  • 프로젝트 배포 토큰:
    프로젝트 내 모든 패키지에 대한 액세스를 허용합니다. 많은 사용자에게 프로젝트 액세스를 부여하고 철회하는 데 좋습니다.

  • 그룹 배포 토큰:
    그룹 및 하위 그룹의 모든 패키지에 대한 액세스를 허용합니다. 많은 사용자 세트에 대한 많은 패키지에 대한 액세스를 부여하고 철회하는 데 좋습니다.

  • 잡 토큰:
    파이프라인을 실행하는 사용자를 위해 잡이 실행 중인 프로젝트의 패키지에 대한 액세스를 허용합니다.
    다른 외부 프로젝트에 액세스하도록 구성할 수 있습니다.

  • 조직에서 이중 인증(2FA)을 사용하는 경우, api 범위로 설정된 개인 액세스 토큰을 사용해야 합니다.

  • CI/CD 파이프라인을 통해 패키지를 게시하는 경우, CI 작업 토큰을 사용해야 합니다.

참고:
프로젝트의 설정 > 일반 > 가시성, 프로젝트 기능, 권한에서 “패키지 레지스트리” 기능이 꺼져 있으면 403 금지 응답을 받게 됩니다.
외부 인증이 활성화된 경우 배포 토큰을 통한 패키지 레지스트리 접근은 사용할 수 없습니다.

GitLab CI/CD 사용

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

패키지 빌드하기

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

시작하는 데 사용할 수 있는 CI/CD 템플릿은 이 리포지토리에 있습니다.

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

CI/CD를 사용하여 패키지를 빌드하면 패키지 세부 정보를 볼 때 확장된 활동 정보가 표시됩니다:

패키지 CI/CD 활동

패키지를 게시한 파이프라인과 이를 트리거한 커밋 및 사용자를 볼 수 있습니다. 그러나 기록은 주어진 패키지의 다섯 개 업데이트로 제한됩니다.

패키지 가져오기

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

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

저장소 사용량 줄이기

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

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

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

자체 관리 GitLab 인스턴스를 사용하는 경우 관리자가 GitLab 사이드바에서 Packages and registries 메뉴 항목을 제거할 수 있습니다. 더 많은 정보는 관리 문서를 참조하세요.

프로젝트에 대한 패키지 레지스트리를 특정적으로 제거할 수도 있습니다:

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

사이드바에서 Deploy > Package Registry 항목이 제거됩니다.

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

프로젝트 수준 권한은 패키지를 다운로드, 푸시, 삭제와 같은 작업을 결정합니다.

패키지 레지스트리의 가시성은 리포지토리와 독립적이며 프로젝트의 설정에서 제어할 수 있습니다. 예를 들어, 공개 프로젝트가 있고 리포지토리 가시성을 오직 프로젝트 멤버만으로 설정한 경우, 패키지 레지스트리는 공개됩니다. 패키지 레지스트리를 비활성화하면 모든 패키지 레지스트리 작업이 비활성화됩니다.

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

누구나 패키지 레지스트리에서 가져오도록 허용

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

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

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 비공식 또는 내부 프로젝트를 찾습니다.
  2. Settings > General을 선택합니다.
  3. Visibility, project features, permissions를 확장합니다.
  4. Allow anyone to pull from Package Registry 토글을 켭니다.
  5. Save changes를 선택합니다.

인터넷의 누구나 프로젝트의 패키지 레지스트리에 접근할 수 있습니다.

누구나 풀 수 있는 기능 비활성화

전제 조건:

  • 귀하는 관리자여야 합니다.

Package Registry에서 누구나 풀 수 있는 기능 토글을 전역적으로 숨기려면:

익명 다운로드는 비활성화되며, 누구나 풀 수 있는 기능 토글이 켜진 프로젝트라도 마찬가지입니다.

누구나 패키지 레지스트리에서 풀 수 있도록 허용할 때 몇 가지 알려진 문제가 존재합니다:

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

기여 수락

이 표는 우리가 기여를 수락하고 있는 지원하지 않는 패키지 관리자 형식을 나열합니다.

GitLab에 기여하는 것을 고려해 보세요. 이 개발 문서는 과정을 안내합니다.

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