Authentification auprès de GitHub Packages
Vous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages.
Vous pouvez utiliser un jeton d’accès personnel (PAT) pour vous authentifier sur GitHub Packages ou l’API GitHub. Quand vous créez un jeton d’accès personnel, vous pouvez l’attribuer à différentes étendues en fonction de vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un jeton PAT, consultez « À propos des autorisations de GitHub Packages ».
Pour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :
-
GITHUB_TOKENpour publier des packages associés au dépôt du workflow. -
Un PAT avec au moins l’étendue
packages:readpour installer des packages associés à d’autres dépôts privés (auxquelsGITHUB_TOKENne peut pas accéder).Vous pouvez choisir d’accorder des autorisations d’accès aux packages indépendamment pour GitHub Codespaces et GitHub Actions. Pour plus d’informations, consultez « Garantie d’accès des codespaces à votre package » et « Garantie de l’accès du workflow à votre package ».
Authentification avec GITHUB_TOKEN dans 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.pkg.github.com/OWNER/index.json"
Pour plus d’informations sur le GITHUB_TOKEN utilisé dans les workflows GitHub Actions, consultez « Authentification dans un workflow ».
Authentification avec un personal access token
Vous devez utiliser un jeton d’accès personnel avec les étendues appropriées pour publier et installer des packages dans GitHub Packages. Pour plus d’informations, consultez « À propos de GitHub Packages ».
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 :
USERNAMEpar le nom de votre compte personnel sur GitHub.TOKENpar votre personal access token (classic).OWNERpar le nom du compte d’utilisateur ou d’organisation qui possède le package que vous souhaitez installer, ou sur lequel vous souhaitez publier un package.
<?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>
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 (classic) GitHub.
Le registre NuGet stocke les packages dans votre compte d’organisation ou personnel et vous autorise à associer les packages à un dépôt. Vous pouvez choisir d’hériter des autorisations d’un dépôt ou de définir des autorisations granulaires indépendamment d’un dépôt.
Lorsque vous publiez un package pour la première fois, la visibilité par défaut est privée. Quand un package est lié à un dépôt, sa visibilité dépend de celle du dépôt. Pour modifier la visibilité ou définir les autorisations d’accès, consultez « Configuration du contrôle d’accès et de la visibilité d’un package ».
Si vous spécifiez une RepositoryURL dans votre fichier nuget.config, le package publié est automatiquement connecté au dépôt spécifié. Pour plus d’informations, consultez « Publication d’un package avec un fichier nuget.config ». Pour plus d’informations sur la liaison d’un package déjà publié à un dépôt, consultez « Connexion d’un dépôt à un package ».
Publication d’un package en utilisant un personal access token GitHub en tant que clé API
Si vous n’avez pas encore de jeton d’accès personnel à utiliser pour votre compte sur GitHub.com, consultez « Création d’un personal access token ».
-
Créez un projet.
dotnet new console --name OctocatApp -
Empaquetez le projet.
dotnet pack --configuration Release -
Publiez le package en utilisant votre personal access token comme clé API.
dotnet nuget push "bin/Release/OctocatApp.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, vous devez utiliser la même valeur pour OWNER dans votre fichier csproj que celle 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.
dotnet new console --name OctocatApp -
Ajoutez les informations spécifiques de votre projet au fichier de votre projet, qui se termine par .csproj. Vous devez remplacer :
OWNERpar le nom du compte d’utilisateur ou d’organisation propriétaire du dépôt auquel vous souhaitez connecter votre package.REPOSITORYpar le nom du dépôt auquel vous souhaitez connecter votre package.1.0.0par le numéro de version du package.
<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> -
Empaquetez le projet.
dotnet pack --configuration Release -
Publiez le package avec la
keyque vous avez spécifiée dans le fichier nuget.config.dotnet nuget push "bin/Release/OctocatApp.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, vous pouvez inclure 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.
Par exemple, les projets OctodogApp et OctocatApp sont publiés sur le même dépôt :
<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>
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
ItemGroupet configurez le champPackageReferencedans le fichier projet .csproj. Remplacez la valeurOctokittenAppdansInclude="OctokittenApp"par votre dépendance de package et remplacez la valeur12.0.2dansVersion="12.0.2"par la version que vous voulez utiliser :<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> -
Installez les packages avec la commande
restore.dotnet restore
Dépannage
La poussée de votre package NuGet peut échouer si le champ RepositoryUrl dans .csproj n’est pas défini sur le dépôt attendu.
Si vous utilisez un fichier nuspec, vérifiez qu’il a 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 (classic) avec l’étendue read:packages et transmettez ce jeton en tant que secret.