Ruby gems 패키지 레지스트리

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

경고: 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 gems 생성

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을 사용할 수 있습니다.

예:

# 현재 버전이 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"}

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

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

동일한 이름과 버전의 패키지가 이미 존재하는 경우 패키지를 푸시할 수 있습니다. 둘 다 UI에서 확인할 수 있으며 접근할 수 있습니다. 그러나 최근에 푸시된 젬만 설치에 사용됩니다.

Ruby gem 설치

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