이 페이지에서는 Artifact Registry Ruby gem 저장소로 인증을 구성하는 방법을 설명합니다.
제3자 애플리케이션을 사용하여 저장소에 연결할 때는 Artifact Registry에 인증해야 합니다.
Cloud Build 또는 Google Kubernetes Engine 및 Cloud Run과 같은 런타임 환경에 대한 인증을 구성할 필요는 없습니다. Google Cloud
시작하기 전에
- 대상 저장소가 없으면 Ruby gem 저장소를 만듭니다.
- Ruby가 설치되어 있는지 확인합니다. 설치 안내는Google Cloud Ruby 설정 튜토리얼을 참고하세요.
- 사용 중인 사용자 계정이나 서비스 계정에 저장소에 액세스하는 데 필요한 권한이 있는지 확인합니다.
-
Google Cloud CLI를 설치한 후 제휴 ID로 gcloud CLI에 로그인합니다. 로그인한 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.
gcloud init - (선택사항) cloud CLI 명령어의 기본값을 구성합니다.
개요
Ruby는 Artifact Registry 저장소에 대한 요청을 인증하는 두 가지 방법을 지원합니다.
- RubyGems CLI: 푸시 및 풀 요청을 지원합니다. 이 CLI는 기본적으로 Ruby와 함께 제공됩니다. RubyGems로 인증할 때는 저장소에 푸시 또는 풀 요청을 할 때마다 인증해야 합니다.
Bundler CLI: pull 요청을 지원합니다. Bundler는 gemfile에 패키지와 업스트림을 저장하므로 사용자는 각 개별 풀 요청을 인증할 필요 없이 여러 머신에서 설정을 표준화할 수 있습니다. 하지만 Bundler에 사용자 인증 정보를 가끔 다시 인증해야 합니다.
Bundler CLI를 설치하려면
gem install bundler를 입력합니다.
인증용 토큰 생성
Artifact Registry에서 패키지를 인증하려면 먼저 인증 토큰을 생성해야 합니다. 그런 다음 패키지에서 Artifact Registry로 요청할 때 이 토큰을 사용할 수 있습니다.
Google Cloud외부에서 Google Cloud 또는 oauth2l 토큰을 사용하여 oauth2 액세스 토큰을 생성할 수 있습니다.
액세스 토큰은 60분 동안 유효합니다. 저장소와 상호작용하는 명령어를 실행하기 직전에 액세스 토큰을 생성합니다. 액세스 토큰이 만료된 경우 새 액세스 토큰을 생성해야 합니다.
gcloud를 사용하여 토큰 생성
Google Cloud를 사용하여 oauth2 액세스 토큰을 생성하려면 다음 명령어를 실행합니다.
export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
이제 Ruby 패키지에서 Artifact Registry로 요청할 때 ACCESS_TOKEN를 참조할 수 있습니다.
gcloud를 사용하지 않고 토큰 생성
oauth2l CLI만 사용하여 액세스 토큰을 생성하려면 다음 단계를 따르세요.
다음 명령어를 실행하여 최신 버전의
oauth2l를 설치합니다.go install github.com/google/oauth2l@latest다음 명령어를 실행합니다.
export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"Google Cloud 는 SHA256 해시 토큰을 생성하고
ACCESS_TOKEN변수에 저장합니다. 이제 Ruby 패키지에서 Artifact Registry로 요청할 때ACCESS_TOKEN를 참조할 수 있습니다.
RubyGems CLI로 인증
RubyGems CLI는 OAuth2 토큰을 사용하여 요청을 인증합니다. Artifact Registry 저장소 호출에 OAuth2 토큰을 전달하려면 요청 시 저장소 주소와 함께 OAuth2 토큰을 전달해야 합니다. 토큰의 수명은 1시간이며 매시간 새로고침해야 합니다.
풀 요청 인증
Google Cloud CLI 명령줄에서 또는 .gemrc 파일을 업데이트하여 풀 요청을 인증할 수 있습니다.
명령줄에서 풀 요청 인증
풀 요청에서 최신 버전의 gem을 인증하려면 다음 명령어를 실행하세요.
gem install GEM_NAME --source https://$ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
특정 gem 버전을 인증하려면 gem install 명령어에 -v GEM_VERSION를 추가합니다.
각 항목의 의미는 다음과 같습니다.
- GEM_NAME은 요청이 이루어진 Gem의 이름입니다.
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
.gemrc 파일에서 인증
다음을 추가하여 풀 요청 시 소스를 인증하도록 전역 또는 프로젝트별 /.gemrc 파일을 구성할 수 있습니다.
# File: ~/.gemrc
# Use the ACCESS_TOKEN retrieved from export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
<...>
:sources:
- https://ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/
<...>
각 항목의 의미는 다음과 같습니다.
- ACCESS_TOKEN은 OAuth2 액세스 토큰입니다.
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
/.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은 요청이 이루어진 Gem의 이름입니다.
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
사용자 인증 정보 파일에서 푸시 요청 인증
gem 명령줄 도구는 ~/.gem/credentials 파일을 사용하여 gem을 푸시하고 풀하는 API 키를 저장합니다. 푸시 요청 시 소스를 인증하도록 사용자 인증 정보 파일을 구성하려면 다음 단계를 따르세요.
사용자 인증 정보 파일을 업데이트합니다.
~/.gem/credentials을 열고 저장소의 행을 추가합니다. 키는 저장소 URL이고 값은Bearer에 이어 토큰입니다.:rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer ACCESS_TOKEN각 항목의 의미는 다음과 같습니다.
- RUBYGEMS_ORG_KEY는
RubyGems.org의 API 키입니다. - LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
- ACCESS_TOKEN은 OAuth2 액세스 토큰입니다.
- RUBYGEMS_ORG_KEY는
보석을 푸시합니다. 사용자 인증 정보 파일에 키를 이미 정의했으므로
GEM_HOST_API_KEY를 설정할 필요가 없습니다.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Bundler로 인증
Ruby Bundler는 하나 이상의 gem에서 애플리케이션 종속 항목을 관리합니다. Bundler를 설정하려면 다음 단계를 따르세요.
저장소의 주소를 gemfile에
source로 추가합니다.# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"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를 참고하세요.