Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Configura gli strumenti NuGet per autenticarsi con Azure Artifacts e altri repository NuGet. Richiede nuGet >= 4.8.5385, dotnet >= 6 o MSBuild >= 15.8.166.59604.
Sintassi
# 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:
#azureDevOpsServiceConnection: # string. Alias: workloadIdentityServiceConnection. Optional. Use when nuGetServiceConnections == ''. 'Azure DevOps' Service Connection.
#feedUrl: # string. Optional. Use when workloadIdentityServiceConnection != ''. Azure Artifacts URL.
#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.
Ingressi
azureDevOpsServiceConnection
-
'Azure DevOps' Connessione di Servizio
Alias di input: workloadIdentityServiceConnection.
string. Opzionale. Usare quando nuGetServiceConnections == ''.
Se questo è impostato, feedUrl è richiesto. Tutti gli altri input vengono ignorati.
feedUrl
-
Azure Artifacts URL
string. Opzionale. Usare quando workloadIdentityServiceConnection != ''.
Se questo è impostato, workloadIdentityServiceConnection è richiesto. Tutti gli altri input vengono ignorati. Non compatibile con nuGetServiceConnections. L'URL del feed dovrebbe essere nel formato NuGet service index: https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json.
forceReinstallCredentialProvider
-
Reinstallare il provider di credenziali anche se è già installato
boolean. Valore predefinito: false.
Se il fornitore delle credenziali è già installato nel profilo utente, determina se viene sovrascritto con il fornitore delle credenziali fornito dal compito. Questo potrebbe aggiornare (o potenzialmente effettuare il downgrade) del provider di credenziali.
nuGetServiceConnections
-
credenziali di connessione al servizio per i feed esterni all'organizzazione
string.
Opzionale. Elenco delimitato da virgole di connessione al servizio NuGet nomi per i feed esterni all'organizzazione o alla raccolta. Per i feed in questa organizzazione o raccolta, lasciare vuoto questo campo; le credenziali della compilazione vengono usate automaticamente.
Opzioni di controllo attività
Tutte le attività hanno opzioni di controllo oltre ai relativi input di attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.
Variabili di output
Nessuno.
Osservazioni
Importante
Questa attività è compatibile solo con NuGet >= 4.8.0.5385, dotnet >= 6 o MSBuild >= 15.8.166.59604.
Quali strumenti sono compatibili con questa attività?
Questa attività configura gli strumenti che supportano plug-in multipiattaforma NuGet. Gli strumenti includono attualmente nuget.exe, dotnet e versioni recenti di MSBuild con supporto predefinito per il ripristino di pacchetti NuGet.
In particolare, questa attività configurerà:
- nuget.exe (versione 4.8.5385 o successiva)
- dotnet / .NET 6 SDK o superiore (una versione precedente di questo compito, NuGetAuthenticateV0, richiede .NET Core 2.1, che non è più supportata)
- MSBuild (versione 15.8.166.59604 o successiva)
Se si verificano problemi, è consigliabile eseguire l'aggiornamento alla versione stabile più recente.
Si verificano errori di annullamento di un'attività durante il ripristino del pacchetto. Cosa dovrei fare?
Problemi noti in NuGet e nel Azure Artifacts Credential Provider possono causare questo tipo di errore, e aggiornare all'ultimo Nuget può aiutare.
Un problema noto in alcune versioni di nuget/dotnet può causare questo errore, in particolare durante ripristini di grandi dimensioni nei computer con vincoli di risorse. Questo problema è stato risolto in NuGet 5.2 e .NET Core SDK 2.1.80X e 2.2.40X. Se si usa una versione precedente, provare ad aggiornare la versione di NuGet o dotnet. Il compito .NET Core Tool Installer può essere utilizzato per installare una versione più recente dell'SDK .NET Core.
Sono noti anche problemi con il Azure Artifacts Credential Provider (installato da questo compito), tra cui artefacts-credprovider/#77 e artefacts-credprovider/#108. Se si verificano questi problemi, assicurarsi di avere il provider di credenziali più recente impostando il forceReinstallCredentialProvider di input su true nell'attività Autenticazione NuGet. Questa impostazione garantisce anche che il provider di credenziali venga aggiornato automaticamente man mano che vengono risolti i problemi.
Se nessuna delle due soluzioni risolve il problema, abilita Plugin Diagnostic Logging e segnala il problema a NuGet e al Fornitore di Credentiali Azure Artifacts.
In che modo questa attività è diversa dalle attività NuGetCommand e DotNetCoreCLI?
Questo compito configura nuget.exe, dotnet e MSBuild per autenticarsi con Azure Artifacts o altri repository che richiedono autenticazione. Dopo l'esecuzione di questa attività, è quindi possibile richiamare gli strumenti in un passaggio successivo (direttamente o tramite uno script) per ripristinare o eseguire il push dei pacchetti.
I compiti NuGetCommand e DotNetCoreCLI richiedono l'uso del task per ripristinare o inviare pacchetti, poiché l'autenticazione di Azure Artifacts è configurata solo durante la durata della durata del task. Ciò può impedire il ripristino o il push dei pacchetti all'interno dello script. Può anche impedire il passaggio di argomenti specifici della riga di comando allo strumento.
L'attività NuGetAuthenticate è il modo consigliato per usare i feed autenticati all'interno di una pipeline.
Quando nella pipeline è necessario eseguire questa attività?
Questo compito deve essere eseguito prima che tu utilizzi uno strumento NuGet per ripristinare o inviare pacchetti a una sorgente di pacchetti autenticata come Azure Artifacts. Non esistono altri requisiti di ordinamento. Ad esempio, questo compito può essere eseguito in sicurezza sia prima che dopo un installatore di NuGet o .NET Core.
Come si configura un'origine del pacchetto NuGet che usa ApiKey ("chiavi API NuGet"), ad esempio nuget.org?
Alcune origini di pacchetti, ad esempio nuget.org usano chiavi API per l'autenticazione durante il push dei pacchetti, anziché username/password credenziali. A causa delle limitazioni in NuGet, questa attività non può essere usata per configurare una connessione al servizio NuGet che usa una chiave API.
Invece:
- Configurare una variabile privata contenente ApiKey
- Eseguire il push del pacchetto usando
nuget push -ApiKey $(myNuGetApiKey)odotnet nuget push --api-key $(myNuGetApiKey), presupponendo che sia stata denominata la variabilemyNuGetApiKey
L'agente si trova dietro un proxy Web. NuGetAuthenticate configura nuget.exe, dotnet e MSBuild per l'uso del proxy?
No Anche se questa attività funzionerà dietro un proxy Web l'agente è stato configurato per l'uso di, non configura gli strumenti NuGet per l'uso del proxy.
A tale scopo, è possibile:
Impostare la variabile di ambiente
http_proxye, facoltativamente,no_proxysulle impostazioni proxy. Per informazioni dettagliate, vedere variabili di ambiente dell'interfaccia della riga di comando nuGet. Queste variabili sono variabili comunemente usate che possono essere usate anche da altri strumenti non NuGet (ad esempio curl).attenzione:
Le variabilihttp_proxyeno_proxyfanno distinzione tra maiuscole e minuscole nei sistemi operativi Linux e Mac e devono essere minuscole. Tentare di usare una variabile Azure Pipelines per impostare la variabile ambiente non funzionerà, poiché verrà convertita in maiuscolo. Impostare invece le variabili di ambiente nel computer dell'agente self-hosted e riavviare l'agente.Aggiungere le impostazioni proxy al file di nuget.configa livello di utente, manualmente o usando
nuget config -setcome descritto nella documentazione di riferimento nuget.config.attenzione:
Le impostazioni proxy , ad esempiohttp_proxy, devono essere aggiunte alla configurazione a livello di utente. Verranno ignorati se specificati in un file di nuget.config diverso.
Come si esegue il debug se si verificano problemi con questa attività?
Per ottenere log dettagliati dalla pipeline, aggiungere una variabile della pipeline system.debug e impostare su true.
Come funziona questa attività?
Questa attività installa il Azure Artifacts Credential Provider nella directory dei plugin NuGet se non è già installato. Imposta quindi variabili di ambiente come VSS_NUGET_URI_PREFIXES e VSS_NUGET_ACCESSTOKEN per configurare il provider di credenziali. Queste variabili rimangono impostate per la durata del processo. Durante il ripristino o il push dei pacchetti, uno strumento NuGet esegue il provider di credenziali, che usa le variabili precedenti per determinare se deve restituire le credenziali allo strumento.
Per altri dettagli, vedere la documentazione del provider di credenziali.
La pipeline deve accedere a un feed in un progetto diverso
Se la pipeline è in esecuzione in un progetto diverso da quello che ospita il feed, è necessario configurare l'altro progetto per concedere l'accesso in lettura/scrittura al servizio di compilazione. Vedi i permessi Package in Azure Pipelines per maggiori dettagli.
Questa operazione funzionerà per le esecuzioni della pipeline attivate da un fork esterno?
No Le esecuzioni di pipeline attivate da un fork esterno non hanno accesso ai segreti appropriati per l'autenticazione del feed interno. Verrà quindi visualizzato come l'attività di autenticazione ha esito positivo, ma le attività successive che richiedono l'autenticazione (ad esempio il push NuGet) avranno esito negativo con un errore lungo le righe di: ##[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)). Dopo che la richiesta pull viene unita all'origine, quindi una pipeline attivata da tale evento verrà autenticata correttamente.
Aggiornamento da NuGetAuthenticateV0 a NuGetAuthenticateV1 e ora il comando dotnet ha esito negativo con 401
Se si esegue l'aggiornamento da NuGetAuthenticateV0 a NuGetAuthenticateV1 e viene visualizzato un errore durante l'esecuzione di un comando dotnet, cercare il messaggio It was not possible to find any compatible framework version dai log. Per gli utenti dotnet, NuGetAuthenticateV1 richiede .NET 6 invece di .NET Core 2.1, che è richiesto in NuGetAuthenticateV0 e non è più supportato. Per risolvere il problema, usa il compito UseDotNet@2 prima del comando dotnet per installare .NET 6.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Esempi
Ripristinare ed eseguire il push di pacchetti NuGet all'interno dell'organizzazione
Se tutti i feed Azure Artifacts che usi sono nella stessa organizzazione della pipeline, puoi usare il task NuGetAuthenticate senza specificare input. Per i feed con ambito progetto che si trovano in un progetto diverso da quello in cui è in esecuzione la pipeline, è necessario assegnare manualmente al progetto e all'accesso del feed al servizio di compilazione del progetto della 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>
Per usare una connessione al servizio, specificare la connessione al servizio nell'input nuGetServiceConnections per l'attività Autenticazione NuGet. È quindi possibile fare riferimento alla connessione al servizio con -ApiKey AzureArtifacts in un'attività.
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
Negli esempi precedenti, OtherOrganizationFeedConnection e ThirdPartyRepositoryConnection sono i nomi delle connessioni al servizio NuGet configurate e autorizzate per l'uso nella pipeline e hanno URL corrispondenti a quelli nell'argomento della riga di comando o del nuget.config.
L'URL sorgente del pacchetto che punta a un feed Azure Artifacts può contenere o meno il progetto. Un URL per un feed con ambito progetto deve contenere il progetto e un URL per un feed con ambito organizzazione non deve contenere il progetto. Altre informazioni sui feed con ambito progetto.
Ripristinare ed eseguire il push di pacchetti NuGet all'esterno dell'organizzazione
Se usi feed Azure Artifacts di un'altra organizzazione o un repository di pacchetti autenticati di terze parti, dovrai configurare
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 e ThirdPartyRepositoryConnection sono i nomi delle connessioni al servizio NuGet configurate e autorizzate per l'uso nella pipeline e hanno URL corrispondenti a quelli nell'argomento nuget.config o della riga di comando.
L'URL sorgente del pacchetto che punta a un feed Azure Artifacts può contenere o meno il progetto. Un URL per un feed con ambito progetto deve contenere il progetto e un URL per un feed con ambito organizzazione non deve contenere il progetto. Altre informazioni sui feed con ambito progetto.
Fabbisogno
| Requisito | Descrizione |
|---|---|
| Tipi di pipeline | YAML, build classica, versione classica |
| Viene eseguito in | Agente, DeploymentGroup |
| richieste | Nessuno |
| funzionalità di | Questa attività non soddisfa alcuna richiesta di attività successive nel processo. |
| restrizioni dei comandi | Qualunque |
| variabili impostabili | Qualunque |
| Versione dell'agente | 2.144.0 o versione successiva |
| Categoria attività | Pacco |
| Requisito | Descrizione |
|---|---|
| Tipi di pipeline | YAML, build classica, versione classica |
| Viene eseguito in | Agente, DeploymentGroup |
| richieste | Nessuno |
| funzionalità di | Questa attività non soddisfa alcuna richiesta di attività successive nel processo. |
| restrizioni dei comandi | Qualunque |
| variabili impostabili | Qualunque |
| Versione dell'agente | 2.120.0 o versione successiva |
| Categoria attività | Pacco |