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에 기여하는 것을 고려해보세요. 이 개발 문서를 통해 과정을 안내합니다.
형식 | 상태 |
---|---|
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 |
요청 한도
하위 프로젝트에서 의존성으로 패키지를 다운로드할 때, 많은 요청이 패키지 API를 통해 이루어집니다. 따라서 사용자 및 IP 요청 한도에 도달할 수 있습니다. 이 문제를 해결하기 위해 패키지 API에 특정 요청 한도를 정의할 수 있습니다. 자세한 내용은 패키지 레지스트리 요청 한도를 참조하세요.
패키지 레지스트리 활성화 또는 비활성화
패키지 레지스트리는 기본적으로 활성화되어 있습니다. 비활성화하려면:
-
/etc/gitlab/gitlab.rb
을 편집하세요:# Change to true to enable packages - enabled by default if not defined gitlab_rails['packages_enabled'] = false
-
파일을 저장하고 GitLab을 다시 구성하세요:
sudo gitlab-ctl reconfigure
-
Helm 값(Values)을 내보내세요:
helm get values gitlab > gitlab_values.yaml
-
gitlab_values.yaml
을 편집하세요:global: appConfig: packages: enabled: false
-
파일을 저장하고 새 값(values)을 적용하세요:
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 설치와 관련된 로컬 경로에 저장됩니다:
- Linux 패키지 (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을 사용하는 시스템의 경우s 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 dbconsole
Linux 패키지 (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