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, vea «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 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 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/NAMESPACE/index.json"
Reemplaza NAMESPACE
por el nombre de la cuenta personal u organización que posee el repositorio donde se hospedan los paquetes.
Para más información sobre el uso de GITHUB_TOKEN
en flujos de trabajo de GitHub Actions, consulta "Autenticación automática de tokens".
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 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
).
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».
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.- Reemplace
NAMESPACE
por el nombre de la cuenta personal u organización que posee el repositorio donde se hospedan los paquetes. HOSTNAME
por el nombre de host de tu instancia de GitHub Enterprise Server.
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/NAMESPACE/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/NAMESPACE/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 tiene un personal access token para utilizar en su cuenta en tu instancia de GitHub Enterprise Server, consulte "Administración de tokens de acceso personal."
-
Cree un nuevo proyecto. Reemplace
PROJECT_NAME
por el nombre que desea asignar al proyecto.dotnet new console --name PROJECT_NAME
-
Empaquetar el proyecto.
dotnet pack --configuration Release
-
Publica el paquete utilizando tu personal access token como clave de API. Reemplace
PROJECT_NAME
por el nombre del proyecto,1.0.0
por el número de versión del paquete yYOUR_GITHUB_PAT
por los datos personal access token.dotnet nuget push "bin/Release/PROJECT_NAME.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, vea «Visualizar paquetes».
Publicación de un paquete mediante un archivo nuget.config
Al publicar, el OWNER
del repositorio especificado en el archivo .csproj debe coincidir con el NAMESPACE
que utilizas en el archivo de autenticación denuget.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.
-
Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".
-
Cree un nuevo proyecto. Reemplace
PROJECT_NAME
por el nombre que desea asignar al proyecto.dotnet new console --name PROJECT_NAME
-
Agregue la información específica del proyecto en su archivo, que finaliza en .csproj. Asegúrese de reemplazar:
1.0.0
con el número de versión del paquete.OWNER
por el nombre de la cuenta personal u organización que posee el repositorio al que deseas publicar el paquete.REPOSITORY
con el nombre del repositorio al que quiere conectar el paquete.HOSTNAME
por el nombre de host de tu instancia de GitHub Enterprise Server.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PackageId>PROJECT_NAME</PackageId> <Version>1.0.0</Version> <Authors>AUTHORS</Authors> <Company>COMPANY_NAME</Company> <PackageDescription>PACKAGE_DESCRIPTION</PackageDescription> <RepositoryUrl>https://HOSTNAME/OWNER/REPOSITORY</RepositoryUrl> </PropertyGroup> </Project>
-
Empaquetar el proyecto.
dotnet pack --configuration Release
-
Publique el paquete con el
key
que especificó en el archivo nuget.config. ReemplacePROJECT_NAME
por el nombre del proyecto y reemplace1.0.0
por el número de versión del paquete.dotnet nuget push "bin/Release/PROJECT_NAME.1.0.0.nupkg" --source "github"
Después de que publiques un paquete, puedes verlo en GitHub. Para obtener más información, vea «Visualizar paquetes».
Publicar múltiples paquetes en el mismo repositorio
Para conectar varios paquetes al mismo repositorio, utilice la misma dirección URL del repositorio GitHub en los campos RepositoryURL
de todos los archivos de proyecto .csproj. GitHub coincide con el repositorio en base a ese campo.
En el ejemplo siguiente se publican los proyectos MY_APP y MY_OTHER_APP en el mismo repositorio:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>MY_APP</PackageId>
<Version>1.0.0</Version>
<Authors>Octocat</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds a singing Octocat!</PackageDescription>
<RepositoryUrl>https://HOSTNAME/my-org/my-repo</RepositoryUrl>
</PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PackageId>MY_OTHER_APP</PackageId>
<Version>1.0.0</Version>
<Authors>Octocat</Authors>
<Company>GitHub</Company>
<PackageDescription>This package adds a dancing Octocat!</PackageDescription>
<RepositoryUrl>https://HOSTNAME/my-org/my-repo</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.
-
Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".
-
Para usar un paquete, agrega
ItemGroup
y configura el campoPackageReference
en el archivo del proyecto .csproj. Reemplace el valorPACKAGE_NAME
deInclude="PACKAGE_NAME"
por la dependencia de su paquete, y sustituya el valorX.X.X
deVersion="X.X.X"
por la versión del paquete que desea utilizar:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PackageId>My-app</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="PACKAGE_NAME" Version="X.X.X" /> </ItemGroup> </Project>
-
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 usas un archivo nuspec, asegúrate 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.