Trabajar con el registro de NuGet

Puedes configurar la interfaz de línea de comando (CLI) dotnet para publicar paquetes NuGet en Registro del paquete de GitHub y utilizar paquetes almacenados en Registro del paquete de GitHub como dependencias en un proyecto de .NET.

el Registro del paquete de GitHub se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, Nube de GitHub Enterprise, GitHub Enterprise Server, y GitHub AE.


Registro del paquete de GitHub 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 Registro de contenedores ya que estas cuentas se facturan por repositorio. Para obtener más información, consulta la sección "[Productos de GitHub](/articles/github-s-products)".

Nota: Cuando instalas o publicas una imagen de docker, Registro del paquete de GitHub no es compatible con capas externas, tales como imágenes de Windows.

Autenticarte en Registro del paquete de GitHub

Necesitas de un token de acceso para publicar, instalar, y borrar paquetes en Registro del paquete de GitHub.

Puees utilizar un token de acceso personal (PAT) para autenticarte en el Registro del paquete de GitHub o en la API de GitHub. Cuando creas un token de acceso personal, puedes asignar al token diferentes ámbitos en función de tus necesidades. Para obtener más información sobre los alcances relacionados con los paquetes para un PAT, consulta la sección "Acerca de los permisos para los Paquetes de GitHub".

Para autenticarte en un registro del Registro del paquete de GitHub 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 PAT para instalar los paquetes asociados con otros repositorios privados (a los cuales no puede acceder el GITHUB_TOKEN).

Autenticarte con el GITHUB_TOKEN en GitHub Actions

Utiliza el siguiente comando para autenticarte en el Registro del paquete de GitHub en un flujo de trabajo de GitHub Actions utilizando el GITHUB_TOKEN en vez de codificar un token rígidamente en un archivo de nuget.config en el repositorio:

dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/OWNER/index.json"

Para obtener más información sobre el GITHUB_TOKEN que se utiliza en los flujos de trabajo de GitHub Actions, consulta la sección "Autenticarse 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 Registro del paquete de GitHub. Para obtener más información, consulta "Acerca de Registro del paquete de GitHub".

Para autenticarte en Registro del paquete de GitHub con la interfaz de la línea de comando (CLI) dotnet, crea un archivo nuget.config en el directorio de tu proyecto especificando Registro del paquete de GitHub como una fuente en packageSources para el cliente de la CLI Dotnet.

Debes reemplazar:

  • USERNAME (nombre de usuario) por el nombre de tu cuenta de usuario en GitHub.
  • TOKEN por tu token de acceso personal.
  • OWNER con el nombre de la cuenta de usuario o de organización a la que pertenece el repositorio que contiene tu proyecto.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

Publicar un paquete

Puedes publicar un paquete en el Registro del paquete de GitHub si te autenticas con un archivo de nuget.config, o si utilizas la opción de línea de comandos --api-key con tu token de acceso personal (PAT) de GitHub.

Publicar un paquete utilizando el PAT de GitHub como tu clave de la API

Si aún no tienes un PAT para utilizar con tu cuenta de GitHub, consulta la sección "Crear un token de acceso personal".

  1. Crear un proyecto nuevo.

    dotnet new console --name OctocatApp
  2. Empaquetar el proyecto.

    dotnet pack--lanzamiento de configuración
  3. Publicar el paquete utilizando tu PAT como la clave de la API.

    dotnet nuget push "bin/Release/OctocatApp.1.0.0.nupkg"  --api-key YOUR_GITHUB_PAT --source "github"

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

Publicar un paquete utilizando un archivo nuget.config

Al publicar, debes usar el mismo valor para OWNER en tu archivo csproj que usas en tu archivo de autenticación nuget.config. Especifica o incrementa el número de versión en tu archivo .csproj y luego usa el comando dotnet pack para crear un archivo .nuspec para esa versión. Para obtener más información sobre cómo crear tu paquete, consulta la sección "Crear y publicar un paquete" en la documentación de Microsoft.

  1. Autentícate en Registro del paquete de GitHub. Para obtener más información, consulta "Autenticar a Registro del paquete de GitHub."

  2. Crear un proyecto nuevo.

    dotnet new console --name OctocatApp
  3. Agrega la información específica de tu proyecto al archivo de tu proyecto, que finaliza en .csproj. Debes reemplazar:

    • OWNER por el nombre de la cuenta de usuario o de organización a la que pertenece el repositorio que contiene tu proyecto.
    • REPOSITORY por el nombre del repositorio que contiene el paquete que deseas publicar.
    • 1.0.0 con el número de versión del paquete.
    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</PackageId>
        <Version>1.0.0</Version>
        <Authors>Octocat</Authors>
        <Company>GitHub</Company>
        <PackageDescription>This package adds an Octocat!</PackageDescription>
        <RepositoryUrl>https://github.com/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
    </Project>
    
  4. Empaquetar el proyecto.

    dotnet pack--lanzamiento de configuración
  5. Publicar el paquete utilizando la clave que especificaste en el archivo nuget.config.

    dotnet nuget subir "bin/Release/OctocatApp. 1.0.0. nupkg"--Source "GitHub"

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

Publicar varios paquetes en el mismo repositorio

Para publicar varios paquetes en el mismo repositorio, puedes incluir la misma URL del repositorio de GitHub en los campos RepositoryURL en todos los archivos del proyecto .csproj. GitHub coincide con el repositorio en base a ese campo.

Por ejemplo, los proyectos OctodogApp y OctocatApp publicarán en el mismo repositorio:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctodogApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octodog</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octodog!</PackageDescription>
    <RepositoryUrl>https://github.com/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PackageId>OctocatApp</PackageId>
    <Version>1.0.0</Version>
    <Authors>Octocat</Authors>
    <Company>GitHub</Company>
    <PackageDescription>This package adds an Octocat!</PackageDescription>
    <RepositoryUrl>https://github.com/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>

Instalar un paquete

El uso de paquetes desde GitHub en tu proyecto es similar al uso de paquetes desde nuget.org. Agrega las dependencias de tu paquete a tu archivo .csproj, especificando el nombre del paquete y la versión. Para obtener más información sobre cómo utilizar un archivo .csproj en tu proyecto, consulta "Trabajar con paquetes NuGet"en la documentación de Microsoft.

  1. Autentícate en Registro del paquete de GitHub. Para obtener más información, consulta "Autenticar a Registro del paquete de GitHub."

  2. Para usar un paquete, agrega ItemGroup y configura el campo PackageReference en el archivo de proyecto .csproj, reemplaza el paquete OctokittenApp por la dependencia de tu paquete y 1.0.0 por la versión que deseas usar:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <PackageId>OctocatApp</PackageId>
        <Version>1.0.0</Version>
        <Authors>Octocat</Authors>
        <Company>GitHub</Company>
        <PackageDescription>This package adds an Octocat!</PackageDescription>
        <RepositoryUrl>https://github.com/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. Instalar los paquetes con el comando restore (restaurar).

    restaurar dotnet

Solución de problemas

Tu paquete de NuGet podría fallar en subirse si la RepositoryUrl en .csproj no se configuró en el repositorio esperado.

Leer más

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.