패키지 레지스트리의 Ruby gems
- GitLab 13.10에서 소개되었습니다.
프로젝트의 패키지 레지스트리에 Ruby gems을 게시한 다음 필요할 때 의존성으로 사용하기 위해 패키지를 설치할 수 있습니다. 레지스트리에 젬을 푸시할 수는 있지만 레지스트리에서 설치할 수는 없습니다. 그러나 패키지 레지스트리의 UI에서 gem
파일을 직접 다운로드하거나 API를 사용하여 다운로드할 수는 있습니다.
Ruby gems 및 Bundler 패키지 관리자 클라이언트에서 사용하는 특정 API 엔드포인트에 대한 문서는 Ruby gems API 문서를 참조하십시오.
Ruby gems 레지스트리 활성화
GitLab의 Ruby gems 레지스트리는 기본적으로 비활성화된 피처 플래그 뒤에 숨겨져 있습니다. GitLab Rails 콘솔에 접근 권한이 있는 GitLab 관리자는 이 레지스트리를 인스턴스에 활성화할 수 있습니다.
활성화하려면:
Feature.enable(:rubygem_packages)
비활성화하려면:
Feature.disable(:rubygem_packages)
특정 프로젝트에 대해 활성화 또는 비활성화하려면:
Feature.enable(:rubygem_packages, Project.find(1))
Feature.disable(:rubygem_packages, Project.find(2))
Ruby gem 생성
Ruby gem을 만드는 데 도움이 필요하다면 RubyGems 문서를 참조하십시오.
패키지 레지스트리 인증
패키지 레지스트리로 푸시하려면 먼저 인증해야 합니다.
이를 위해 사용할 수 있는 것:
개인 액세스 토큰 또는 배포 토큰을 사용하여 인증
개인 액세스 토큰으로 인증하려면 ~/.gem/credentials
파일을 만들거나 편집하고 다음을 추가하십시오:
---
https://gitlab.example.com/api/v4/projects/<project_id>/packages/rubygems: '<your token>'
-
<your token>
은 개인 액세스 토큰 또는 배포 토큰의 토큰 값이어야 합니다. - 프로젝트 ID는 프로젝트 개요 페이지에서 확인할 수 있습니다.
CI 작업 토큰으로 인증
GitLab CI/CD 내에서 RubyGems 명령을 사용하기 위해 개인 액세스 토큰이나 배포 토큰 대신 미리 정의된 CI_JOB_TOKEN
환경 변수를 사용할 수 있습니다.
예시:
# repository에 0.0.1로 설정된 my_gem.gemspec 파일이 있다고 가정
image: ruby
run:
before_script:
- mkdir ~/.gem
- echo "---" > ~/.gem/credentials
- |
echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/rubygems: '${CI_JOB_TOKEN}'" >> ~/.gem/credentials
- chmod 0600 ~/.gem/credentials # rubygems는 자격 증명 파일에 0600 권한을 요구합니다
script:
- gem build my_gem
- gem push my_gem-0.0.1.gem --host ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/rubygems
CI_JOB_TOKEN
을 확인하여 GitLab에 체크인하는 ~/.gem/credentials
파일에서도 사용할 수 있습니다.
---
https://gitlab.example.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/rubygems: '${env.CI_JOB_TOKEN}'
Ruby gem 푸시
전제 조건:
- 패키지 레지스트리에 인증해야 합니다.
- 허용된 최대 젬 크기는 3GB입니다.
젬을 푸시하려면 다음과 같은 명령을 실행하십시오:
gem push my_gem-0.0.1.gem --host <host>
<host>
는 인증 설정 시 사용한 URL입니다. 예를 들어:
gem push my_gem-0.0.1.gem --host https://gitlab.example.com/api/v4/projects/1/packages/rubygems
다음 메시지가 나타나면 젬이 성공적으로 업로드되었음을 나타냅니다:
Pushing gem to https://gitlab.example.com/api/v4/projects/1/packages/rubygems...
{"message":"201 Created"}
게시된 젬을 보려면 프로젝트의 Packages and registries 페이지로 이동하십시오. GitLab에 푸시된 젬은 프로젝트의 패키지 UI에 즉시 표시되지 않을 수 있습니다. 젬을 처리하는 데 최대 10분이 걸릴 수 있습니다.
동일한 이름 또는 버전의 gem 푸시
같은 이름과 버전의 패키지가 이미 존재한다면 패키지를 푸시할 수 있습니다. 두 패키지 모두 UI에서 볼 수 있고 접근할 수 있습니다. 그러나 설치에는 최근에 푸시된 패키지만 사용됩니다.
Ruby gem 설치
GitLab의 Ruby gems 레지스트리는 개발 중이며 프로덕션 환경에 사용할 준비가 되지 않았습니다. 레지스트리에서 젬을 설치할 수 없습니다. 그러나 UI에서 .gem
파일을 직접 다운로드하거나 API를 사용하여 다운로드할 수 있습니다.