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 NuGet

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

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".

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 en un flujo de trabajo de GitHub Actions

Utilice el siguiente comando para autenticarse en GitHub Packages en un flujo de trabajo de GitHub Actions utilizando GITHUB_TOKEN en vez de codificar de forma rígida un personal access token en un archivo nuget.config en el repositorio:

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

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".

Autenticación con un personal access token

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).

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".

Para autenticarse en GitHub Packages con la interfaz de la línea de comandos (CLI) dotnet, cree un archivo nuget.config en el directorio del proyecto que especifique que GitHub Packages es el origen en packageSources para el cliente de la CLI dotnet.

Debes reemplazar:

  • USERNAME por el nombre de tu cuenta personal en GitHub.
  • TOKEN por tu personal access token.
  • OWNER con el nombre de la cuenta de usuario u organización que posee el repositorio que contiene el proyecto.
  • HOSTNAME por el nombre de host de your GitHub Enterprise Server instance.

Si en la instancia se ha habilitado el aislamiento de subdominios:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://nuget.HOSTNAME/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

Si en la instancia se ha deshabilitado el aislamiento de subdominios:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
        <add key="github" value="https://HOSTNAME/_registry/nuget/OWNER/index.json" />
    </packageSources>
    <packageSourceCredentials>
        <github>
            <add key="Username" value="USERNAME" />
            <add key="ClearTextPassword" value="TOKEN" />
        </github>
    </packageSourceCredentials>
</configuration>

Publicación de un paquete

Puede publicar un paquete de GitHub Packages si se autentica con un archivo nuget.config o utiliza la opción de línea de comandos --api-key con su personal access token de GitHub.

Publicación de un paquete utilizando un personal access token de GitHub como clave de API

Si aún no tienes un PAT que puedas usar para tu cuenta en your GitHub Enterprise Server instance, consulta "Creación de un personal access token".

  1. Cree un nuevo proyecto.

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

    dotnet pack --configuration Release
  3. Publica el paquete utilizando tu personal access token como clave de 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 más información, vea "Visualización de paquetes".

Publicación de un paquete mediante un archivo nuget.config

Al publicar, debe usar el mismo valor para OWNER en el archivo csproj que usa en el archivo de autenticación nuget.config. Especifique o incremente el número de versión en el archivo .csproj y, a continuación, use el comando dotnet pack para crear un archivo .nuspec para esa versión. Para obtener más información sobre cómo crear el paquete, consulte "Creación y publicación de un paquete" en la documentación de Microsoft.

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

  2. Cree un nuevo proyecto.

    dotnet new console --name OctocatApp
  3. Agregue la información específica del proyecto en su archivo, que finaliza en .csproj. Debes reemplazar:

    • OWNER con el nombre de la cuenta de usuario u organización que posee el repositorio al que quieres conectar el paquete.
    • REPOSITORY con el nombre del repositorio al que quieres conectar el paquete.
    • 1.0.0 por el número de versión del paquete.
    • HOSTNAME por el nombre de host de your GitHub Enterprise Server instance.
    <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://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
    </Project>
    
  4. Empaquetar el proyecto.

    dotnet pack --configuration Release
  5. Publique el paquete con el key que especificó en el archivo nuget.config.

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

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

Publicar múltiples paquetes en el mismo repositorio

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

Por ejemplo, los proyectos OctodogApp y OctocatApp se 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://HOSTNAME/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://HOSTNAME/octo-org/octo-cats-and-dogs</RepositoryUrl>
  </PropertyGroup>

</Project>

Instalación de un paquete

El uso de paquetes de GitHub en el proyecto es similar al uso de paquetes de nuget.org. Agregue las dependencias del paquete al archivo .csproj y especifique el nombre y la versión del paquete. Para obtener más información sobre el uso de un archivo .csproj en el proyecto, consulte "Trabajar con paquetes de NuGet" en la documentación de Microsoft.

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

  2. Para usar un paquete, agrega ItemGroup y configura el campo PackageReference en el archivo del proyecto .csproj. Reemplaza el valor OctokittenApp en Include="OctokittenApp" por la dependencia del paquete y reemplaza el valor 12.0.2 enVersion="12.0.2" 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://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="OctokittenApp" Version="12.0.2" />
      </ItemGroup>
    
    </Project>
    
  3. Instale los paquetes con el comando restore.

    dotnet restore

Solución de problemas

Es posible que el paquete de NuGet no se inserte si RepositoryUrl en .csproj no está establecido en el repositorio previsto.

Si usa un archivo nuspec, asegúrese de que tiene un elemento repository con los atributos type y url necesarios.

Si usas un GITHUB_TOKEN para autenticarte en un registro GitHub Packages dentro de un flujo de trabajo de GitHub Actions, el token no puede acceder a paquetes privados basados en repositorios en un repositorio distinto del lugar en el que se ejecuta el flujo de trabajo. Para acceder a los paquetes asociados a otros repositorios, genera un personal access token con el ámbito read:packages y pasa este token como secreto.

Información adicional