Ruby gem 저장소의 Artifact Registry에 대한 인증 구성

이 페이지에서는 Artifact Registry Ruby gem 저장소로 인증을 구성하는 방법을 설명합니다.

제3자 애플리케이션을 사용하여 저장소에 연결할 때는 Artifact Registry에 인증해야 합니다.

Cloud Build 또는 Google Kubernetes Engine 및 Cloud Run과 같은 런타임 환경에 대한 인증을 구성할 필요는 없습니다. Google Cloud

시작하기 전에

  1. 대상 저장소가 없으면 Ruby gem 저장소를 만듭니다.
  2. Ruby가 설치되어 있는지 확인합니다. 설치 안내는Google Cloud Ruby 설정 튜토리얼을 참고하세요.
  3. 사용 중인 사용자 계정이나 서비스 계정에 저장소에 액세스하는 데 필요한 권한이 있는지 확인합니다.
  4. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

    gcloud init

    외부 ID 프로바이더(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  5. (선택사항) cloud CLI 명령어의 기본값을 구성합니다.

개요

Ruby는 Artifact Registry 저장소에 대한 요청을 인증하는 두 가지 방법을 지원합니다.

  • RubyGems CLI: 푸시 및 풀 요청을 지원합니다. 이 CLI는 기본적으로 Ruby와 함께 제공됩니다. RubyGems로 인증할 때는 저장소에 푸시 또는 풀 요청을 할 때마다 인증해야 합니다.
  • Bundler CLI: pull 요청을 지원합니다. Bundler는 패키지와 업스트림을 gemfile에 저장하므로 사용자는 각 개별 풀 요청을 인증하지 않고도 여러 머신에서 설정을 표준화할 수 있습니다. 하지만 Bundler에 사용자 인증 정보를 가끔 다시 인증해야 합니다.

    Bundler CLI를 설치하려면 gem install bundler를 입력합니다.

RubyGems CLI로 인증

RubyGems CLI는 OAuth2 토큰을 사용하여 요청을 인증합니다. Artifact Registry 저장소 호출에 OAuth2 토큰을 전달하려면 먼저 토큰을 생성한 다음 요청을 할 때 저장소 주소와 함께 전달해야 합니다. 토큰의 수명은 1시간이며 매시간 새로고침해야 합니다.

풀 요청 인증

Google Cloud CLI 명령줄에서 또는 .gemrc 파일을 업데이트하여 풀 요청을 인증할 수 있습니다.

명령줄에서 풀 요청 인증

풀 요청에서 최신 버전의 gem을 인증하려면 다음 명령어를 실행하세요.

export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

특정 gem 버전을 인증하려면 gem install 명령어에 -v GEM_VERSION를 추가합니다.

각 항목의 의미는 다음과 같습니다.

  • GEM_NAME은 요청이 이루어진 보석의 이름입니다.
  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
  • REPOSITORY는 저장소 ID입니다.

.gemrc 파일에서 인증

다음을 추가하여 풀 요청 시 소스를 인증하도록 전역 또는 프로젝트별 /.gemrc 파일을 구성할 수 있습니다.

# File: ~/.gemrc

# Use the GEM_TOKEN retrieved from export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

<...>
:sources:
    - https://GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPO/
<...>

/.gemrc 파일에 정의된 소스를 사용하여 gem을 설치하려면 다음을 실행하세요.

gem install GEM_NAME

푸시 요청 인증

Google Cloud CLI 명령줄에서 또는 사용자 인증 정보 파일을 업데이트하여 푸시 요청을 인증할 수 있습니다.

명령줄에서 푸시 요청 인증

푸시 요청을 인증하려면 다음 명령어를 실행하세요.

export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

각 항목의 의미는 다음과 같습니다.

  • GEM_NAME은 요청이 이루어진 보석의 이름입니다.
  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
  • REPOSITORY는 저장소 ID입니다.

사용자 인증 정보 파일에서 푸시 요청 인증

gem 명령줄 도구는 ~/.gem/credentials 파일을 사용하여 gem을 푸시하고 가져오기 위한 API 키를 저장합니다. 푸시 요청 시 소스를 인증하도록 사용자 인증 정보 파일을 구성하려면 다음 단계를 따르세요.

  1. 다음 명령어를 실행하여 OAuth2 액세스 토큰을 생성합니다.

    gcloud auth print-access-token

    이 토큰은 Artifact Registry의 API 키 역할을 합니다.

  2. 사용자 인증 정보 파일을 업데이트합니다.

    1. ~/.gem/credentials를 열고 저장소의 행을 추가합니다. 키는 저장소 URL이고 값은 Bearer에 토큰이 추가된 값입니다.

      :rubygems_api_key: RUBYGEMS_ORG_KEY
      https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKEN
      

      각 항목의 의미는 다음과 같습니다.

      • RUBYGEMS_ORG_KEYRubyGems.org의 API 키입니다.
      • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
      • PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
      • REPOSITORY는 저장소 ID입니다.
      • OAUTH_TOKEN은 OAuth2 액세스 토큰입니다.
    2. 보석을 푸시합니다. 사용자 인증 정보 파일에 키를 이미 정의했으므로 GEM_HOST_API_KEY를 설정할 필요가 없습니다.

      gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
      

Bundler로 인증

Ruby Bundler는 하나 이상의 gem에서 애플리케이션 종속 항목을 관리합니다. Bundler를 설정하려면 다음 단계를 따르세요.

  1. 저장소의 주소를 gemfile에 source로 추가합니다.

    # Gemfile
    # <...>
    source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    
  2. bundle config를 사용하여 저장소에 인증합니다.

    export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
    export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    bundle config $HOST $GEM_TOKEN
    

각 항목의 의미는 다음과 같습니다.

  • LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT는 프로젝트 ID입니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
  • REPOSITORY는 저장소 ID입니다. 기본 Artifact Registry 저장소를 구성한 경우 이 플래그가 명령어에서 생략되었을 때 사용됩니다.

원격 저장소를 가끔 다시 인증해야 합니다. 이 경우 2단계에서와 동일한 인증 명령어를 실행합니다.

Bundler 구성에 관한 자세한 내용은 bundler.io 문서의 Gemfiles를 참고하세요.

다음 단계