패키지 레지스트리
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
GitLab 패키지 레지스트리를 사용하면 다양한 지원되는 패키지 관리자에 대해 GitLab을 비공개 또는 공개 레지스트리로 사용할 수 있습니다. GitLab 패키지 레지스트리를 사용하여 나만의 사용자 지정 패키지 워크플로를 구축하는 방법을 알아봅니다:
GitLab 패키지 레지스트리를 사용하면 다양한 지원되는 패키지 관리자에 대해 GitLab을 비공개 또는 공개 레지스트리로 사용할 수 있습니다. 패키지를 게시하고 공유할 수 있으며, 하위 프로젝트에서 의존성으로 사용할 수 있습니다.
패키지 워크플로#
GitLab 패키지 레지스트리를 사용하여 나만의 사용자 지정 패키지 워크플로를 구축하는 방법을 알아봅니다:
- 프로젝트를 패키지 레지스트리로 사용하여 모든 패키지를 하나의 프로젝트에 게시할 수 있습니다.
- 하나의 모노레포 프로젝트에서 여러 다양한 패키지를 게시할 수 있습니다.
패키지 보기#
프로젝트 또는 그룹의 패키지를 볼 수 있습니다:
- 상단 바에서 Search or go to를 선택하고 프로젝트 또는 그룹을 찾습니다.
- Deploy > Package registry를 선택합니다.
그룹에서 패키지를 볼 때:
- 이 페이지에는 그룹과 해당 프로젝트에 게시된 모든 패키지가 표시됩니다.
- 이 페이지에는 액세스할 수 있는 프로젝트만 표시됩니다.
- 이 페이지에는 비공개이거나 멤버가 아닌 프로젝트의 패키지는 표시되지 않습니다.
패키지를 만들고 업로드하는 방법은 패키지 유형에 대한 지침을 따릅니다.
패키지를 나열하려면 API를 사용할 수도 있습니다.
GitLab CI/CD 사용#
GitLab CI/CD를 사용하여 패키지 레지스트리에 패키지를 빌드하거나 가져올 수 있습니다.
패키지 빌드#
CI_JOB_TOKEN을 사용하여 GitLab으로 인증할 수 있습니다.
시작하려면 사용 가능한 CI/CD 템플릿을 사용할 수 있습니다.
CI/CD와 함께 GitLab 패키지 레지스트리 사용에 대한 자세한 내용은 다음을 참고합니다:
CI/CD를 사용하여 패키지를 빌드하면 패키지 세부 정보를 볼 때 확장된 활동 정보가 표시됩니다:

패키지를 게시한 파이프라인과 이를 트리거한 커밋 및 사용자를 볼 수 있습니다. 활동 히스토리는 특정 패키지의 최신 5번의 업데이트로 제한됩니다.
패키지 가져오기#
다른 레지스트리에서 이미 빌드된 패키지가 있는 경우 패키지 가져오기 도구를 사용하여 GitLab 패키지 레지스트리로 가져올 수 있습니다.
스토리지 사용 줄이기#
패키지 레지스트리의 스토리지 사용을 줄이는 방법에 대한 자세한 내용은 패키지 레지스트리 스토리지 사용 줄이기를 참고합니다.
패키지 레지스트리 끄기#
패키지 레지스트리는 기본적으로 켜져 있습니다.
GitLab Self-Managed 인스턴스에서 관리자는 GitLab 사이드바에서 Packages and registries 메뉴 항목을 제거할 수 있습니다. 자세한 내용은 GitLab 패키지 레지스트리 관리를 참고합니다.
특정 프로젝트에서 패키지 레지스트리를 제거할 수도 있습니다:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Settings > General을 선택합니다.
- Visibility, project features, permissions 섹션을 확장하고 Package registry 토글을 끕니다.
- Save changes를 선택합니다.
GitLab이 사이드바에서 Deploy > Package registry 항목을 제거합니다.
프로젝트의 패키지 레지스트리를 끄려면 API를 사용할 수도 있습니다.
패키지 레지스트리 가시성 권한#
프로젝트 권한은 멤버와 사용자가 패키지를 다운로드, 푸시 또는 삭제할 수 있는지 결정합니다.
패키지 레지스트리의 가시성은 리포지터리와 독립적이며 프로젝트 설정에서 제어할 수 있습니다. 예를 들어 공개 프로젝트가 있고 리포지터리 가시성을 Only Project Members로 설정하면 패키지 레지스트리는 공개됩니다. Package registry 토글을 끄면 모든 패키지 레지스트리 작업이 꺼집니다.
| 프로젝트 가시성 | 작업 | 최소 필요 권한 |
|---|---|---|
| 공개 | 패키지 레지스트리 보기 | 없음. 인터넷상의 누구나 이 작업을 수행할 수 있습니다. |
| 공개 | 패키지 게시 | Developer |
| 공개 | 패키지 가져오기 | 없음. 인터넷상의 누구나 이 작업을 수행할 수 있습니다. |
| 내부 | 패키지 레지스트리 보기 | Guest |
| 내부 | 패키지 게시 | Developer |
| 내부 | 패키지 가져오기 | Guest |
| 비공개 | 패키지 레지스트리 보기 | Reporter |
| 비공개 | 패키지 게시 | Developer |
| 비공개 | 패키지 가져오기 | Reporter |
누구나 패키지 레지스트리에서 가져오도록 허용#
히스토리
프로젝트 가시성에 상관없이 누구나 패키지 레지스트리에서 가져올 수 있도록 허용하려면:
- 상단 바에서 Search or go to를 선택하고 비공개 또는 내부 프로젝트를 찾습니다.
- Settings > General을 선택합니다.
- Visibility, project features, permissions를 확장합니다.
- Allow anyone to pull from package registry 토글을 켭니다.
- Save changes를 선택합니다.
인터넷상의 누구나 프로젝트의 패키지 레지스트리에 액세스할 수 있습니다.
누구나 가져오도록 허용하려면 API를 사용할 수도 있습니다.
누구나 패키지 레지스트리에서 가져오도록 허용하면 다음 엔드포인트가 지원됩니다:
- 프로젝트 엔드포인트
- NuGet 레지스트리 그룹 엔드포인트
- Maven 레지스트리 그룹 엔드포인트
- Terraform 모듈 레지스트리 네임스페이스 엔드포인트
이 설정에는 다음과 같은 알려진 이슈가 있습니다:
- NuGet 클라이언트가 인증 자격 증명을 보내는 방식 때문에 NuGet 그룹 엔드포인트는 익명 다운로드를 허용하지 않습니다. 이 설정이 켜져 있더라도 GitLab 사용자만 패키지 레지스트리에서 가져올 수 있습니다.
- 다른 그룹 및 인스턴스 엔드포인트는 완전히 지원되지 않습니다. 그룹 엔드포인트 지원은 에픽 14234에서 제안됩니다.
- Composer는 그룹 엔드포인트만 있으므로 익명 가져오기는 Composer 레지스트리와 작동하지 않습니다.
- 익명 가져오기는 Conan과는 작동하지만
conan search는 작동하지 않습니다.
누구나 가져오기 허용 비활성화#
사전 요구 사항:
- 관리자 액세스 권한이 있어야 합니다.
Allow anyone to pull from package registry 토글을 전역적으로 숨기려면:
- 애플리케이션 설정 업데이트
package_registry_allow_anyone_to_pull_option을false로 설정합니다.
Allow anyone to pull from package registry 토글을 켠 프로젝트의 경우에도 익명 다운로드가 꺼집니다.
감사 이벤트#
히스토리
패키지가 게시되거나 삭제될 때 감사 이벤트를 생성합니다.
감사 이벤트 켜기#
감사 이벤트는 기본적으로 꺼져 있습니다.
사전 요구 사항:
- 프로젝트가 포함된 그룹의 Owner 권한이 있거나, 프로젝트가 포함된 개인 네임스페이스의 소유자여야 합니다.
감사 이벤트를 켜려면:
- GraphQL API로
네임스페이스의
auditEventsEnabled를true로 설정합니다.
이 설정은 해당 네임스페이스에 직접 속한 프로젝트에만 적용됩니다. 하위 그룹에 있는 프로젝트의 경우 해당 하위 그룹에서 설정을 켭니다.
패키지 감사 이벤트가 표시되는 위치는 프로젝트의 네임스페이스에 따라 다릅니다:
- 프로젝트가 그룹에 있으면 이벤트는 프로젝트가 아니라 해당 그룹의 감사 이벤트에 표시됩니다.
- 프로젝트가 개인 네임스페이스에 있으면 이벤트는 프로젝트의 감사 이벤트에 표시됩니다.
자세한 내용은 감사 이벤트 보기를 참고합니다.
기여 수락#
다음 표에는 지원되지 않는 패키지 형식이 나열되어 있습니다. 이러한 형식에 대한 지원을 추가하기 위해 GitLab에 기여하는 것을 고려해 봅니다.