NuGetAuthenticate@1 - Tâche d’authentification NuGet v1
Configurez les outils NuGet pour s’authentifier auprès d’Azure Artifacts et d’autres référentiels NuGet. Nécessite NuGet >= 4.8.5385, dotnet >= 6 ou MSBuild >= 15.8.166.59604.
Syntaxe
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
Entrées
forceReinstallCredentialProvider
-
réinstaller le fournisseur d’informations d’identification même s’il est déjà installé
boolean
. Valeur par défaut : false
.
Optionnel. Réinstalle le fournisseur d’informations d’identification dans le répertoire de profil utilisateur, même s’il est déjà installé. Si le fournisseur d’informations d’identification est déjà installé dans le profil utilisateur, la tâche détermine si elle est remplacée par le fournisseur d’informations d’identification fourni par la tâche. Cela peut mettre à niveau (ou éventuellement rétrograder) le fournisseur d’informations d’identification.
informations d’identification de connexion de service nuGetServiceConnections
- pour les flux en dehors de cette organisation
string
.
Optionnel. Liste séparée par des virgules de connexion de service NuGet noms pour les flux en dehors de cette organisation ou de cette collection. Pour les flux de cette organisation ou de cette collection, laissez ce champ vide ; les informations d’identification de la build sont utilisées automatiquement.
Options de contrôle de tâche
Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâche. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.
Variables de sortie
Aucun.
Remarques
Important
Cette tâche est uniquement compatible avec NuGet >= 4.8.0.5385, dotnet >= 6 ou MSBuild >= 15.8.166.59604.
Quels outils sont compatibles avec cette tâche ?
Cette tâche configure les outils qui prennent en charge plug-ins NuGet multiplateformes. Les outils incluent actuellement nuget.exe, dotnet et versions récentes de MSBuild avec prise en charge intégrée de la restauration des packages NuGet.
Plus précisément, cette tâche configure les éléments suivants :
- nuget.exe (version 4.8.5385 ou ultérieure)
- dotnet / .NET 6 SDK ou version ultérieure (une version précédente de cette tâche, NuGetAuthenticateV0, nécessite .NET Core 2.1, qui n’est plus pris en charge)
- MSBuild (version 15.8.166.59604 ou ultérieure)
La mise à niveau vers la dernière version stable est recommandée si vous rencontrez des problèmes.
J’obtiens les erreurs « Une tâche a été annulée » lors d’une restauration de package. Que dois-je faire ?
Les problèmes connus dans NuGet et dans le fournisseur d’informations d’identification Azure Artifacts peuvent entraîner ce type d’erreur et la mise à jour vers le dernier nuget peut vous aider.
Un problème connu dans certaines versions de nuget/dotnet peut entraîner cette erreur, en particulier lors de restaurations volumineuses sur des machines contraintes de ressources. Ce problème est résolu dans NuGet 5.2et le KIT SDK .NET Core 2.1.80X et 2.2.40X. Si vous utilisez une version antérieure, essayez de mettre à niveau votre version de NuGet ou dotnet. La tâche programme d’installation de l’outil .NET Core peut être utilisée pour installer une version plus récente du Kit de développement logiciel (SDK) .NET Core.
Il existe également des problèmes connus avec le fournisseur d’informations d’identification Azure Artifacts (installé par cette tâche), notamment artifacts-credprovider/#77 et artifacts-credprovider/#108. Si vous rencontrez ces problèmes, vérifiez que vous disposez du fournisseur d’informations d’identification le plus récent en définissant la forceReinstallCredentialProvider
d’entrée sur true
dans la tâche d’authentification NuGet. Ce paramètre garantit également que votre fournisseur d’informations d’identification est automatiquement mis à jour à mesure que les problèmes sont résolus.
Si aucun des éléments ci-dessus ne résout le problème, activez journalisation des diagnostics du plug-in et signalez le problème à NuGet et au fournisseur d’informations d’identification Azure Artifacts .
Comment cette tâche diffère-t-elle des tâches NuGetCommand et DotNetCoreCLI ?
Cette tâche configure nuget.exe, dotnet et MSBuild pour s’authentifier auprès d’Azure Artifacts ou d’autres référentiels qui nécessitent une authentification. Une fois cette tâche exécutée, vous pouvez appeler les outils à une étape ultérieure (directement ou via un script) pour restaurer ou envoyer (push) des packages.
Les tâches NuGetCommand et DotNetCoreCLI nécessitent l’utilisation de la tâche pour restaurer ou envoyer (push) des packages, car l’authentification auprès d’Azure Artifacts est configurée uniquement pendant la durée de vie de la tâche. Cela peut vous empêcher de restaurer ou d’envoyer (push) des packages au sein de votre propre script. Il peut également vous empêcher de transmettre des arguments de ligne de commande spécifiques à l’outil.
La tâche NuGetAuthenticate est la méthode recommandée pour utiliser des flux authentifiés au sein d’un pipeline.
Quand dans mon pipeline dois-je exécuter cette tâche ?
Cette tâche doit s’exécuter avant d’utiliser un outil NuGet pour restaurer ou envoyer (push) des packages vers une source de package authentifiée telle qu’Azure Artifacts. Il n’existe aucune autre exigence de classement. Par exemple, cette tâche peut s’exécuter en toute sécurité avant ou après une tâche d’installation d’outil NuGet ou .NET Core.
Comment configurer une source de package NuGet qui utilise ApiKey (« clés API NuGet »), comme nuget.org ?
Certaines sources de package telles que nuget.org utiliser des clés API pour l’authentification lors de l’envoi de packages, plutôt que d'username/password
informations d’identification. En raison de limitations dans NuGet, cette tâche ne peut pas être utilisée pour configurer une connexion de service NuGet qui utilise une clé API.
Au lieu de:
- Configurer une variable secrète contenant l’ApiKey
- Effectuez l’envoi (push) du package à l’aide de
nuget push -ApiKey $(myNuGetApiKey)
ou dedotnet nuget push --api-key $(myNuGetApiKey)
, en supposant que vous avez nommé la variablemyNuGetApiKey
Mon agent se trouve derrière un proxy web. NuGetAuthenticate va-t-il configurer nuget.exe, dotnet et MSBuild pour utiliser mon proxy ?
Non. Bien que cette tâche elle-même fonctionne derrière un proxy web votre agent a été configuré pour utiliser, il ne configure pas les outils NuGet pour utiliser le proxy.
Pour ce faire, vous pouvez :
Définissez la variable d’environnement
http_proxy
et éventuellementno_proxy
sur vos paramètres proxy. Pour plus d’informations, consultez variables d’environnement NuGet CLI. Ces variables sont couramment utilisées, que d’autres outils non NuGet (par exemple curl) peuvent également utiliser.Attention :
Les variableshttp_proxy
etno_proxy
respectent la casse sur les systèmes d’exploitation Linux et Mac et doivent être en minuscules. La tentative d’utilisation d’une variable Azure Pipelines pour définir la variable d’environnement ne fonctionnera pas, car elle sera convertie en majuscules. Au lieu de cela, définissez les variables d’environnement sur l’ordinateur de l’agent auto-hébergé et redémarrez l’agent.Ajoutez les paramètres de proxy au fichier nuget.configau niveau de l’utilisateur, manuellement ou à l’aide de
nuget config -set
, comme décrit dans la documentation de référence nuget.config.Attention :
Les paramètres de proxy (tels quehttp_proxy
) doivent être ajoutés à la configuration au niveau de l’utilisateur. Ils seront ignorés s’ils sont spécifiés dans un autre fichier nuget.config.
Comment déboguer si j’ai des problèmes avec cette tâche ?
Pour obtenir des journaux détaillés à partir du pipeline, ajoutez une variable de pipeline system.debug
et définissez-la sur true
.
Comment cette tâche fonctionne-t-elle ?
Cette tâche installe le fournisseur d’informations d’identification Azure Artifacts dans le répertoire des plug-ins NuGet s’il n’est pas déjà installé. Il définit ensuite des variables d’environnement telles que VSS_NUGET_URI_PREFIXES
et VSS_NUGET_ACCESSTOKEN
pour configurer le fournisseur d’informations d’identification. Ces variables restent définies pour la durée de vie du travail. Lors de la restauration ou de l’envoi de packages, un outil NuGet exécute le fournisseur d’informations d’identification, qui utilise les variables ci-dessus pour déterminer s’il doit retourner les informations d’identification à l’outil.
Pour plus d’informations, consultez la documentation du fournisseur d’informations d’identification.
Mon pipeline doit accéder à un flux dans un autre projet
Si le pipeline s’exécute dans un projet différent du projet hébergeant le flux, vous devez configurer l’autre projet pour accorder un accès en lecture/écriture au service de génération. Pour plus d’informations, consultez autorisations de package dans Azure Pipelines.
Cela fonctionnera-t-il pour les exécutions de pipeline déclenchées à partir d’un fork externe ?
Non. Les exécutions de pipeline déclenchées à partir d’un fork externe n’ont pas accès aux secrets appropriés pour l’authentification de flux interne. Ainsi, elle apparaît comme si la tâche d’authentification réussit, mais les tâches suivantes qui nécessitent l’authentification (par exemple, Nuget Push) échouent avec une erreur sur les lignes suivantes : ##[error]The nuget command failed with exit code(1) and error(Response status code does not indicate success: 500 (Internal Server Error - VS800075: The project with id 'vstfs:///Classification/TeamProject/341ec244-e856-40ad-845c-af31c33c2152' does not exist, or you do not have permission to access it. (DevOps Activity ID: C12C19DC-642C-469A-8F58-C89F2D81FEA7)).
Une fois la demande de tirage fusionnée dans l’origine, un pipeline déclenché à partir de cet événement s’authentifie correctement.
J’ai mis à jour nuGetAuthenticateV0 vers NuGetAuthenticateV1 et maintenant ma commande dotnet échoue avec 401
Si vous effectuez une mise à jour de NuGetAuthenticateV0 vers NuGetAuthenticateV1 et que vous obtenez une erreur lors de l’exécution d’une commande dotnet, recherchez le message It was not possible to find any compatible framework version
à partir des journaux. Pour les utilisateurs dotnet, NuGetAuthenticateV1 nécessite .NET 6 au lieu de .NET Core 2.1, qui est requis dans NuGetAuthenticateV0 et n’est plus pris en charge. Pour résoudre le problème, utilisez la tâche UseDotNet@2 avant la commande dotnet pour installer .NET 6.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Exemples
Restaurer et envoyer (push) des packages NuGet au sein de votre organisation
Si tous les flux Azure Artifacts que vous utilisez se trouvent dans la même organisation que votre pipeline, vous pouvez utiliser la tâche NuGetAuthenticate sans spécifier d’entrées. Pour les flux délimités par le projet qui se trouvent dans un projet différent de celui dans lequel le pipeline s’exécute, vous devez donner manuellement au projet et au flux l’accès au service de génération du projet du pipeline.
nuget.config
<configuration>
<packageSources>
<!--
Any Azure Artifacts feeds within your organization will automatically be authenticated. Both dev.azure.com and visualstudio.com domains are supported.
Project scoped feed URL includes the project, organization scoped feed URL does not.
-->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyProjectFeed2" value="https://{organization}.pkgs.visualstudio.com/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOtherProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed@view}/nuget/v3/index.json" />
<add key="MyOrganizationFeed1" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
</packageSources>
</configuration>
Pour utiliser une connexion de service, spécifiez la connexion de service dans l’entrée nuGetServiceConnections
pour la tâche d’authentification NuGet. Vous pouvez ensuite référencer la connexion de service avec -ApiKey AzureArtifacts
dans une tâche.
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source https://pkgs.dev.azure.com/{organization}/_packaging/{feed1}/nuget/v3/index.json MyProject.*.nupkg
Dans les exemples ci-dessus, OtherOrganizationFeedConnection
et ThirdPartyRepositoryConnection
sont les noms des connexions de service NuGet qui ont été configurées et autorisées à être utilisées dans votre pipeline, et ont des URL qui correspondent à celles de votre argument de ligne de commande ou de nuget.config
.
L’URL source du package pointant vers un flux Azure Artifacts peut ou non contenir le projet. Une URL pour un flux délimité par un projet doit contenir le projet, et une URL pour un flux délimité par l’organisation ne doit pas contenir le projet. En savoir plus sur flux délimités par le projet.
Restaurer et envoyer (push) des packages NuGet en dehors de votre organisation
Si vous utilisez des flux Azure Artifacts d’une autre organisation ou utilisez un référentiel de package authentifié tiers, vous devez configurer connexions de service NuGet et les spécifier dans l’entrée nuGetServiceConnections
.
Les flux au sein de votre organisation Azure Artifacts sont également authentifiés automatiquement.
nuget.config
<configuration>
<packageSources>
<!-- Any Azure Artifacts feeds within your organization will automatically be authenticated -->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOrganizationFeed" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
<!-- Any package source listed here whose URL matches the URL of a service connection in nuGetServiceConnections will also be authenticated.
The key name here does not need to match the name of the service connection. -->
<add key="OtherOrganizationFeed" value="https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/nuget/v3/index.json" />
<add key="ThirdPartyRepository" value="https://{thirdPartyRepository}/index.json" />
</packageSources>
</configuration>
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source "MyProjectFeed1" MyProject.*.nupkg
OtherOrganizationFeedConnection
et ThirdPartyRepositoryConnection
sont les noms des connexions de service NuGet qui ont été configurées et autorisées à être utilisées dans votre pipeline, et ont des URL qui correspondent à celles de votre argument de ligne de commande ou de nuget.config.
L’URL source du package pointant vers un flux Azure Artifacts peut ou non contenir le projet. Une URL pour un flux délimité par un projet doit contenir le projet, et une URL pour un flux délimité par l’organisation ne doit pas contenir le projet. En savoir plus sur flux délimités par le projet.
Exigences
Exigence | Description |
---|---|
Types de pipelines | YAML, Build Classique, Version Classique |
Exécutions sur | Agent, DeploymentGroup |
demandes | Aucun |
fonctionnalités de | Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail. |
restrictions de commande | Quelconque |
variables settables | Quelconque |
Version de l’agent | 2.144.0 ou version ultérieure |
Catégorie de tâche | Colis |
Exigence | Description |
---|---|
Types de pipelines | YAML, Build Classique, Version Classique |
Exécutions sur | Agent, DeploymentGroup |
demandes | Aucun |
fonctionnalités de | Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail. |
restrictions de commande | Quelconque |
variables settables | Quelconque |
Version de l’agent | 2.120.0 ou version ultérieure |
Catégorie de tâche | Colis |