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
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 Enterprise Server 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 (whichGITHUB_TOKEN
can't access).
Autenticación con GITHUB_TOKEN
en 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 un 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".
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".
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 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.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 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 tiene un PAT que pueda usar para su cuenta en your GitHub Enterprise Server instance, consulte "Creación de un token de acceso personal".
-
Cree un nuevo proyecto.
dotnet new console --name OctocatApp
-
Empaquetar el proyecto.
dotnet pack --configuration Release
-
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 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.
-
Autentícate en GitHub Packages. Para obtener más información, vea "Autenticación en GitHub Packages".
-
Cree un nuevo proyecto.
dotnet new console --name OctocatApp
-
Agregue la información específica del proyecto en su archivo, 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 el proyecto.REPOSITORY
por el nombre del repositorio que contiene el paquete que desea publicar.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>
-
Empaquetar el proyecto.
dotnet pack --configuration Release
-
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 publicar varios paquetes en el mismo repositorio, puede 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.
-
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. Reemplaza el valorOctokittenApp
enInclude="OctokittenApp"
por la dependencia del paquete y reemplaza el valor12.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>
-
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 PAT con el ámbito read:packages
y pasa este token como secreto.