En esta página, se describe cómo configurar la autenticación con un repositorio de gemas de Ruby de Artifact Registry.
Debes autenticarte en Artifact Registry cuando uses una aplicación de terceros para conectarte a un repositorio.
No es necesario que configures 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 comenzar
- 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 instructivo para configurar Ruby.
- Verifica que la cuenta de usuario o la cuenta de servicio que usas tenga los permisos necesarios para acceder al repositorio.
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad (IdP) externo, primero debes acceder a gcloud CLI con tu identidad federada.
- (Opcional) Configura valores predeterminados para gcloud CLI de gcloud.
Descripción general
Ruby admite dos métodos para autenticar solicitudes a tu repositorio de Artifact Registry:
- CLI de RubyGems: Admite solicitudes de extracción y envío. Esta CLI está disponible con Ruby de forma predeterminada. Cuando te autenticas con RubyGems, debes hacerlo cada vez que realices una solicitud de extracción o envío a tu repositorio.
CLI de Bundler: Admite solicitudes de extracción. Bundler almacena paquetes y transmisiones ascendentes en un archivo gemfile, lo que permite a los usuarios estandarizar la configuración en varias máquinas sin necesidad de autenticar cada solicitud de extracción individual. Sin embargo, de vez en cuando, debes volver a autenticar tus credenciales en Bundler.
Para instalar la CLI de Bundler, ingresa
gem install bundler.
Autentícate con la CLI de RubyGems
La CLI de RubyGems usa tokens de OAuth2 para autenticar una solicitud. Para pasar tokens de OAuth2 a las llamadas a tus repositorios de Artifact Registry, primero debes generar el token y, luego, pasarlo con la dirección de tu repositorio cuando realices una solicitud. Los tokens tienen una vida útil de una hora y se deben actualizar cada hora.
Autentica solicitudes de extracción
Puedes autenticar una solicitud de extracción en la línea de comandos de Google Cloud CLI o actualizar tu archivo .gemrc.
Autentica solicitudes de extracción en la línea de comandos
Para autenticarte en la versión más reciente de la gem 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 la gem, agrega -v GEM_VERSION al comando gem install.
Aquí:
- GEM_NAME es el nombre de la gem para la que se realiza 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.
Autentícate 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 agregando 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 una gem con la fuente o las fuentes definidas en tu archivo /.gemrc, ejecuta el siguiente comando:
gem install GEM_NAME
Autentica solicitudes push
Puedes autenticar una solicitud de envío en la línea de comandos de Google Cloud CLI o actualizar tu archivo de credenciales.
Autentica solicitudes push en la línea de comandos
Para autenticar tu solicitud de envío, 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
Aquí:
- GEM_NAME es el nombre de la gem para la que se realiza 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.
Autentica solicitudes push en un archivo de credenciales
La herramienta de línea de comandos de gem usa el archivo ~/.gem/credentials para almacenar las claves de API para enviar y extraer gems. Para configurar tu archivo de credenciales de modo que se autentique en tus fuentes en las solicitudes de envío, haz lo siguiente:
Ejecuta el siguiente comando para generar un token de acceso de OAuth2:
gcloud auth print-access-tokenEste token actúa como tu clave de API para Artifact Registry.
Actualiza tu archivo de credenciales:
Abre
~/.gem/credentialsy agrega 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_TOKENAquí:
- RUBYGEMS_ORG_KEY es la clave de API para
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 OAuth2.
- RUBYGEMS_ORG_KEY es la clave de API para
Empuja tu Gem. Ten en cuenta que no es necesario que establezcas
GEM_HOST_API_KEY, ya que definiste la clave en tu archivo de credenciales.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Autenticación con Bundler
El Bundler de Ruby administra las dependencias de la aplicación en una o más gemas. Para configurar Bundler, haz lo siguiente:
Agrega la dirección de tu repositorio como un
sourceen tu 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
Aquí:
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto predeterminado o actual.
- REPOSITORY es el ID del repositorio. Si configuraste un repositorio predeterminado de Artifact Registry, se usa cuando se omite esta marca del comando.
Deberás volver a autenticarte en tu repositorio remoto de vez en cuando. 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.
¿Qué sigue?
- Configura el acceso a los repositorios
- Obtén más información sobre cómo administrar repositorios
- Obtén más información sobre cómo administrar paquetes