Publication de packagesPublishing packages

Une fois que vous avez créé un package et obtenu votre fichier .nupkg, un processus simple permet de le mettre à la disposition d’autres développeurs, de façon publique ou privée :Once you have created a package and have your .nupkg file in hand, it's a simple process to make it available to other developers, either publicly or privately:

  • Les packages publics sont à la disposition des développeurs du monde entier par le biais de nuget.org, comme l’explique cet article (NuGet 4.1.0+ requis).Public packages are made available to all developers globally through nuget.org as described in this article (requires NuGet 4.1.0+).
  • Les packages privés sont disponibles uniquement pour une équipe ou une organisation, via leur hébergement sur un partage de fichiers, un serveur NuGet privé, Azure Artifacts ou un dépôt tiers comme myget, ProGet, Nexus Repository ou Artifactory.Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, Azure Artifacts, or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. Pour plus d’informations, consultez Vue d’ensemble de l’hébergement des packages.For additional details, see Hosting Packages Overview.

Cet article traite de la publication sur nuget.org. Pour la publication sur Azure Artifacts, consultez Gestion des packages.This article covers publishing to nuget.org; for publishing to Azure Artifacts, see Package Management.

Publier dans nuget.orgPublish to nuget.org

Dans le cas de nuget.org, il est nécessaire de se connecter avec un compte Microsoft, qui servira à enregistrer le compte auprès de nuget.org. Vous pouvez également vous connecter avec un compte nuget.org créé avec des versions antérieures du portail.For nuget.org, you must sign in with a Microsoft account, with which you'll be asked to register the account with nuget.org. You can also sign in with a nuget.org account created using older versions of the portal.

Emplacement de la connexion NuGet

Ensuite, vous pouvez charger le package via le portail web nuget.org, l’envoyer (push) à nuget.org à partir de la ligne de commande (nécessite nuget.exe 4.1.0+), ou le publier dans le cadre d’un processus CI/CD via Azure DevOps Services, comme décrit dans les sections suivantes.Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires nuget.exe 4.1.0+) , or publish as part of a CI/CD process through Azure DevOps Services, as described in the following sections.

Portail web : utilisez l’onglet de chargement de package sur nuget.orgWeb portal: use the Upload Package tab on nuget.org

  1. Sélectionnez Charger dans le menu supérieur de nuget.org et accédez à l’emplacement du package.Select Upload on the top menu of nuget.org and browse to the package location.

    Charger un package sur nuget.org

  2. nuget.org indique si le nom du package est disponible.nuget.org tells you if the package name is available. Si ce n’est pas le cas, modifiez l’identificateur du package dans votre projet, relancez la génération et retentez le chargement.If it isn't, change the package identifier in your project, rebuild, and try the upload again.

  3. Si le nom du package est disponible, nuget.org ouvre une section Vérifier, qui permet de consulter les métadonnées du manifeste de package.If the package name is available, nuget.org opens a Verify section in which you can review the metadata from the package manifest. Pour modifier les métadonnées, modifiez votre projet (fichier projet ou fichier .nuspec), relancez la génération, recréez le package et relancez le chargement.To change any of the metadata, edit your project (project file or .nuspec file), rebuild, recreate the package, and upload again.

  4. Sous Documentation de l’importation vous pouvez coller Markdown, pointer sur vos documents avec une URL ou charger un fichier de documentation.Under Import Documentation you can paste Markdown, point to your docs with a URL, or upload a documentation file.

  5. Lorsque toutes les informations sont prêtes, sélectionnez le bouton Envoyer.When all the information is ready, select the Submit button

Ligne de commandeCommand line

Pour envoyer (push) des packages à nuget.org, vous devez utiliser nuget.exe v4.1.0 ou plus, qui implémente les protocoles NuGet requis.To push packages to nuget.org you must use nuget.exe v4.1.0 or above, which implements the required NuGet protocols. Vous aurez également besoin d’une clé API, créée sur nuget.org.You also need an API key, which is created on nuget.org.

Créer des clés APICreate API keys

  1. Connectez-vous à votre compte nuget.org ou créez un compte si vous ne l’avez pas déjà fait.Sign into your nuget.org account or create an account if you don't have one already.

  2. Sélectionnez votre nom d’utilisateur (dans le coin supérieur droit), puis Clés API.Select your user name (on the upper right), then select API Keys.

  3. Sélectionnez Créer, donnez un nom à votre clé et sélectionnez Sélectionner les étendues > Envoyer (push).Select Create, provide a name for your key, select Select Scopes > Push. Sous Clé API, entrez * comme Modèle Glob, puis sélectionnez Créer.Under API Key, enter * for Glob pattern, then select Create. (Consultez la suite pour plus d’informations sur les étendues.)(See below for more about scopes.)

  4. Une fois la clé créée, sélectionnez Copier pour récupérer la clé d’accès dont vous avez besoin dans l’interface CLI :Once the key is created, select Copy to retrieve the access key you need in the CLI:

    Copie de la clé d’API dans le Presse-papiers

  5. Important: enregistrez votre clé dans un emplacement sécurisé car vous ne pourrez plus la recopier par la suite.Important: Save your key in a secure location because you cannot copy the key again later on. Si vous retournez sur la page de la clé API, vous devez régénérer la clé pour la copier.If you return to the API key page, you need to regenerate the key to copy it. Vous pouvez également supprimer la clé API si vous ne souhaitez plus distribuer des packages par le biais de l’interface CLI.You can also remove the API key if you no longer want to push packages via the CLI.

La définition d’étendue permet de créer des clés API distinctes selon les finalités.Scoping allows you to create separate API keys for different purposes. Chacune a son délai d’expiration et peut être restreinte à des packages (ou des modèles Glob) spécifiques.Each key has its expiration timeframe and can be scoped to specific packages (or glob patterns). Chaque clé est également limitée à certaines opérations : transmission de nouveaux packages et de mises à jour, transmission de mises à jour uniquement ou retrait d’une liste.Each key is also scoped to specific operations: push of new packages and updates, push of updates only, or delisting. La définition d’étendue permet de créer des clés API pour les différentes personnes qui gèrent des packages dans votre organisation, de sorte qu’elles disposent uniquement des autorisations dont elles ont besoin.Through scoping, you can create API keys for different people who manage packages for your organization such that they have only the permissions they need. Pour plus d’informations, consultez la page Présentation des clés API avec définition d’étendue (blogs.nuget.org).For more information, see Introducing scoped API keys (blogs.nuget.org).

Publier avec dotnet nuget pushPublish with dotnet nuget push

  1. Accédez au dossier contenant le fichier .nupkg.Change to the folder containing the .nupkg file.

  2. Exécutez la commande suivante, en spécifiant le nom de votre package et en remplaçant la valeur de la clé par celle de votre clé API :Run the following command, specifying your package name and replacing the key value with your API key:

    dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
    
  3. dotnet affiche les résultats du processus de publication :dotnet displays the results of the publishing process:

    info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
    info :   PUT https://www.nuget.org/api/v2/package/
    info :   Created https://www.nuget.org/api/v2/package/ 12620ms
    info : Your package was pushed.
    

Voir dotnet nuget push.See dotnet nuget push.

Publier avec nuget pushPublish with nuget push

  1. Dans une invite de commandes, exécutez la commande suivante en remplaçant <your_API_key> par la clé obtenue sur nuget.org :At a command prompt, run the following command, replacing <your_API_key> with the key obtained from nuget.org:

    nuget setApiKey <your_API_key>
    

    Cette commande stocke votre clé API dans votre configuration NuGet ; vous devrez donc répéter cette étape sur le même ordinateur.This command stores your API key in your NuGet configuration so that you need repeat this step again on the same computer.

  2. Envoyez (push) votre package dans la galerie NuGet à l’aide de la commande suivante :Push your package to NuGet Gallery using the following command:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Publier les paquets signésPublish signed packages

Pour pouvoir envoyer les packages signés, vous devez tout d’abord inscrire le certificat utilisé pour signer les packages.To submit signed packages, you must first register the certificate used for signing the packages.

Avertissement

nuget.org rejette les packages qui ne répondent pas aux exigences des packages signés.nuget.org rejects packages that don't satisfy the signed package requirements.

Validation du package et indexationPackage validation and indexing

Les packages envoyés sur nuget.org passent par plusieurs validations, notamment des contrôles antivirus.Packages pushed to nuget.org undergo several validations, such as virus checks. (Tous les packages présents sur nuget.org sont analysés régulièrement.)(All packages on nuget.org are periodically scanned.)

Lorsque le package a satisfait à tous les contrôles de validation, son indexation peut prendre un certain temps ainsi que son apparition dans les résultats de recherche.When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Une fois que l’indexation est terminée, vous recevez un e-mail de confirmation que le package a été correctement publié.Once indexing is complete, you receive an email confirming that the package was successfully published. Si le package ne satisfait pas à un contrôle de validation, la page des détails du package se met à jour pour afficher l’erreur associée et vous recevez aussi un e-mail vous en informant.If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it.

La validation et l’indexation du package prend généralement moins de 15 minutes.Package validation and indexing usually takes under 15 minutes. Si la publication du package prend plus de temps que prévu, visitez status.nuget.org pour vérifier si nuget.org rencontre des interruptions.If the package publishing is taking longer than expected, visit status.nuget.org to check if nuget.org is experiencing any interruptions. Si tous les systèmes sont opérationnels et que le package n’a pas été correctement publié dans l’heure, connectez-vous à nuget.org et contactez-nous à l’aide du lien permettant de contacter le support disponible dans la page du package.If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package page.

Pour afficher l’état d’un package, sélectionnez Gérer les packages sous le nom de votre compte sur nuget.org. Vous recevrez un e-mail de confirmation à la fin de la validation.To see the status of a package, select Manage packages under your account name on nuget.org. You receive a confirmation email when validation is complete.

Notez que l’indexation de votre package peut prendre un certain temps ainsi que son apparition dans les résultats de recherche. Pendant ce délai, le message suivant s’affiche dans la page de votre package :Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you see the following message on your package page:

Message indiquant qu’un package n’est pas encore publié

Azure DevOps Services (CI/CD)Azure DevOps Services (CI/CD)

Si vous envoyez (push) des packages à nuget.org à l’aide d’Azure DevOps Services dans le cadre du processus d’intégration et de déploiement continus (CI/CD), vous devez utiliser nuget.exe 4.1 ou une version ultérieure dans les tâches NuGet.If you push packages to nuget.org using Azure DevOps Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. D’autres informations sont données dans Utilisation de la dernière version de NuGet dans votre build (blog Microsoft DevOps).Details can be found on Using the latest NuGet in your build (Microsoft DevOps blog).

Gestion des propriétaires de packages sur nuget.orgManaging package owners on nuget.org

Bien que le fichier .nuspec de chaque package NuGet définisse les auteurs du package, la galerie nuget.org n’utilise pas ces métadonnées pour en définir la propriété.Although each NuGet package's .nuspec file defines the package's authors, the nuget.org gallery does not use that metadata to define ownership. Au lieu de cela, nuget.org assigne la propriété initiale à la personne qui publie le package.Instead, nuget.org assigns initial ownership to the person who publishes the package. Il s’agit soit de l’utilisateur connecté qui a chargé le package via l’interface utilisateur de nuget.org, soit des utilisateurs dont la clé API a été utilisée avec nuget SetApiKey ou nuget push.This is either the logged-in user who uploaded the package through the nuget.org UI, or the users whose API key was used with nuget SetApiKey or nuget push.

Tous les propriétaires de packages disposent d’autorisations complètes sur le package, y compris d’ajout et de suppression d’autres propriétaires, ainsi que de publication de mises à jour.All package owners have full permissions for the package, including adding and removing other owners, and publishing updates.

Pour modifier la propriété d’un package, effectuez les opérations suivantes :To change ownership of a package, do the following:

  1. Connectez-vous à nuget.org avec le compte qui est le propriétaire actuel du package.Sign in to nuget.org with the account that is the current owner of the package.
  2. Sélectionnez le nom de votre compte, puis Gérer les packages et développez Packages publiés.Select your account name, select Manage packages, and expand Published Packages.
  3. Sélectionnez le package que vous souhaitez gérer, puis Gérer les propriétaires à droite.Select on the package you want to manage, then on the right side select Manage owners.

À partir de là, vous disposez de plusieurs options :From here you have several options:

  1. Supprimez des propriétaires listés sous Propriétaires actuels.Remove any owner listed under Current Owners.
  2. Ajoutez un propriétaire sous Ajouter un propriétaire en entrant son nom d’utilisateur et un message, puis en sélectionnant Ajouter.Add an owner under Add Owner by entering their user name, a message, and selecting Add. Cette action envoie un e-mail comportant un lien de confirmation à ce nouveau copropriétaire.This action sends an email to that new co-owner with a confirmation link. Une fois la confirmation effectuée, cette personne dispose d’autorisations complètes pour ajouter et supprimer des propriétaires.Once confirmed, that person has full permissions to add and remove owners. (Tant que la confirmation n’est pas effectuée, la section Propriétaires actuels indique « En attente d’approbation » pour cette personne.)(Until confirmed, the Current Owners section indicates pending approval for that person.)
  3. Pour transférer la propriété (quand elle change ou qu’un package n’a pas été publié sous le bon compte), ajoutez le nouveau propriétaire ; une fois qu’il aura confirmé sa propriété, il pourra vous supprimer de la liste.To transfer ownership (as when ownership changes or a package was published under the wrong account), add the new owner, and once they've confirmed ownership they can remove you from the list.

Pour affecter la propriété à une entreprise ou un groupe, créez un compte nuget.org à l’aide d’un alias de messagerie transféré aux membres d’équipe appropriés.To assign ownership to a company or group, create a nuget.org account using an email alias that is forwarded to the appropriate team members. Par exemple, les comptes microsoft et aspnet sont propriétaires de divers packages Microsoft ASP.NET.For example, various Microsoft ASP.NET packages are co-owned by the microsoft and aspnet accounts, which simply such aliases.

Récupération des propriétaires des packagesRecovering package ownership

Parfois, un package peut ne pas avoir de propriétaire actif.Occasionally, a package may not have an active owner. Par exemple, le propriétaire d’origine peut avoir quitté l’entreprise qui produit le package, les informations d’identification nuget.org sont perdues ou des bogues plus récents dans la galerie ont laissé un package sans propriétaire.For example, the original owner may have left the company that produces the package, nuget.org credentials are lost, or earlier bugs in the gallery left a package ownerless.

Si vous êtes le propriétaire légitime d’un package et que vous avez besoin d’en récupérer la propriété, utilisez le formulaire de contact sur nuget.org pour expliquer votre situation à l’équipe NuGet.If you are the rightful owner of a package and need to regain ownership, use the contact form on nuget.org to explain your situation to the NuGet team. Nous suivons alors une procédure pour vérifier votre propriété du package, notamment en essayant de localiser le propriétaire existant par le biais de l’URL du projet du package, Twitter, un e-mail ou tout autre moyen.We then follow a process to verify your ownership of the package, including trying to locate the existing owner through the package's Project URL, Twitter, email, or other means. En cas d’échec de toutes ces options, nous pouvons vous envoyer une nouvelle invitation à devenir propriétaire.But if all else fails, we can send you a new invite to become an owner.