패키지 레지스트리의 Ruby gems

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
Status: Experiment
caution
GitLab의 Ruby gems 패키지 레지스트리는 개발 중이며, 제한된 기능으로 인해 프로덕션 사용을 위한 준비가 되어 있지 않습니다. 이 에픽은 프로덕션 준비를 위한 남은 작업과 일정에 대한 세부 사항을 설명합니다.

프로젝트의 패키지 레지스트리에 Ruby gems를 게시한 다음, 의존성으로 사용해야 할 때 패키지를 설치할 수 있습니다. gems를 레지스트리에 푸시할 수 있지만, 레지스트리에서 설치할 수는 없습니다. 그러나 패키지 레지스트리의 UI에서 또는 API를 사용하여 gem 파일을 직접 다운로드할 수 있습니다.

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 미리 정의된 환경 변수를 사용할 수 있습니다.

예를 들어:

# my_gem.gemspec 파일이 현재 0.0.1로 설정되어 있는 버전이 있는 리포지토리에 존재한다고 가정  
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  

GitLab에 체크인할 ~/.gem/credentials 파일에서도 CI_JOB_TOKEN을 사용할 수 있습니다:

---  
https://gitlab.example.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/rubygems: '${env.CI_JOB_TOKEN}'  

루비 젬 푸시하기

선행 조건:

젬을 푸시하려면 다음과 같은 명령어를 실행하세요:

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"}

게시된 젬을 보려면 프로젝트의 패키지 및 레지스트리 페이지로 이동하십시오. GitLab에 푸시된 젬은 프로젝트의 패키지 UI에 즉시 표시되지 않습니다. 젬 처리는 최대 10분이 걸릴 수 있습니다.

같은 이름 또는 버전의 젬 푸시하기

동일한 이름과 버전의 패키지가 이미 존재하는 경우 젬을 푸시할 수 있습니다.

둘 다 UI에서 볼 수 있으며 접근할 수 있습니다. 그러나 가장 최근에 푸시된 젬만 설치에 사용됩니다.

루비 젬 설치하기

GitLab의 루비 젬 레지스트리는 개발 중이며, 프로덕션 사용을 위해 준비되지 않았습니다. 레지스트리에서 젬을 설치할 수 없습니다. 그러나 UI에서 직접 또는 API를 사용하여 .gem 파일을 다운로드할 수 있습니다.