Skip to main content

Esta versión de GitHub Enterprise se discontinuó el 2023-01-18. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener rendimiento mejorado, seguridad mejorada y nuevas características, actualice a la versión más reciente de GitHub Enterprise. Para obtener ayuda con la actualización, póngase en contacto con el soporte técnico de GitHub Enterprise.

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. Para obtener más información sobre cómo actualizar la instancia GitHub Enterprise Server, consulta «Acerca de las actualizaciones a nuevas versiones» y el Upgrade assistant para encontrar la ruta de actualización de la versión actual.

Nota: Este tipo de paquete podría no estar disponible para su instancia, ya que los administradores de sitio pueden habilitar o inhabilitar cada tipo de paquete compatible. Para obtener más información, consulte "Configurar la compatibilidad del ecosistema de paquetes para tu empresa".

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 Enterprise Server. Cuando creas un personal access token, puedes asignar al token diferentes ámbitos en función de tus necesidades. Para obtener más información sobre los ámbitos relacionados con paquetes para unpersonal 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 packages:read para instalar los paquetes asociados con otros repositorios privados (a los cuales no puede acceder GITHUB_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 más información, vea "Acerca de GitHub Packages".

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/OWNER/. Debes reemplazar:

  • USERNAME por su nombre de usuario de GitHub.
  • TOKEN por tu personal access token.
  • OWNER por el nombre de la cuenta de usuario o de organización a la que pertenece el repositorio que contiene el proyecto.
  • REGISTRY-URL por la dirección URL del registro de Rubygems de la instancia. Si en la instancia se ha habilitado el aislamiento de subdominios, use rubygems.HOSTNAME. Si en la instancia se ha deshabilitado el aislamiento de subdominios, use HOSTNAME/_registry/rubygems. En cualquier caso, reemplace HOSTNAME por el nombre de host de su instancia de GitHub Enterprise Server.

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/OWNER/

Para la autenticación con Bundler, configúralo para que use tu personal access token, reemplazando USERNAME por tu nombre de usuario de GitHub, TOKEN por tu personal access token y OWNER por el nombre de la cuenta de usuario u organización que sea propietaria del repositorio que contiene el proyecto. Reemplaza REGISTRY-URL por la dirección URL del registro de RubyGems de la instancia. Si en la instancia se ha habilitado el aislamiento de subdominios, use rubygems.HOSTNAME. Si en la instancia se ha deshabilitado el aislamiento de subdominios, use HOSTNAME/_registry/rubygems. En cualquier caso, reemplace HOSTNAME por el nombre de host de su instancia de GitHub Enterprise Server.

$ bundle config https://REGISTRY-URL/OWNER 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.

  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 <GEM NAME>.gemspec
    
  3. Publique un paquete en GitHub Packages, y reemplace OWNER por el nombre de la cuenta de usuario o de la organización que posee el repositorio que contiene el proyecto y <GEM NAME> por el nombre del paquete de gemas. Reemplace REGISTRY-URL por la dirección URL del registro de Rubygems de la instancia. Si en la instancia se ha habilitado el aislamiento de subdominios, use rubygems.HOSTNAME. Si en la instancia se ha deshabilitado el aislamiento de subdominios, use HOSTNAME/_registry/rubygems. En cualquier caso, reemplace HOSTNAME por el nombre de host de su instancia de GitHub Enterprise Server.

    $ gem push --key github \
    --host https://REGISTRY-URL/OWNER \
    <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 your GitHub Enterprise Server instance.

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.

  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, puedes agregar un nuevo bloque source al archivo Gemfile que use GitHub Packages solo para los paquetes que especifiques, y reemplazar GEM NAME por el paquete que quieras instalar desde GitHub Packages y OWNER por el usuario u organización que posee el repositorio que contiene la gema que quieres instalar. Reemplaza REGISTRY-URL por la dirección URL del registro Rubygems de la instancia. Si en la instancia se ha habilitado el aislamiento de subdominios, use rubygems.HOSTNAME. Si en la instancia se ha deshabilitado el aislamiento de subdominios, use HOSTNAME/_registry/rubygems. En cualquier caso, reemplace HOSTNAME por el nombre de host de su instancia de GitHub Enterprise Server.

    source "https://rubygems.org"
    
    gem "rails"
    
    source "https://REGISTRY-URL/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://REGISTRY-URL/OWNER"
    source "https://rubygems.org"
    
    gem "rails"
    gem "GEM NAME"
    
  4. Instala el paquete:

    $ gem install <GEM NAME> --version "0.1.1"
    

Información adicional