Remarque : Ce type de package peut ne pas être disponible pour votre instance, car les administrateurs de site peuvent activer ou désactiver chaque type de package pris en charge. Pour plus d’informations, consultez « Configuration de la prise en charge de l’écosystème de packages pour votre entreprise ».
Authentification auprès de GitHub Packages
Vous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages privés, internes et publics.
Vous pouvez utiliser un personal access token pour vous authentifier sur GitHub Packages ou l’API GitHub Enterprise Server. Quand vous créez un personal access token, vous pouvez l’attribuer à différentes étendues selon vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un personal access token, consultez « À propos des autorisations pour les packages GitHub ».
Pour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :
GITHUB_TOKEN
pour publier des packages associés au dépôt du workflow.- un personal access token avec au moins l’étendue
read:packages
pour installer des packages associés à d’autres dépôts privés (auxquelsGITHUB_TOKEN
ne peut pas accéder).
Authentification dans un workflow GitHub Actions
Utilisez la commande suivante pour vous authentifier auprès de GitHub Packages dans un workflow GitHub Actions avec GITHUB_TOKEN
au lieu de coder en dur un personal access token dans un fichier nuget.config dans le dépôt :
dotnet nuget add source --username USERNAME --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.HOSTNAME/NAMESPACE/index.json"
Remplacez NAMESPACE
par le nom du compte personnel ou de l’organisation propriétaire du dépôt où vos packages sont hébergés.
Pour plus d’informations sur GITHUB_TOKEN
utilisé dans les workflows GitHub Actions, consultez « Authentification par jeton automatique ».
Authentification avec un personal access token
Vous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages privés, internes et publics.
Vous pouvez utiliser un personal access token pour vous authentifier sur GitHub Packages ou l’API GitHub Enterprise Server. Quand vous créez un personal access token, vous pouvez l’attribuer à différentes étendues selon vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un personal access token, consultez « À propos des autorisations pour les packages GitHub ».
Pour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :
GITHUB_TOKEN
pour publier des packages associés au dépôt du workflow.- un personal access token avec au moins l’étendue
read:packages
pour installer des packages associés à d’autres dépôts privés (auxquelsGITHUB_TOKEN
ne peut pas accéder).
Vous devez utiliser un personal access token avec les étendues appropriées pour publier et installer des packages dans GitHub Packages. Pour plus d’informations, consultez « Introduction aux packages GitHub ».
Pour vous authentifier auprès de GitHub Packages avec l’interface de ligne de commande (CLI) dotnet
, créez un fichier nuget.config dans votre répertoire de projet spécifiant GitHub Packages comme source sous packageSources
pour le client CLI dotnet
.
Vous devez remplacer :
USERNAME
par le nom de votre compte personnel sur GitHub.TOKEN
par votre personal access token.NAMESPACE
par le nom du compte personnel ou de l'organisation propriétaire du dépôt où vos packages sont hébergés.HOSTNAME
par le nom d’hôte pour votre instance GitHub Enterprise Server.
Si l’isolation de sous-domaine est activée pour votre instance :
<?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 l’isolation de sous-domaine est désactivée pour votre instance :
<?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>
Publication d’un package
Vous pouvez publier un package sur GitHub Packages en vous authentifiant avec un fichier nuget.config ou en utilisant l’option de ligne de commande --api-key
avec votre personal access token GitHub.
Publication d’un package en utilisant un personal access token GitHub en tant que clé API
Si vous n'avez pas encore de personal access token à utiliser pour votre compte sur votre instance GitHub Enterprise Server, consultez « Gestion de vos jetons d'accès personnels ».
-
Créez un projet. Remplacez
PROJECT_NAME
par le nom que vous souhaitez donner au projet.dotnet new console --name PROJECT_NAME
-
Empaquetez le projet.
dotnet pack --configuration Release
-
Publiez le package en utilisant votre personal access token comme clé API. Remplacez
PROJECT_NAME
par le nom du projet,1.0.0
par le numéro de version du package etYOUR_GITHUB_PAT
par votre personal access token.dotnet nuget push "bin/Release/PROJECT_NAME.1.0.0.nupkg" --api-key YOUR_GITHUB_PAT --source "github"
Après avoir publié un package, vous pouvez l’afficher sur GitHub. Pour plus d’informations, consultez « Affichage de packages ».
Publication d’un package à l’aide d’un fichier nuget.config
Lors de la publication, le OWNER
du dépôt spécifié dans votre fichier .csproj doit correspondre au NAMESPACE
que vous utilisez dans votre fichier d’authentification nuget.config. Spécifiez ou incrémentez le numéro de version dans votre fichier .csproj, puis utilisez la commande dotnet pack
pour créer un fichier .nuspec pour cette version. Pour plus d’informations sur la création de votre package, consultez « Créer et publier un package » dans la documentation Microsoft.
-
Authentifiez-vous sur GitHub Packages. Pour plus d’informations, consultez « Authentification auprès de GitHub Packages ».
-
Créez un projet. Remplacez
PROJECT_NAME
par le nom que vous souhaitez donner au projet.dotnet new console --name PROJECT_NAME
-
Ajoutez les informations spécifiques de votre projet au fichier de votre projet, qui se termine par .csproj. Veillez à remplacer :
1.0.0
par le numéro de version du package.OWNER
par le nom du compte personnel ou de l’organisation propriétaire du dépôt dans lequel vous souhaitez publier votre package.REPOSITORY
par le nom du dépôt auquel vous souhaitez connecter votre package.HOSTNAME
par le nom d’hôte pour votre instance 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>
-
Empaquetez le projet.
dotnet pack --configuration Release
-
Publiez le package avec la
key
que vous avez spécifiée dans le fichier nuget.config. RemplacezPROJECT_NAME
par le nom du projet et1.0.0
par le numéro de version du package.dotnet nuget push "bin/Release/PROJECT_NAME.1.0.0.nupkg" --source "github"
Après avoir publié un package, vous pouvez l’afficher sur GitHub. Pour plus d’informations, consultez « Affichage de packages ».
Publication de plusieurs packages sur le même dépôt
Pour connecter plusieurs packages au même dépôt, utilisez la même URL de dépôt GitHub dans les champs RepositoryURL
de tous les fichiers projet .csproj. GitHub correspond au dépôt en fonction de ce champ.
L’exemple suivant publie les projets MY_APP et MY_OTHER_APP dans le même dépôt :
<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>
Installation d’un package
L’utilisation de packages à partir de GitHub dans votre projet est similaire à l’utilisation de packages à partir de nuget.org. Ajoutez vos dépendances de package à votre fichier .csproj, en spécifiant le nom et la version du package. Pour plus d’informations sur l’utilisation d’un fichier .csproj dans votre projet, consultez « Utilisation des packages NuGet » dans la documentation Microsoft.
-
Authentifiez-vous sur GitHub Packages. Pour plus d’informations, consultez « Authentification auprès de GitHub Packages ».
-
Pour utiliser un package, ajoutez
ItemGroup
et configurez le champPackageReference
dans le fichier projet .csproj. Remplacez la valeurPACKAGE_NAME
dansInclude="PACKAGE_NAME"
par votre dépendance de package et remplacez la valeurX.X.X
dansVersion="X.X.X"
par la version du package que vous voulez utiliser :<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>
-
Installez les packages avec la commande
restore
.dotnet restore
Dépannage
La poussée de votre package NuGet peut échouer si le RepositoryUrl
dans .csproj n’est pas défini sur le dépôt attendu.
Si vous utilisez un fichier nuspec, vérifiez qu’il contient un élément repository
avec les attributs type
et url
requis.
Si vous utilisez un GITHUB_TOKEN
pour vous authentifier auprès d’un registre GitHub Packages au sein d’un flux de travail GitHub Actions, le jeton ne peut pas accéder aux packages basés sur un référentiel privé dans un référentiel autre que celui dans lequel le flux de travail s’exécute. Pour accéder aux packages associés à d’autres dépôts, générez plutôt un personal access token avec l’étendue read:packages
et transmettez ce jeton en tant que secret.