Gestionar gems de Ruby

En esta página se describe cómo añadir, ver y eliminar gemas de Ruby y versiones de gemas.

Antes de empezar

  1. Instala e inicializa la CLI de Google Cloud.

    Para ejecutar comandos en repositorios de Ruby, se necesita la versión 354.0.0 o una posterior de la CLI de Google Cloud. Puedes consultar la versión con el comando:

    gcloud version
    
  2. Si el repositorio de destino no existe, crea un repositorio de paquetes Ruby.

  3. Verifica que Ruby esté instalado. Para obtener instrucciones de instalación, consulta elGoogle Cloud tutorial para configurar Ruby.

  4. (Opcional) Configura los valores predeterminados de los comandos de gcloud.

Roles obligatorios

Para obtener los permisos que necesitas para gestionar gemas, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el repositorio:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Añadir gemas

Los paquetes de Ruby se denominan gems. Cada gem contiene un nombre, una versión y una plataforma. Un proyecto de Ruby también debe contener un gemfile, que es un archivo de configuración que especifica las dependencias de gem necesarias.

Modos de repositorio: estándar

Cuando compilas un proyecto de Ruby, los archivos de distribución se guardan en un subdirectorio lib de tu proyecto. Después, puedes usar RubyGems para subir gemas a un repositorio estándar.

Para añadir un gem a tu repositorio de Artifact Registry, sigue estos pasos:

gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Donde:

  • GEM_NAME es el nombre del gem que se insertará en tu repositorio.
  • LOCATION es la ubicación de tu repositorio.
  • PROJECT es el ID del proyecto. Si se omite esta marca, se usará el proyecto predeterminado o el actual.
  • REPOSITORY es el nombre de tu repositorio en Artifact Registry.

Ver Gems y versiones

Modos de repositorio: estándar

Para ver los paquetes y las versiones de los paquetes mediante la consola Google Cloud o gcloud, sigue estos pasos:

Consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, haga clic en el repositorio correspondiente.

    En la página Paquetes se muestran los paquetes del repositorio.

  3. Haz clic en un paquete para ver sus versiones.

gcloud

Para enumerar los paquetes de un repositorio, ejecuta el siguiente comando:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Haz los cambios siguientes:

  • REPOSITORY es el nombre del repositorio. Si has configurado un repositorio predeterminado, puedes omitir esta marca para usarlo.
  • LOCATION es la ubicación regional o multirregional del repositorio. Si has configurado una ubicación predeterminada, puedes omitir esta marca para usarla.

Para ver las versiones de un paquete, ejecuta el siguiente comando:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Haz los cambios siguientes:

  • PACKAGE es el ID del paquete o el identificador completo del paquete.
  • REPOSITORY es el nombre del repositorio. Si has configurado un repositorio predeterminado, puedes omitir esta marca para usarlo.
  • LOCATION es la ubicación regional o multirregional del repositorio. Usa esta marca para ver los repositorios de una ubicación específica. Si has configurado una ubicación predeterminada, puedes omitir esta marca para usarla.

En el caso de los repositorios remotos, la lista devuelta debe incluir todas las dependencias directas y transitivas.

Mostrar archivos

Modos de repositorio: estándar

Puedes enumerar los archivos de un repositorio, los archivos de todas las versiones de un paquete especificado o los archivos de una versión concreta de un paquete.

En todos los comandos siguientes, puedes definir un número máximo de archivos que se devuelvan añadiendo la marca --limit al comando.

Para enumerar todos los archivos del proyecto, el repositorio y la ubicación predeterminados cuando se configuran los valores predeterminados, haz lo siguiente:

gcloud artifacts files list

Para enumerar los archivos de un proyecto, un repositorio y una ubicación específicos, ejecuta el siguiente comando:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Para enumerar los archivos de todas las versiones de un paquete específico, sigue estos pasos:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Para enumerar los archivos de una versión específica de un paquete, sigue estos pasos:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Sustituye los siguientes valores:

  • LOCATION: la ubicación regional o multirregional del repositorio.
  • PROJECT: tu Google Cloud ID de proyecto. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con ámbito de dominio.
  • REPOSITORY: el nombre del repositorio en el que se almacena la imagen.
  • PACKAGE: el nombre del paquete.
  • VERSION: la versión del paquete.

Ejemplos

Tenga en cuenta la siguiente información del paquete:

  • Proyecto: my-project
  • Repositorio: my-repo
  • Ubicación del repositorio: us-west1
  • Paquete: my-app

El siguiente comando muestra todos los archivos del repositorio my-repo en la ubicación us-west1 del proyecto predeterminado:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
El siguiente comando muestra los archivos de la versión 1.0 del paquete.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Instalar gemas

Modos de repositorio: estándar

Para instalar la versión estable más reciente de un paquete, sigue estos pasos:

gem install GEM_NAME

En los repositorios estándar, los paquetes se descargan directamente del repositorio.

En el caso de un repositorio remoto, se descarga una copia en caché del paquete y sus dependencias. Si no existe una copia almacenada en caché, el repositorio remoto descarga el paquete de la fuente upstream y lo almacena en caché antes de proporcionártelo. Para comprobar que el repositorio remoto ha obtenido los paquetes de la fuente de origen, consulta la lista de paquetes del repositorio.

En el caso de un repositorio virtual, Artifact Registry busca el paquete solicitado en los repositorios upstream.

  • Los repositorios remotos upstream descargarán y almacenarán en caché el paquete solicitado si no existe una copia en caché. Los repositorios virtuales solo sirven los paquetes solicitados, no los almacenan.
  • Si solicita una versión que está disponible en más de un repositorio upstream, Artifact Registry elige un repositorio upstream que se va a usar en función de los ajustes de prioridad configurados para el repositorio virtual.

Por ejemplo, supongamos que tiene un repositorio virtual con los siguientes ajustes de prioridad para los repositorios upstream:

  • main-repo: prioridad definida como 100
  • secondary-repo1: prioridad establecida en 80.
  • secondary-repo2: prioridad establecida en 80.
  • test-repo: prioridad establecida en 20.

main-repo tiene el valor de prioridad más alto, por lo que el repositorio virtual siempre lo busca primero.

Tanto secondary-repo1 como secondary-repo2 tienen la prioridad 80. Si un paquete solicitado no está disponible en main-repo, Artifact Registry buscará en estos repositorios. Como ambos tienen el mismo valor de prioridad, Artifact Registry puede elegir servir un paquete de cualquiera de los dos repositorios si la versión está disponible en ambos.

test-repo tiene el valor de prioridad más bajo y servirá un artefacto almacenado si ninguno de los otros repositorios upstream lo tiene.

Información adicional

Cuando insertas o extraes gems de un repositorio de Artifact Registry, si el gem solicitado o sus dependencias no se encuentran en el repositorio especificado, tu cliente de gem usa cualquier otra fuente definida en el archivo gemfile de tu gem. Si solo quieres obtener e instalar directamente desde Artifact Registry, ejecuta el siguiente comando para quitar una fuente que no sea de Artifact Registry de tu archivo Gemfile:

gem sources --remove SOURCE

Para volver a añadir rubygems.org como fuente, sigue estos pasos:

gem sources --add SOURCE

Donde SOURCE es la dirección de la fuente, como https://rubygems.org.

Eliminar paquetes y versiones

Modos de repositorio: estándar

Puedes eliminar un paquete y todas sus versiones, o bien eliminar una versión específica.

  • Una vez que elimines un paquete, no podrás deshacer la acción.
  • En el caso de los repositorios remotos, solo se elimina la copia almacenada en caché del paquete. La fuente upstream no se ve afectada. Si elimina un paquete almacenado en caché, Artifact Registry lo descargará y lo almacenará en caché de nuevo la próxima vez que el repositorio reciba una solicitud de la misma versión del paquete.

Antes de eliminar un paquete o una versión de un paquete, comprueba que has comunicado o resuelto las dependencias importantes que tenga.

Para eliminar un paquete, sigue estos pasos:

Consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, haga clic en el repositorio correspondiente.

    En la página Paquetes se muestran los paquetes del repositorio.

  3. Selecciona el paquete que quieras eliminar.

  4. Haz clic en ELIMINAR.

  5. En el cuadro de diálogo de confirmación, haz clic en ELIMINAR.

gcloud

Ejecuta el siguiente comando:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Haz los cambios siguientes:

  • PACKAGE es el nombre del paquete en el repositorio.
  • REPOSITORY es el nombre del repositorio. Si has configurado un repositorio predeterminado, puedes omitir esta marca para usar el predeterminado.
  • LOCATION es la ubicación regional o multirregional del repositorio. Usa esta marca para ver los repositorios de una ubicación específica. Si has configurado una ubicación predeterminada, puedes omitir esta marca para usarla.

La marca --async hace que el comando se devuelva inmediatamente, sin esperar a que se complete la operación en curso.

Para eliminar versiones de un paquete, sigue estos pasos:

Consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, haga clic en el repositorio correspondiente.

    En la página Paquetes se muestran los paquetes del repositorio.

  3. Haz clic en un paquete para ver sus versiones.

  4. Selecciona las versiones que quieras eliminar.

  5. Haz clic en ELIMINAR.

  6. En el cuadro de diálogo de confirmación, haz clic en ELIMINAR.

gcloud

Ejecuta el siguiente comando:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Haz los cambios siguientes:

  • VERSION es el nombre de la versión que se va a eliminar.
  • PACKAGE es el nombre del paquete en el repositorio.
  • REPOSITORY es el nombre del repositorio. Si has configurado un repositorio predeterminado, puedes omitir esta marca para usar el predeterminado.
  • LOCATION es la ubicación regional o multirregional del repositorio. Usa esta marca para ver los repositorios de una ubicación específica. Si has configurado una ubicación predeterminada, puedes omitir esta marca para usarla.

La marca --async hace que el comando se devuelva inmediatamente, sin esperar a que se complete la operación en curso.

Limitaciones

  • Artifact Registry no admite la adición de repositorios como fuentes mediante el comando gem sources -add. Sin embargo, puedes añadir fuentes manualmente a tu archivo .gemrc o pasar la marca --source directamente en tu comando gem.

  • Artifact Registry no admite la extracción de gems mediante gem fetch.

Siguientes pasos