Prerrequisitos
-
Debes contar con RubyGems 2.4.1 o superior. Para encontrar tu versión de RubyGems:
gem --version
-
Debes tener Bundler 1.6.4 o superiores. Para encontrar tu versión Bundler:
$ bundle --version Bundler version 1.13.7
Autenticar a GitHub Packages
GitHub Packages solo admite la autenticación mediante un personal access token (classic). Para obtener más información, vea «Administración de tokens de acceso personal».
Necesitas un token de acceso para publicar, instalar y eliminar paquetes privados, internos y públicos.
Puedes usar un personal access token (classic) para autenticarte en GitHub Packages o en la API de GitHub. Cuando creas un personal access token (classic), puedes asignar al token diferentes ámbitos en función de tus necesidades. Para más información sobre los ámbitos relacionados con paquetes para un personal access token (classic), consulta "Acerca de los permisos para los Paquetes de GitHub".
Para autenticarte en un registro del GitHub Packages dentro de un flujo de trabajo de GitHub Actions, puedes utilizar:
GITHUB_TOKEN
para publicar los paquetes asociados con el repositorio del flujo de trabajo.- Un personal access token (classic) con, al menos, ámbito de
read:packages
para instalar los paquetes asociados con otros repositorios privados (a los cuales no puede accederGITHUB_TOKEN
).
Autenticación en un flujo de trabajo de GitHub Actions
Este registro admite permisos granulares. Para los registros que admiten permisos detallados, si en el flujo de trabajo de GitHub Actions se usa un personal access token para autenticarse en un registro, se recomienda encarecidamente actualizar el flujo de trabajo para usar GITHUB_TOKEN
. Para obtener orientación sobre la actualización de tus flujos de trabajo que se autentican en un registro con un personal access token, consulta "Publicar e instalar un paquete con GitHub Actions".
Nota: La capacidad de los flujos de trabajo de GitHub Actions para eliminar y restaurar paquetes mediante la API de REST está actualmente en versión preliminar pública y está sujeta a cambios.
Puede usar un GITHUB_TOKEN
en un flujo de trabajo de GitHub Actions para eliminar o restaurar un paquete mediante la API de REST, si el token tiene el permiso admin
para el paquete. A los repositorios que publican paquetes mediante un flujo de trabajo y a los repositorios que se han conectado explícitamente a los paquetes se les concede automáticamente el permiso admin
para los paquetes del repositorio.
Para obtener más información sobre GITHUB_TOKEN
, consulta "Autenticación automática de tokens". Para obtener más información sobre los procedimientos recomendados al usar un registro en acciones, consulta "Fortalecimiento de seguridad para GitHub Actions".
También puedes optar por conceder permisos de acceso a paquetes de forma independiente para GitHub Codespaces y GitHub Actions. Para obtener más información, vea «Configurar la visibilidad y el control de accesos de un paquete» y «Configurar la visibilidad y el control de accesos de un paquete».
Autenticación con un personal access token
Debes utilizar un personal access token (classic) con los ámbitos adecuados para publicar e instalar paquetes en GitHub Packages. Para obtener más información, vea «Introducción a los paquetes de GitHub».
Si quieres publicar e instalar gems, puedes configurar RubyGems o Bundler para autenticarse en GitHub Packages con tu personal access token.
Para publicar gems nuevos, debes autenticarte en GitHub Packages con RubyGems editando el archivo ~/.gem/credentials para incluir tu personal access token (classic). Cree un nuevo archivo ~/.gem/credentials si este archivo no existe.
Por ejemplo, puedes crear o editar un archivo ~/.gem/credentials para incluir lo siguiente, reemplazando TOKEN por tu personal access token.
---
:github: Bearer TOKEN
Para instalar gems, debes autenticarte en GitHub Packages actualizando tus orígenes de gems para incluir https://USERNAME:TOKEN@rubygems.pkg.github.com/NAMESPACE/
. Debes reemplazar:
USERNAME
por su nombre de usuario de GitHub.TOKEN
por tu personal access token (classic).NAMESPACE
por el nombre de la cuenta personal u organización a la que se limita la gema.
Si quieres que el paquete esté disponible globalmente, puedes ejecutar el siguiente comando para agregar el registro como origen.
gem sources --add https://USERNAME:TOKEN@rubygems.pkg.github.com/NAMESPACE/
Para la autenticación con Bundler, configúralo para que use tu personal access token (classic), reemplazando NOMBRE_DE_USUARIO por tu nombre de usuario de GitHub, TOKEN por tu personal access token y ESPACIO_DE_NOMBRES por el nombre de la cuenta personal u organización a la que se limita la gema.
bundle config https://rubygems.pkg.github.com/NAMESPACE USERNAME:TOKEN
Publicación de un paquete
Cuando publicas un paquete por primera vez, la visibilidad predeterminada es privada. Para cambiar la visibilidad o establecer permisos de acceso, consulta "Configurar la visibilidad y el control de accesos de un paquete". Para más información sobre cómo crear la gema, consulta "Creación de una gema propia" en la documentación de RubyGems.
Nota: Si publicas un paquete vinculado a un repositorio, el paquete hereda automáticamente los permisos de acceso del repositorio vinculado y los flujos de trabajo de GitHub Actions en el repositorio vinculado automáticamente obtienen acceso al paquete, a menos que la organización haya deshabilitado la herencia automática de los permisos de acceso. Para obtener más información, vea «Configurar la visibilidad y el control de accesos de un paquete».
-
Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".
-
Compile el paquete a partir de gemspec para crear el paquete .gem. Reemplace
GEM_NAME
por el nombre de su gem.gem build GEM_NAME.gemspec
-
Publica un paquete en GitHub Packages, y reemplaza
NAMESPACE
por el nombre de la cuenta personal u organización a la que se limita el paquete yGEM_NAME
por el nombre del paquete de gemas.Nota: El tamaño máximo sin comprimir del
metadata.gz
archivo de una gema debe ser menor que 2 MB. Se producirá un error en las solicitudes para insertar gemas que superen ese límite.$ gem push --key github \ --host https://rubygems.pkg.github.com/NAMESPACE \ GEM_NAME-0.0.1.gem
Conexión de un paquete a un repositorio
En el registro de RubyGems se almacenan paquetes de la cuenta personal o de la organización, y permite asociar los paquetes a un repositorio. Puedes elegir si quieres heredar permisos desde un repositorio o si quieres configurar permisos granulares independientemente de un repositorio.
Puedes asegurarte de que las gemas se vincularán a un repositorio tan pronto como se publiquen si incluyes la dirección URL del repositorio GitHub en el campo github_repo
de gem.metadata
. Puedes vincular varias gemas al mismo repositorio.
gem.metadata = { "github_repo" => "ssh://github.com/OWNER/REPOSITORY" }
Para obtener más información sobre la vinculación de un paquete publicado con un repositorio, consulte "Conectar un repositorio a un paquete".
Instalación de un paquete
Puede usar gemas de GitHub Packages de forma muy similar a las gemas de rubygems.org. Debe autenticarse en GitHub Packages agregando su usuario u organización de GitHub como origen en el archivo ~/.gemrc o mediante Bundler, editando el archivo Gemfile.
-
Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".
-
Para Bundler, agregue su usuario u organización de GitHub como origen en el archivo Gemfile para extraer gemas de este nuevo origen. Por ejemplo, puedes agregar un nuevo bloque
source
al archivo Gemfile que use GitHub Packages solo para los paquetes que especifiques, y reemplazarGEM_NAME
por el paquete que quieras instalar desde GitHub Packages yNAMESPACE
por la cuenta personal u organización a la que se limita la gema que quieres instalar.source "https://rubygems.org" gem "rails" source "https://rubygems.pkg.github.com/NAMESPACE" do gem "GEM_NAME" end
-
En el caso de las versiones de Bundler anteriores a la 1.7.0, debe agregar un nuevo
source
global. Para obtener más información sobre el uso de Bundler, consulte la documentación de bundler.io.source "https://rubygems.pkg.github.com/NAMESPACE" source "https://rubygems.org" gem "rails" gem "GEM_NAME"
-
Instala el paquete:
gem install GEM_NAME --version "0.1.1"