Artifact Registry에 Ruby gem 저장
이 빠른 시작에서는 비공개 Artifact Registry Ruby 저장소를 설정한 다음 패키지(gem이라고도 함)를 해당 저장소에 업로드하는 방법을 보여줍니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM으로 이동 - 프로젝트를 선택합니다.
- 액세스 권한 부여를 클릭합니다.
-
새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.
- 역할 선택 목록에서 역할을 선택합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM으로 이동 - 프로젝트를 선택합니다.
- 액세스 권한 부여를 클릭합니다.
-
새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.
- 역할 선택 목록에서 역할을 선택합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
-
Google Cloud 콘솔로 이동합니다.
Google Cloud 콘솔 툴바에서 Cloud Shell 활성화를 클릭합니다.
- RubyGems CLI: 푸시 및 풀 요청을 지원합니다. 이 CLI는 기본적으로 Ruby와 함께 제공됩니다. RubyGems로 인증할 때는 저장소에 푸시 또는 풀 요청을 할 때마다 인증해야 합니다.
Bundler CLI: pull 요청을 지원합니다. Bundler는 패키지와 업스트림을 gemfile에 저장하므로 사용자는 각 개별 풀 요청을 인증하지 않고도 여러 머신에서 설정을 표준화할 수 있습니다. 하지만 Bundler에 사용자 인증 정보를 가끔 다시 인증해야 합니다.
Bundler CLI를 설치하려면
gem install bundler를 입력합니다.- GEM_NAME은 요청이 이루어진 보석의 이름입니다.
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
- GEM_NAME은 요청이 이루어진 보석의 이름입니다.
- LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
다음 명령어를 실행하여 OAuth2 액세스 토큰을 생성합니다.
gcloud auth print-access-token이 토큰은 Artifact Registry의 API 키 역할을 합니다.
사용자 인증 정보 파일을 업데이트합니다.
~/.gem/credentials를 열고 저장소의 행을 추가합니다. 키는 저장소 URL이고 값은Bearer에 토큰이 추가된 값입니다.:rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKEN각 항목의 의미는 다음과 같습니다.
- RUBYGEMS_ORG_KEY은
RubyGems.org의 API 키입니다. - LOCATION은 저장소의 리전 또는 멀티 리전 위치입니다.
- PROJECT는 저장소가 포함된 프로젝트의 ID입니다.
- REPOSITORY는 저장소 ID입니다.
- OAUTH_TOKEN은 OAuth2 액세스 토큰입니다.
- RUBYGEMS_ORG_KEY은
보석을 푸시합니다. 사용자 인증 정보 파일에 키를 이미 정의했으므로
GEM_HOST_API_KEY를 설정할 필요가 없습니다.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
저장소의 주소를 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 저장소를 구성한 경우 이 플래그가 명령어에서 생략되었을 때 사용됩니다.
다음 명령어를 실행하여 현재 프로젝트의
us-west1위치에quickstart-ruby-repo라는 새 Ruby gem 저장소를 만듭니다.gcloud artifacts repositories create quickstart-ruby-repo \ --repository-format=ruby \ --location=us-west1 \ --description="Ruby gem repository"다음 명령어를 실행하여 저장소가 생성되었는지 확인합니다.
gcloud artifacts repositories listgcloud명령어를 단순화하려면 기본 저장소를quickstart-ruby-repo로 설정하고 기본 위치를us-west1로 설정합니다. 이 값을 설정하면 저장소나 위치가 필요한gcloud명령어에 값을 지정할 필요가 없습니다.저장소를 설정하려면 다음 명령어를 실행하세요.
gcloud config set artifacts/repository quickstart-ruby-repo위치를 설정하려면 다음 명령어를 실행하세요.
gcloud config set artifacts/location us-west1이러한 명령어에 대한 자세한 내용은 gcloud config set 문서를 참조하세요.
- GEM_NAME은 저장소에 푸시할 gem의 이름입니다.
- PROJECT는 프로젝트 ID입니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
- GEM_NAME은 저장소에 설치할 gem의 이름입니다.
- PROJECT는 프로젝트 ID입니다. 이 플래그를 생략하면 현재 프로젝트 또는 기본 프로젝트가 사용됩니다.
quickstart-ruby-repo저장소를 삭제하려면 다음 명령어를 실행합니다.gcloud artifacts repositories delete quickstart-ruby-repo활성
gcloud구성에 지정한 기본 저장소 및 위치 설정을 삭제하려면 다음 명령어를 실행합니다.gcloud config unset artifacts/repository gcloud config unset artifacts/location- 인증 구성 자세히 알아보기
- 저장소 관리 알아보기
- 패키지 관리 알아보기
- DevOps 관련 리소스를 읽고 연구 프로그램을 살펴보세요.
Cloud Shell 실행
이 빠른 시작에서는Google Cloud에서 호스팅되는 리소스를 관리하기 위한 셸 환경인 Cloud Shell을 사용합니다.
Cloud Shell에는 Google Cloud CLI 및 Ruby가 사전 설치되어 있습니다. gcloud CLI는 Google Cloud의 기본 명령줄 인터페이스를 제공합니다.
Cloud Shell 시작:
Console 하단의 프레임에서 Cloud Shell 세션이 열립니다.
이 셸을 사용하여 gcloud 명령어를 실행합니다.
인증 구성
Ruby는 Artifact Registry 저장소에 대한 요청을 인증하는 두 가지 방법을 지원합니다.
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를 추가합니다.
각 항목의 의미는 다음과 같습니다.
.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 명령줄 도구는 ~/.gem/credentials 파일을 사용하여 gem을 푸시하고 가져오기 위한 API 키를 저장합니다. 푸시 요청 시 소스를 인증하도록 사용자 인증 정보 파일을 구성하려면 다음 단계를 따르세요.
Bundler로 인증
Ruby Bundler는 하나 이상의 gem에서 애플리케이션 종속 항목을 관리합니다. Bundler를 설정하려면 다음 단계를 따르세요.
각 항목의 의미는 다음과 같습니다.
원격 저장소를 가끔 다시 인증해야 합니다. 이 경우 2단계에서와 동일한 인증 명령어를 실행합니다.
Bundler 구성에 관한 자세한 내용은 bundler.io 문서의 Gemfiles를 참고하세요.
인증 방법에 대한 자세한 내용은 Ruby gem 저장소용 Artifact Registry에 대한 인증 구성을 참고하세요.
저장소 만들기
gem의 저장소를 만듭니다.
Gem 다운로드
Ruby 프로젝트를 빌드할 때 배포 파일은 Ruby 프로젝트의 lib 하위 디렉터리에 저장됩니다. 이 빠른 시작을 간소화하기 위해 디렉터리를 만든 다음 해당 디렉터리에 gem을 다운로드합니다.
디렉터리를 만들려면 다음 명령어를 실행합니다.
mkdir ruby-quickstart
mkdir ruby-quickstart/lib
cd ruby-quickstart/lib
그런 다음 gem을 다운로드합니다. 자체 Gem을 사용하거나 rubygems.org의 인기 Gem 페이지에서 샘플 Gem을 다운로드할 수 있습니다. rubygems.org에서 gem을 다운로드하려면 다음 명령어를 실행합니다.
gem fetch GEM_NAME
이제 ruby_quickstart/lib 디렉터리에 GEM_NAME이라는 gem이 있습니다. 다음 섹션에서는 RubyGems CLI를 사용하여 gem을 저장소에 푸시합니다.
저장소로 gem 푸시
Gem을 저장소에 푸시하려면 다음 명령어를 실행합니다.
gem push GEM_NAME --host https://us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
각 항목의 의미는 다음과 같습니다.
저장소에서 gem 보기
gem이 추가되었는지 확인하려면 ruby-quickstart 저장소의 패키지를 나열합니다.
다음 명령어를 실행합니다.
gcloud artifacts packages list --repository=ruby-quickstart
gem의 버전을 보려면 다음 명령어를 실행합니다.
gcloud artifacts versions list --package=GEM_NAME
gem 설치
Artifact Registry 저장소에 푸시한 gem을 설치하려면 다음 명령어를 실행합니다.
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
각 항목의 의미는 다음과 같습니다.
문제 해결
자세한 내용은 Ruby gem 문제 해결을 참고하세요.
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
저장소를 삭제하기 전에, 보관할 gem을 다른 위치에서 사용할 수 있는지 확인합니다.