GitLab 패키지 레지스트리 관리
여러 일반적인 패키지 관리자용으로 GitLab을 사용하여 패키지 레지스트리를 사용할 수 있습니다. 패키지 빌드 및 게시, 그리고 하류 프로젝트에서 의존성으로 사용할 수 있는 패키지를 생성할 수 있습니다.
지원되는 형식
패키지 레지스트리는 다음 형식을 지원합니다:
| 패키지 유형 | GitLab 버전 | 
|---|---|
| Composer | 13.2+ | 
| Conan | 12.6+ | 
| Go | 13.1+ | 
| Maven | 11.3+ | 
| npm | 11.7+ | 
| NuGet | 12.8+ | 
| PyPI | 12.10+ | 
| 일반 패키지 | 13.5+ | 
| Helm 차트 | 14.1+ | 
기여 받기
아래 표는 지원되지 않는 형식이지만 GitLab에 대한 커뮤니티 기여를 받고 있는 형식들을 나열하고 있습니다. GitLab에 기여하는 것을 고려해보세요. 이 개발 문서에서 프로세스를 안내합니다.
| 형식 | 상태 | 
|---|---|
| Chef | #36889 | 
| CocoaPods | #36890 | 
| Conda | #36891 | 
| CRAN | #36892 | 
| Debian | 프로젝트: Merge Request | 
| Opkg | #36894 | 
| P2 | #36895 | 
| Puppet | #36897 | 
| RPM | #5932 | 
| RubyGems | #803 | 
| SBT | #36898 | 
| Terraform | 프로젝트: Merge Request | 
| Vagrant | #36899 | 
요청한 요금 한도
하류 프로젝트에서 의존성으로 패키지를 다운로드할 때 많은 요청이 패키지 API를 통해 이루어집니다. 따라서 강제로 적용된 사용자 및 IP 요금 한도에 도달할 수 있습니다. 이 문제를 해결하기 위해 패키지 API에 대한 특정 요금 한도를 정의할 수 있습니다. 자세한 내용은 패키지 레지스트리 요금 한도를 참조하세요.
패키지 레지스트리 활성화 또는 비활성화
패키지 레지스트리는 기본적으로 활성화되어 있습니다. 비활성화하려면:
- 
/etc/gitlab/gitlab.rb파일을 편집합니다:# 패키지를 활성화하려면 true로 변경하세요 - 정의되지 않은 경우에는 기본적으로 활성화됩니다 gitlab_rails['packages_enabled'] = false - 
파일을 저장하고 GitLab을 다시 구성합니다:
sudo gitlab-ctl reconfigure 
- 
Helm 값들을 내보냅니다:
helm get values gitlab > gitlab_values.yaml - 
gitlab_values.yaml파일을 편집합니다:global: appConfig: packages: enabled: false - 
파일을 저장하고 새로운 값을 적용합니다:
helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab 
- 
docker-compose.yml파일을 편집합니다:version: "3.6" services: gitlab: environment: GITLAB_OMNIBUS_CONFIG: | gitlab_rails['packages_enabled'] = false - 
파일을 저장하고 GitLab을 다시 시작합니다:
docker compose up -d 
- 
/home/git/gitlab/config/gitlab.yml파일을 편집합니다:production: &base packages: enabled: false - 
파일을 저장하고 GitLab을 다시 시작합니다:
# systemd를 실행 중인 시스템의 경우 sudo systemctl restart gitlab.target # SysV init를 실행 중인 시스템의 경우 sudo service gitlab restart 
저장 경로 변경
기본적으로 패키지는 로컬에 저장되지만, 기본 로컬 위치를 변경하거나 객체 리포지터리를 사용할 수 있습니다.
로컬 저장 경로 변경
기본적으로 패키지는 GitLab 설치와 관련된 로컬 경로에 저장됩니다:
- 리눅스 패키지 (Omnibus): 
/var/opt/gitlab/gitlab-rails/shared/packages/ - Self-compiled (source): 
/home/git/gitlab/shared/packages/ 
로컬 저장 경로를 변경하려면:
- 
/etc/gitlab/gitlab.rb파일을 편집하고 다음 라인을 추가합니다:gitlab_rails['packages_storage_path'] = "/mnt/packages" - 
파일을 저장하고 GitLab을 다시 구성합니다:
sudo gitlab-ctl reconfigure 
- 
/home/git/gitlab/config/gitlab.yml파일을 편집합니다:production: &base packages: enabled: true storage_path: /mnt/packages - 
파일을 저장하고 GitLab을 다시 시작합니다:
# systemd를 실행 중인 시스템의 경우 sudo systemctl restart gitlab.target # SysV init를 실행 중인 시스템의 경우 sudo service gitlab restart 
기존 위치에 패키지가 이미 저장된 경우, 기존 패키지에 접근할 수 있도록 모든 것을 기존 위치에서 새 위치로 이동하세요:
mv /var/opt/gitlab/gitlab-rails/shared/packages/* /mnt/packages/
Docker 및 Kubernetes는 로컬 리포지터리를 사용하지 않습니다.
- Helm 차트 (Kubernetes)의 경우: 대신 객체 리포지터리를 사용하세요.
 - Docker의 경우: 
/var/opt/gitlab/디렉터리는 이미 호스트의 디렉터리에 마운트되어 있습니다. 컨테이너 내부의 로컬 리포지터리 경로를 변경할 필요가 없습니다. 
객체 리포지터리 사용
로컬 리포지터리를 의존하는 대신, 패키지를 저장하는 데 객체 리포지터리를 사용할 수 있습니다.
자세한 정보는 통합된 객체 리포지터리 설정을 참조하세요.
로컬 패키지를 객체 리포지터리로 이관
객체 리포지터리를 구성한 후, 기존 패키지를 로컬 리포지터리에서 원격 리포지터리로 이관하는 다음 작업을 사용합니다. 이 작업은 백그라운드 워커에서 처리되며 다운타임이 필요하지 않습니다.
- 
패키지를 이관합니다.
Linux 패키지 (Omnibus)sudo gitlab-rake "gitlab:packages:migrate"직접 컴파일한 패키지 (소스)RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate - 
진행 상황을 추적하고 모든 패키지가 성공적으로 이관되었는지를 확인하려면 PostgreSQL 콘솔을 사용합니다.
Linux 패키지 (Omnibus) 14.1 및 이전 버전sudo gitlab-rails dbconsoleLinux 패키지 (Omnibus) 14.2 및 이후 버전sudo gitlab-rails dbconsole --database main직접 컴파일한 패키지 (소스)RAILS_ENV=production sudo -u git -H psql -d gitlabhq_production - 
모든 패키지가 객체 리포지터리로 이관되었는지 다음 SQL 쿼리를 사용하여 확인합니다.
objectstg의 수는total과 동일해야 합니다.gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM packages_package_files; total | filesystem | objectstg ------+------------+----------- 34 | 0 | 34 - 
마지막으로,
packages디렉터리에 디스크에 파일이 없는지 확인합니다.Linux 패키지 (Omnibus)sudo find /var/opt/gitlab/gitlab-rails/shared/packages -type f | grep -v tmp | wc -l직접 컴파일한 패키지 (소스)sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l 
도움말