Ruby gem 패키지 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated Status: Experiment

경고: GitLab의 Ruby gem 패키지 레지스트리는 아직 제한된 기능으로 인해 제작용으로 준비되지 않았으며, 개발 중입니다. epic에는 제작용으로 만들 준비가 되기까지 남은 작업과 일정에 대해 자세히 설명되어 있습니다.

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

Ruby gem 및 Bundler 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트의 문서는 Ruby gem API 문서를 참조하세요.

Ruby gem 레지스트리 활성화

GitLab의 Ruby gem 레지스트리는 기본적으로 비활성화된 기능 플래그로 설정되어 있습니다. GitLab Rails 콘솔에 액세스할 수 있는 관리자는 이 레지스트리를 인스턴스에 활성화할 수 있습니다.

활성화하려면:

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 작업 토큰으로 인증

RubyGems 명령을 GitLab CI/CD 내에서 사용하기 위해 개인 액세스 토큰이나 배포 토큰 대신 미리 정의된 환경 변수인 CI_JOB_TOKEN을 사용할 수 있습니다.

예시:

# 저장소에 현재 버전이 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 푸시

전제 조건:

젬을 푸시하려면 다음과 같은 명령을 실행합니다:

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에서 확인하고 액세스할 수 있습니다. 그러나 설치에는 가장 최근에 푸시된 젬만 사용됩니다.

Ruby 젬 설치

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