Skip to main content

Trabajar con el registro de RubyGems

Puedes configurar RubyGems para publicar un paquete para GitHub Packages y utilizar paquetes almacenados en GitHub Packages como dependencias en un proyecto Ruby con Bundler.

GitHub Packages está disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 3.0 o superior y GitHub AE.
GitHub Packages no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Las cuentas que utilicen los planes tradicionales por repositorio tampoco podrán acceder al Container registry ya que estas cuentas se facturan por repositorio. Para más información, vea "Productos de GitHub".

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
  • Instala keycutter para administrar múltiples credenciales. Para instalar keycutter:

    $ gem install keycutter

Autenticar a GitHub Packages

You need an access token to publish, install, and delete private, internal, and public packages.

You can use a personal access token (PAT) to authenticate to GitHub Packages or the GitHub API. When you create a personal access token, you can assign the token different scopes depending on your needs. For more information about packages-related scopes for a PAT, see "About permissions for GitHub Packages."

To authenticate to a GitHub Packages registry within a GitHub Actions workflow, you can use:

  • GITHUB_TOKEN to publish packages associated with the workflow repository.
  • a PAT with at least packages:read scope to install packages associated with other private repositories (which GITHUB_TOKEN can't access).

Para más información sobre el uso de GITHUB_TOKEN en flujos de trabajo de GitHub Actions, vea "Autenticación en un flujo de trabajo".

Autenticarte con un token de acceso personal

Debes utilizar un token de acceso personal con los alcances adecuados para publicar e instalar paquetes en GitHub Packages. Para más información, vea "Acerca de GitHub Packages".

Puede autenticarse en GitHub Packages con RubyGems editando el archivo ~/.gem/credentials para publicar gemas, editando el archivo ~/.gemrc para instalar una única gema única o usando Bundler para rastrear e instalar una o más gemas.

Para publicar gemas nuevas, debe autenticarse en GitHub Packages con RubyGems editando el archivo ~/.gem/credentials para incluir su token de acceso personal. Cree un nuevo archivo ~/.gem/credentials si este archivo no existe.

Por ejemplo, puede crear o editar un archivo ~/.gem/credentials para incluir lo siguiente, reemplazando TOKEN por el token de acceso personal.

---
:github: Bearer TOKEN

Para instalar gemas, debe autenticarse en GitHub Packages editando el archivo ~/.gemrc para que el proyecto incluya https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/. Debes reemplazar:

  • USERNAME por su nombre de usuario de GitHub.
  • TOKEN por el token de acceso personal.
  • OWNER por el nombre de la cuenta de usuario o de organización a la que pertenece el repositorio que contiene el proyecto.

Si no tiene un archivo ~/.gemrc, cree un nuevo archivo ~/.gemrc consultando este ejemplo.

---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://rubygems.org/
- https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/
:update_sources: true
:verbose: true  

Para autenticarse con Bundler, configúrelo para que use el token de acceso personal, reemplazando USERNAME por el nombre de usuario de GitHub, TOKEN por su token de acceso personal y OWNER por el nombre de la cuenta de usuario u organización que posea el repositorio que contiene el proyecto.

$ bundle config https://rubygems.pkg.github.com/OWNER USERNAME:TOKEN

Publicación de un paquete

Predeterminadamente, GitHub publica el paquete en un repositorio existente con el mismo nombre que éste. Por ejemplo, al publicar octo-gem en la organización octo-org, GitHub Packages publica la gema en el repositorio de octo-org/octo-gem. Para obtener más información sobre cómo crear la gema, consulte "Crear su propia gema" en la documentación de RubyGems.

Después de que publiques un paquete, puedes verlo en GitHub. Para más información, vea "Visualización de paquetes".

  1. Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".

  2. Compile el paquete a partir de gemspec para crear el paquete .gem.

    gem build OCTO-GEM.gemspec
  3. Publique un paquete en GitHub Packages, reemplazando OWNER por el nombre de la cuenta de usuario u organización que posee el repositorio que contiene el proyecto y OCTO-GEM por el nombre del paquete de gemas.

    $ gem push --key github \
    --host https://rubygems.pkg.github.com/OWNER \
    OCTO-GEM-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 incluye este campo, GitHub buscará coincidencias de repositorio en función de este valor en vez de utilizar el nombre de la gema.

gem.metadata = { "github_repo" => "ssh://github.com/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.

  1. Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".

  2. 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, puede agregar un nuevo bloque de source al archivo Gemfile que use GitHub Packages solo para los paquetes que especifique, reemplazando GEM NAME por el paquete que desea instalar desde GitHub Packages y OWNER por el usuario u organización que posee el repositorio que contiene la gema que desea instalar.

    source "https://rubygems.org"
    
    gem "rails"
    
    source "https://rubygems.pkg.github.com/OWNER" do
      gem "GEM NAME"
    end
    
  3. 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/OWNER"
    source "https://rubygems.org"
    
    gem "rails"
    gem "GEM NAME"
    
  4. Instala el paquete:

    $ gem install octo-gem --version "0.1.1"

Información adicional