Nota: GitHub Packages se encuentra actualmente en fase beta para GitHub AE.
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
Necesitas un token de acceso para publicar, instalar y eliminar paquetes privados, internos y públicos.
Puedes usar un personal access token para autenticarte en GitHub Packages o en la API de GitHub AE. Cuando creas un personal access token, 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, 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 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 con un personal access token
Debes utilizar un personal access token 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. 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@REGISTRY_URL/NAMESPACE/
. Debes reemplazar:
USERNAME
por su nombre de usuario de GitHub.TOKEN
por tu personal access token.NAMESPACE
por el nombre de la cuenta personal u organización que posee el repositorio que contiene la gema.REGISTRY_URL
por la dirección URL del registro de Rubygems de la instancia,rubygems.HOSTNAME
. Reemplaza HOSTNAME por el nombre de host de tu empresa.
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@REGISTRY_URL/NAMESPACE/
Para la autenticación con Bundler, configúralo para que use tu personal access token, 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 que posee el repositorio que contiene la gema.Reemplace REGISTRY_URL
por la dirección URL del registro de Rubygems de la instancia, rubygems.HOSTNAME
. Reemplaza HOSTNAME por el nombre de host de tu empresa.
bundle config https://REGISTRY_URL/NAMESPACE USERNAME:TOKEN
Publicación de un paquete
De manera predeterminada, GitHub publica el paquete en un repositorio existente con el mismo nombre que el paquete. Por ejemplo, al publicar GEM_NAME
en la organización octo-org
, GitHub Packages publica la gema en el repositorio octo-org/GEM_NAME
. Para más información sobre cómo crear la gema, consulta "Creación de una gema propia" en la documentación de RubyGems.
-
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 que posee el repositorio que contiene el proyecto yGEM_NAME
por el nombre del paquete de gemas. ReemplaceREGISTRY_URL
por la dirección URL del registro de Rubygems de la instancia,rubygems.HOSTNAME
. ReemplazaHOSTNAME
por el nombre de host de tu empresa.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://REGISTRY_URL/NAMESPACE \ GEM_NAME-0.0.1.gem
Publicar múltiples paquetes en el mismo repositorio
Para publicar varias gemas en el mismo repositorio, puede incluir la dirección URL en el repositorio de GitHub en el campo github_repo
de gem.metadata
. Si incluyes este campo, GitHub buscará coincidencias de repositorio con este valor en lugar de usar el nombre del gem. Reemplaza HOSTNAME por el nombre de host de tu empresa.
gem.metadata = { "github_repo" => "ssh://HOSTNAME/OWNER/REPOSITORY" }
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 que posee el repositorio que contiene la gema que quieres instalar. ReemplaceREGISTRY_URL
por la dirección URL del registro de Rubygems de la instancia,rubygems.HOSTNAME
. ReemplazaHOSTNAME
por el nombre de host de tu empresa.source "https://rubygems.org" gem "rails" source "https://REGISTRY_URL/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://REGISTRY_URL/NAMESPACE" source "https://rubygems.org" gem "rails" gem "GEM_NAME"
-
Instala el paquete:
gem install GEM_NAME --version "0.1.1"