Mengonfigurasi autentikasi ke Artifact Registry untuk repositori gem Ruby

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

  1. Jika repositori target tidak ada, buat repositori gem Ruby.
  2. Pastikan Ruby telah diinstal. Untuk petunjuk penginstalan, lihat Google Cloud tutorial untuk menyiapkan Ruby.
  3. Pastikan akun pengguna atau akun layanan yang Anda gunakan memiliki izin yang diperlukan untuk mengakses repositori.
  4. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

    gcloud init

    Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  5. (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:

  1. Buat token akses OAuth2 dengan menjalankan perintah berikut:

    gcloud auth print-access-token

    Token ini berfungsi sebagai kunci API Anda untuk Artifact Registry.

  2. Perbarui file kredensial Anda:

    1. Buka ~/.gem/credentials dan tambahkan baris untuk repositori Anda. Kuncinya adalah URL repositori Anda, dan nilainya adalah Bearer, diikuti dengan token Anda:

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

      Dengan:

      • 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.
    2. 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:

  1. Tambahkan alamat repositori Anda sebagai source di gemfile Anda:

    # Gemfile
    # <...>
    source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    
  2. 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.

Langkah berikutnya