Skip to main content

RubyGems 레지스트리 작업

패키지를 GitHub Packages에 게시하고 GitHub Packages에 저장된 패키지를 Bundler가 있는 Ruby 프로젝트의 종속성으로 사용하도록 RubyGems를 구성할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

Enterprise Managed Users는 조직 네임스페이스에 게시할 수 있습니다. 해당되는 사용자는 개인 스토리지 할당이 없으므로 해당 계정의 네임스페이스에 패키지를 게시할 수 없습니다. Enterprise Managed Users에 대한 정보는 Enterprise Managed Users 정보을(를) 참조하세요.

RubyGems 레지스트리의 URL

GitHub.com에서 GitHub에 액세스하는 경우 https://rubygems.pkg.github.com에 패키지를 게시합니다. 이 문서의 예제에서는 이 URL을 사용합니다.

octocorp.ghe.com과 같은 다른 도메인에서 GitHub에 액세스하는 경우 "https://rubygems.pkg.github.com"을 https://rubygems.SUBDOMAIN.ghe.com으로 바꾸세요. 여기서 SUBDOMAIN은 엔터프라이즈의 고유 하위 도메인입니다.

필수 조건

  • RubyGems 2.4.1 이상이 있어야 합니다. RubyGems 버전을 찾으려면 다음을 수행합니다.

    gem --version
    
  • 번들러 1.6.4 이상이 있어야 합니다. 번들러 버전을 찾으려면 다음을 수행합니다.

    $ bundle --version
    Bundler version 1.13.7
    

GitHub Packages 인증

참고

GitHub Packages은(는) personal access token (classic)을(를) 사용하는 인증만 지원합니다. 자세한 내용은 개인용 액세스 토큰 관리을(를) 참조하세요.

프라이빗, 내부, 퍼블릭 패키지를 게시, 설치, 삭제하려면 액세스 토큰이 필요합니다.

personal access token (classic)을 사용하여 GitHub Packages 또는 GitHub API에 인증할 수 있습니다. personal access token (classic)을(를) 만들 때 필요에 따라 토큰의 범위를 다르게 할당할 수 있습니다. personal access token (classic)의 패키지 관련 범위에 대한 자세한 내용은 GitHub 패키지에 대한 사용 권한 정보를 참조하세요.

GitHub Actions 워크플로 내에서 GitHub Packages 레지스트리에 인증하려면 다음을 사용할 수 있습니다.

  • 워크플로 리포지토리와 연결된 패키지를 게시하려면 GITHUB_TOKEN을 사용합니다.
  • 다른 프라이빗 리포지토리와 연결된 패키지를 설치하기 위한 최소한 read:packages 범위가 있는 personal access token (classic)(리포지토리에 패키지에 대한 읽기 액세스 권한이 부여된 경우 GITHUB_TOKEN을 사용할 수 있습니다. 패키지의 액세스 제어 및 표시 여부 구성을(를) 참조하세요).

GitHub Actions 워크플로에서 인증

이 레지스트리는 세분화된 권한을 지원합니다. 세분화된 권한을 지원하는 레지스트리는 GitHub Actions 워크플로가 personal access token을(를) 사용하여 레지스트리에 인증하는 경우, GITHUB_TOKEN로 워크플로를 업데이트하는 것을 권장합니다. personal access token로 레지스트리에 인증하는 워크플로를 업데이트하는 방법에 대한 지침은 GitHub Actions를 사용하여 패키지 게시 및 설치를 참조하세요.

참고

GitHub Actions 워크플로에서 REST API를 사용하여 패키지를 삭제하고 복원하는 기능은 현재 공개 미리 보기 버전이며 변경될 수 있습니다.

토큰이 패키지에 대해 admin 권한이 있는 경우, GitHub Actions 워크플로에서 GITHUB_TOKEN로 REST API를 사용하여 패키지를 삭제하거나 복원할 수 있습니다. 워크플로를 사용하여 패키지를 게시하는 리포지토리와 패키지에 명시적으로 연결한 리포지토리에는 리포지토리의 패키지에 대한 admin 권한이 자동으로 부여됩니다.

GITHUB_TOKEN에 대한 자세한 내용은 워크플로에서 인증에 GITHUB_TOKEN 사용을(를) 참조하세요. 작업에서 레지스트리를 사용하는 모범 사례에 대한 자세한 내용은 안전 사용 참조를 참조하세요.

GitHub Codespaces및 GitHub Actions에 대한 패키지의 액세스 권한을 독립적으로 부여하도록 선택할 수도 있습니다. 자세한 내용은 패키지의 액세스 제어 및 표시 여부 구성패키지의 액세스 제어 및 표시 여부 구성을(를) 참조하세요.

personal access token을(를) 사용하여 인증

적절한 범위의personal access token (classic)으로 GitHub Packages에서 패키지를 게시하고 설치해야 합니다. 자세한 내용은 GitHub 패키지 소개을(를) 참조하세요.

Gems를 게시하고 설치하려는 경우 personal access token을(를) 사용하여 GitHub Packages에 인증하도록 RubyGems 또는 Bundler를 구성할 수 있습니다.

새 gem을 게시하려면 personal access token (classic)을(를) 포함하도록 ~/.gem/credentials 파일을 편집하여 RubyGems에서 GitHub Packages를 인증해야 합니다. 이 파일이 없는 경우 새 ~/.gem/credentials 파일을 만듭니다.

예를 들어 다음을 포함하도록 _~/.gem/credentials_를 만들거나 편집합니다. 이때 TOKEN을 personal access token(으)로 바꿉니다.

---
:github: Bearer TOKEN

gem을 설치하려면 https://USERNAME:TOKEN@rubygems.pkg.github.com/NAMESPACE/를 포함하도록 gem 소스를 업데이트하여 GitHub Packages에 인증해야 합니다. 아래와 같이 바꿔야 합니다.

  • USERNAME을 GitHub 사용자 이름으로 바꾸기.
  • TOKEN을 personal access token (classic)(으)로 바꿉니다.
  • NAMESPACE를 gem의 범위로 지정된 개인 계정 또는 조직의 이름으로 바꿉니다.

패키지를 전역으로 사용할 수 있도록 하려는 경우 다음 명령을 실행하여 레지스트리를 원본으로 추가할 수 있습니다.

gem sources --add https://USERNAME:TOKEN@rubygems.pkg.github.com/NAMESPACE/

Bundler를 사용하여 인증하려면 personal access token (classic)을(를) 사용하도록 Bundler를 구성합니다. 이때 USERNAME을 GitHub 사용자 이름으로, TOKEN을 personal access token(으)로, NAMESPACE를 gem의 범위로 지정된 개인 계정 또는 조직의 이름으로 바꿉니다.

bundle config https://rubygems.pkg.github.com/NAMESPACE USERNAME:TOKEN

패키지 게시

패키지를 처음 게시할 때 기본 표시 여부는 프라이빗입니다. 표시 유형 또는 액세스 권한을 변경하려면 패키지의 액세스 제어 및 표시 여부 구성을(를) 참조하세요. gem을 만드는 방법에 대한 자세한 내용은 RubyGems 설명서에서 직접 gem 만들기를 참조하세요.

참고

리포지토리에 연결된 패키지를 게시하는 경우, 패키지는 자동으로 연결된 리포지토리의 액세스 권한을 상속받고, 조직에서 액세스 권한의 자동 상속을 사용하지 않도록 설정하지 않은 한 연결된 리포지토리의 GitHub Actions 워크플로에 패키지에 대한 액세스 권한이 자동으로 부여됩니다. 자세한 내용은 패키지의 액세스 제어 및 표시 여부 구성을(를) 참조하세요.

  1. GitHub Packages에 인증합니다. 자세한 내용은 GitHub Packages에 인증을 참조하세요.

  2. _gemspec_에서 패키지를 빌드하여 .gem 패키지를 만듭니다. GEM_NAME을 gem의 이름으로 바꿉니다.

    gem build GEM_NAME.gemspec
    
  3. GitHub Packages에 패키지를 게시합니다. 이때 NAMESPACE를 패키지의 범위로 지정된 개인 계정 또는 조직의 이름으로, GEM_NAME을 gem 패키지의 이름으로 바꿉니다.

    참고

    gem의 metadata.gz 파일의 압축되지 않은 최대 크기는 2MB보다 작아야 합니다. 해당 제한을 초과하는 gem을 푸시하는 요청은 실패합니다.

    $ gem push --key github \
    --host https://rubygems.pkg.github.com/NAMESPACE \
    GEM_NAME-0.0.1.gem
    

패키지를 리포지토리에 연결

RubyGems 레지스트리는 조직 또는 개인 계정 내에 패키지를 저장하며 패키지를 리포지토리와 연결할 수 있게 합니다. 리포지토리에서 사용 권한을 상속할지 또는 리포지토리와 독립적으로 세분화된 권한을 설정할지 선택할 수 있습니다.

gem.metadatagithub_repo 필드에 있는 GitHub 리포지토리의 URL을 포함함으로써 gem이 게시되는 즉시 리포지토리에 연결되도록 할 수 있습니다. 여러 gem을 동일한 리포지토리에 연결할 수 있습니다.

gem.metadata = { "github_repo" => "ssh://github.com/OWNER/REPOSITORY" }

게시된 패키지를 리포지토리와 연결하는 방법에 대한 자세한 내용은 리포지토리를 패키지에 연결을(를) 참조하세요.

패키지 설치

_rubygems.org_에서 gem을 사용하는 것처럼 GitHub Packages에서 gem을 사용할 수 있습니다. ~/.gemrc 파일에서 GitHub 사용자 또는 조직을 소스로 추가하거나 번들러를 사용하여 Gemfile 파일을 편집하여 GitHub Packages를 인증할 수 있습니다.

  1. GitHub Packages에 인증합니다. 자세한 내용은 GitHub Packages에 인증을 참조하세요.

  2. 번들러의 경우 _Gemfile_에서 GitHub 사용자 또는 조직을 소스로 추가하여 새 소스에서 gem을 가져옵니다. 예를 들어 지정한 패키지에만 GitHub Packages를 사용하는 _Gemfile_에 새 source 블록을 추가하여 GEM_NAME을 GitHub Packages에서 설치하려는 패키지로, NAMESPACE를 설치하려는 gem의 범위로 지정된 개인 계정 또는 조직으로 바꿀 수 있습니다.

    source "https://rubygems.org"
    
    gem "rails"
    
    source "https://rubygems.pkg.github.com/NAMESPACE" do
      gem "GEM_NAME"
    end
    
  3. 버전이 1.7.0 이전인 번들러의 경우 새 전역 source를 추가해야 합니다. 번들러 사용에 대한 자세한 내용은 bundler.io documentation을 참조하세요.

    source "https://rubygems.pkg.github.com/NAMESPACE"
    source "https://rubygems.org"
    
    gem "rails"
    gem "GEM_NAME"
    
  4. 패키지를 설치합니다.

gem install GEM_NAME --version "0.1.1"

추가 참고 자료