Halaman ini menjelaskan cara mengonfigurasi autentikasi dengan repositori gem Ruby Artifact Registry.
Anda harus melakukan autentikasi ke Artifact Registry saat menggunakan aplikasi pihak ketiga untuk terhubung ke repositori.
Anda tidak perlu mengonfigurasi autentikasi untuk Cloud Build atau Google Cloud lingkungan runtime seperti Google Kubernetes Engine dan Cloud Run.
Sebelum memulai
- Jika repositori target tidak ada, buat repositori gem Ruby.
- Pastikan Ruby telah diinstal. Untuk petunjuk penginstalan, lihat Google Cloud tutorial untuk menyiapkan Ruby.
- Pastikan akun pengguna atau akun layanan yang Anda gunakan memiliki izin yang diperlukan untuk mengakses repositori.
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
- (Opsional) Konfigurasi default untuk perintah gcloud CLI.
Ringkasan
Ruby mendukung dua metode untuk mengautentikasi permintaan ke repositori Artifact Registry Anda:
- RubyGems CLI: Mendukung permintaan push dan pull. CLI ini tersedia dengan Ruby secara default. Saat melakukan autentikasi dengan RubyGems, Anda harus melakukan autentikasi setiap kali Anda membuat permintaan push atau pull ke repositori Anda.
CLI Bundler: Mendukung permintaan pull. Bundler menyimpan paket dan upstream di gemfile, yang memungkinkan pengguna menstandardisasi penyiapan di beberapa mesin tanpa perlu mengautentikasi setiap pull request. Namun, Anda tetap harus melakukan autentikasi ulang kredensial ke Bundler sesekali.
Untuk menginstal Bundler CLI, masukkan
gem install bundler.
Melakukan autentikasi dengan RubyGems CLI
RubyGems CLI menggunakan token OAuth2 untuk mengautentikasi permintaan. Untuk meneruskan token OAuth2 ke panggilan ke repositori Artifact Registry, Anda harus terlebih dahulu membuat token lalu meneruskannya dengan alamat repositori saat Anda membuat permintaan. Masa berlaku token adalah satu jam dan harus diperbarui setiap jam.
Mengautentikasi permintaan pull
Anda dapat mengautentikasi pull request di command line Google Cloud CLI atau dengan
memperbarui file .gemrc.
Mengautentikasi permintaan pull di command line
Untuk mengautentikasi versi gem terbaru di pull request Anda, jalankan perintah berikut:
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Untuk mengautentikasi versi gem tertentu, tambahkan
-v GEM_VERSION ke perintah gem install.
Dengan:
- GEM_NAME adalah nama gem yang permintaannya dibuat.
- LOCATION adalah lokasi regional atau multi-regional untuk repositori.
- PROJECT adalah ID project yang berisi repositori.
- REPOSITORY adalah ID repositori.
Mengautentikasi dalam file .gemrc
Anda dapat mengonfigurasi file /.gemrc global atau khusus project untuk mengautentikasi
ke sumber Anda pada pull request dengan menambahkan berikut ini:
# 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/
<...>
Untuk menginstal gem menggunakan sumber yang ditentukan dalam file /.gemrc, jalankan:
gem install GEM_NAME
Mengautentikasi permintaan push
Anda dapat mengautentikasi permintaan push di command line Google Cloud CLI atau dengan memperbarui file kredensial Anda.
Mengautentikasi permintaan push di command line
Untuk mengautentikasi permintaan push, jalankan perintah berikut:
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Dengan:
- GEM_NAME adalah nama gem yang permintaannya dibuat.
- LOCATION adalah lokasi regional atau multi-regional untuk repositori.
- PROJECT adalah ID project yang berisi repositori.
- REPOSITORY adalah ID repositori.
Mengautentikasi permintaan push dalam file kredensial
Alat command line gem menggunakan file ~/.gem/credentials untuk menyimpan kunci API
guna mengirim dan menarik gem. Untuk mengonfigurasi file kredensial Anda agar
mengautentikasi sumber Anda pada permintaan push, lakukan hal berikut:
Buat token akses OAuth2 dengan menjalankan perintah berikut:
gcloud auth print-access-tokenToken ini berfungsi sebagai kunci API Anda untuk Artifact Registry.
Perbarui file kredensial Anda:
Buka
~/.gem/credentialsdan tambahkan baris untuk repositori Anda. Kuncinya adalah URL repositori Anda, dan nilainya adalahBearer, diikuti dengan token Anda::rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKENDengan:
- RUBYGEMS_ORG_KEY adalah kunci API untuk
RubyGems.org. - LOCATION adalah lokasi regional atau multi-regional untuk repositori.
- PROJECT adalah ID project yang berisi repositori.
- REPOSITORY adalah ID repositori.
- OAUTH_TOKEN adalah token akses OAuth2 Anda.
- RUBYGEMS_ORG_KEY adalah kunci API untuk
Dorong gem Anda. Perhatikan bahwa Anda tidak perlu menetapkan
GEM_HOST_API_KEY, karena Anda telah menentukan kunci dalam file kredensial.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Melakukan autentikasi dengan Bundler
Bundler Ruby mengelola dependensi aplikasi di satu atau beberapa gem. Untuk menyiapkan Bundler, lakukan hal berikut:
Tambahkan alamat repositori Anda sebagai
sourcedi gemfile Anda:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"Lakukan autentikasi ke repositori Anda menggunakan
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
Dengan:
- LOCATION adalah lokasi regional atau multi-regional untuk repositori.
- PROJECT adalah project ID. Jika flag ini dihilangkan, project saat ini atau default akan digunakan.
- REPOSITORY adalah ID repositori. Jika Anda mengonfigurasi repositori Artifact Registry default, repositori tersebut akan digunakan jika flag ini tidak disertakan dalam perintah.
Anda harus melakukan autentikasi ulang ke repositori jarak jauh Anda dari waktu ke waktu. Dalam peristiwa ini, jalankan perintah autentikasi yang sama dari Langkah 2.
Untuk mengetahui informasi selengkapnya tentang mengonfigurasi Bundler, lihat Gemfiles dalam dokumentasi bundler.io.