GitLab 패키지 레지스트리 관리
GitLab을 다양한 일반 패키지 관리자를 위한 개인 레포지토리로 사용하려면 패키지 레지스트리를 사용하세요.
패키지를 빌드하고 게시할 수 있으며, 이는 다운스트림 프로젝트에서 의존성으로 사용될 수 있습니다.
지원하는 포맷
패키지 레지스트리는 다음 포맷을 지원합니다:
패키지 유형 | GitLab 버전 |
---|---|
Composer | 13.2+ |
Conan | 12.6+ |
Go | 13.1+ |
Maven | 11.3+ |
npm | 11.7+ |
NuGet | 12.8+ |
PyPI | 12.10+ |
Generic packages | 13.5+ |
Helm Charts | 14.1+ |
기여 수용
아래 표는 지원되지 않지만 Community 기여를 수용 중인 포맷 목록입니다. GitLab에 기여하는 것을 고려하세요. 이 개발 문서는 프로세스를 안내합니다.
포맷 | 상태 |
---|---|
Chef | #36889 |
CocoaPods | #36890 |
Conda | #36891 |
CRAN | #36892 |
Debian | Draft: Merge request |
Opkg | #36894 |
P2 | #36895 |
Puppet | #36897 |
RPM | #5932 |
RubyGems | #803 |
SBT | #36898 |
Terraform | Draft: Merge request |
Vagrant | #36899 |
요율 제한
하위 프로젝트에서 종속성으로 패키지를 다운로드할 때, 많은 요청이 Packages API를 통해 이루어집니다.
따라서 사용자 및 IP 요율 제한에 도달할 수 있습니다.
이 문제를 해결하기 위해, Packages 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/
- 자체 컴파일 (소스):
/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/
도커와 Kubernetes는 로컬 저장소를 사용하지 않습니다.
- Helm 차트 (Kubernetes): 대신 객체 저장소를 사용하세요.
- 도커:
/var/opt/gitlab/
디렉토리는 이미 호스트의 디렉토리에 마운트되어 있습니다.
컨테이너 내부에서 로컬 저장 경로를 변경할 필요는 없습니다.
오브젝트 스토리지 사용
로컬 스토리지에 의존하는 대신, 패키지를 저장하기 위해 오브젝트 스토리를 사용할 수 있습니다.
자세한 내용은 통합 오브젝트 스토리지 설정을 참조하세요.
로컬 패키지를 오브젝트 스토리지로 마이그레이션
오브젝트 스토리지 구성 후, 다음 작업을 사용하여 로컬 스토리지에서 원격 스토리지로 기존 패키지를 마이그레이션합니다.
처리는 백그라운드 작업자에서 수행되며 다운타임이 필요 없습니다.
-
패키지를 마이그레이션합니다.
Linux 패키지 (Omnibus)sudo gitlab-rake "gitlab:packages:migrate"
Self-compiled (source)RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate
-
진행 상황을 추적하고 PostgreSQL 콘솔을 사용하여 모든 패키지가 성공적으로 마이그레이션되었는지 확인합니다.
Linux 패키지 (Omnibus) 14.1 및 이전 버전sudo gitlab-rails dbconsole
Linux 패키지 (Omnibus) 14.2 및 이후 버전sudo gitlab-rails dbconsole --database main
Self-compiled (source)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
Self-compiled (source)sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l