En esta página se describe cómo configurar la autenticación con un repositorio de gemas de Ruby de Artifact Registry.
Debe autenticarse en Artifact Registry cuando utilice una aplicación de terceros para conectarse a un repositorio.
No es necesario configurar la autenticación para Cloud Build ni para los entornos de ejecución de Google Cloud como Google Kubernetes Engine y Cloud Run.
Antes de empezar
- Si el repositorio de destino no existe, crea un repositorio de gemas de Ruby.
- Verifica que Ruby esté instalado. Para obtener instrucciones de instalación, consulta elGoogle Cloud tutorial para configurar Ruby.
- Verifica que la cuenta de usuario o la cuenta de servicio que estás usando tenga los permisos necesarios para acceder al repositorio.
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud initSi utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- (Opcional) Configura los valores predeterminados de los comandos de gcloud CLI.
Información general
Ruby admite dos métodos para autenticar solicitudes en tu repositorio de Artifact Registry:
- CLI de RubyGems: admite solicitudes de inserción y extracción. Esta CLI está disponible de forma predeterminada con Ruby. Cuando te autentiques con RubyGems, tendrás que autenticarte cada vez que hagas una solicitud push o pull a tu repositorio.
CLI de Bundler: admite solicitudes de extracción. Bundler almacena paquetes y fuentes ascendentes en un archivo Gemfile, lo que permite a los usuarios estandarizar las configuraciones en varias máquinas sin necesidad de autenticar cada solicitud de extracción. Sin embargo, debes volver a autenticar tus credenciales en Bundler de vez en cuando.
Para instalar la CLI de Bundler, introduce
gem install bundler.
Autenticarse con la CLI de RubyGems
La CLI de RubyGems usa tokens de OAuth 2 para autenticar una solicitud. Para transferir tokens de OAuth2 a las llamadas a tus repositorios de Artifact Registry, primero debes generar el token y, a continuación, transferirlo junto con la dirección de tu repositorio cuando hagas una solicitud. Los tokens tienen una duración de una hora y deben actualizarse cada hora.
Autenticar solicitudes de extracción
Puedes autenticar una solicitud de extracción en la línea de comandos de la CLI de Google Cloud o actualizando el archivo .gemrc.
Autenticar solicitudes de extracción en la línea de comandos
Para autenticar la última versión de la gema en tu solicitud de extracción, ejecuta el siguiente comando:
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Para autenticar una versión específica de una gema, añade
-v GEM_VERSION al comando gem install.
Donde:
- GEM_NAME es el nombre del gem para el que se hace la solicitud.
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT es el ID del proyecto que contiene el repositorio.
- REPOSITORY es el ID del repositorio.
Autenticarse en un archivo .gemrc
Puedes configurar tu archivo /.gemrc global o específico del proyecto para autenticarte en tus fuentes en las solicitudes de extracción añadiendo lo siguiente:
# 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/
<...>
Para instalar un gem usando la fuente o las fuentes definidas en el archivo /.gemrc, ejecuta el siguiente comando:
gem install GEM_NAME
Autenticar solicitudes de inserción
Puedes autenticar una solicitud push en la línea de comandos de la CLI de Google Cloud o actualizando tu archivo de credenciales.
Autenticar solicitudes push en la línea de comandos
Para autenticar tu solicitud push, ejecuta el siguiente comando:
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Donde:
- GEM_NAME es el nombre del gem para el que se hace la solicitud.
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT es el ID del proyecto que contiene el repositorio.
- REPOSITORY es el ID del repositorio.
Autenticar solicitudes de inserción en un archivo de credenciales
La herramienta de línea de comandos gem usa el archivo ~/.gem/credentials para almacenar las claves de API
para enviar y extraer gemas. Para configurar el archivo de credenciales para autenticarte en tus fuentes en las solicitudes push, haz lo siguiente:
Genera un token de acceso de OAuth 2.0 ejecutando el siguiente comando:
gcloud auth print-access-tokenEste token actúa como tu clave de API para Artifact Registry.
Actualiza el archivo de credenciales:
Abre
~/.gem/credentialsy añade una línea para tu repositorio. La clave es la URL de tu repositorio y el valor esBearer, seguido de tu token::rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKENDonde:
- RUBYGEMS_ORG_KEY es la clave de API de
RubyGems.org. - LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT es el ID del proyecto que contiene el repositorio.
- REPOSITORY es el ID del repositorio.
- OAUTH_TOKEN es tu token de acceso de OAuth 2.0.
- RUBYGEMS_ORG_KEY es la clave de API de
Empuja tu gema. Ten en cuenta que no es necesario que definas
GEM_HOST_API_KEY, ya que has definido la clave en el archivo de credenciales.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Autenticarse con Bundler
Bundler de Ruby gestiona las dependencias de las aplicaciones en una o varias gemas. Para configurar Bundler, sigue estos pasos:
Añade la dirección de tu repositorio como
sourceen tu archivo gemfile:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"Autentícate en tu repositorio con
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
Donde:
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT es el ID del proyecto. Si se omite esta marca, se usará el proyecto predeterminado o el actual.
- REPOSITORY es el ID del repositorio. Si has configurado un repositorio predeterminado de Artifact Registry, se usará cuando se omita esta marca en el comando.
De vez en cuando, tendrás que volver a autenticarte en tu repositorio remoto. En este caso, ejecuta el mismo comando de autenticación del paso 2.
Para obtener más información sobre cómo configurar Bundler, consulta Gemfiles en la documentación de bundler.io.
Siguientes pasos
- Configurar el acceso a los repositorios
- Más información sobre cómo gestionar repositorios
- Información sobre cómo gestionar paquetes