Ruby gems 패키지 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated Status: Experiment
caution
GitLab의 Ruby gems 패키지 레지스트리는 아직 제한된 기능으로 인해 프로덕션 환경으로 사용할 준비가 되지 않았습니다. 이 Epic에서 남은 작업 및 프로덕션 환경으로 사용 가능한 시기에 대해 자세히 설명하고 있습니다.

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

Ruby gems 레지스트리를 활성화하세요

GitLab의 Ruby gems 레지스트리는 기본적으로 비활성화된 피처 플래그뒤에 있습니다. 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 documentation을 참조하세요.

패키지 레지스트리에 인증

패키지 레지스트리에 푸시하려면 인증해야 합니다.

이를 위해 다음을 사용할 수 있습니다:

개인 액세스 토큰 또는 배포 토큰으로 인증

개인 액세스 토큰으로 인증하려면 ~/.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 사전 정의 환경 변수를 사용할 수 있습니다.

예:

# 리포지터리에 현재 버전이 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

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

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

게시된 젬을 확인하려면 프로젝트의 Packages and registries 페이지로 이동하세요. GitLab에 푸시된 젬은 프로젝트의 패키지 UI에 즉시 표시되지 않습니다. 젬을 처리하는 데 최대 10분이 소요될 수 있습니다.

동일한 이름 또는 버전의 젬 푸시

동일한 이름과 버전의 패키지가 이미 존재하는 경우에도 패키지를 푸시할 수 있습니다. 둘 다 UI에서 표시되고 액세스할 수 있습니다. 그러나 설치에는 가장 최근에 푸시된 젬만 사용됩니다.

Ruby gem 설치

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