Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Configureer NuGet-tools om te authenticeren met Azure-artefacten en andere NuGet-repositories. Vereist NuGet >= 4.8.5385, dotnet >= 6 of MSBuild >= 15.8.166.59604.
Syntaxis
# 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.
Ingangen
azureDevOpsServiceConnection
-
'Azure DevOps' Serviceverbinding
Invoeralias: workloadIdentityServiceConnection.
string. Facultatief. Gebruiken wanneer nuGetServiceConnections == ''.
Als dit is ingesteld, feedUrl is het vereist. Alle andere invoer wordt genegeerd.
feedUrl
-
Azure-artefacten URL
string. Facultatief. Gebruiken wanneer workloadIdentityServiceConnection != ''.
Als dit is ingesteld, workloadIdentityServiceConnection is het vereist. Alle andere invoer wordt genegeerd. Niet compatibel met nuGetServiceConnections. De feed-URL moet in het NuGet-serviceindexformaat staan: https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json.
forceReinstallCredentialProvider
-
de referentieprovider opnieuw installeren, zelfs als deze al is geïnstalleerd
boolean. Standaardwaarde: false.
Als de credentialprovider al is geïnstalleerd in het gebruikersprofiel, bepaalt dit of deze is overschreven door de door de taak geleverde credentialprovider. Hiermee kunt u de referentieprovider upgraden (of mogelijk downgraden).
nuGetServiceConnections
-
serviceverbindingsreferenties voor feeds buiten deze organisatie
string.
Facultatief. De door komma's gescheiden lijst met NuGet-serviceverbinding namen voor feeds buiten deze organisatie of verzameling. Laat dit leeg voor feeds in deze organisatie of verzameling; de referenties van de build worden automatisch gebruikt.
Opties voor taakbeheer
Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor meer informatie.
Uitvoervariabelen
Geen.
Opmerkingen
Belangrijk
Deze taak is alleen compatibel met NuGet >= 4.8.0.5385, dotnet >= 6 of MSBuild >= 15.8.166.59604.
Welke hulpprogramma's zijn compatibel met deze taak?
Met deze taak configureert u hulpprogramma's die ondersteuning bieden voor Platformoverschrijdende invoegtoepassingen van NuGet. De hulpprogramma's omvatten momenteel nuget.exe, dotnet en recente versies van MSBuild met ingebouwde ondersteuning voor het herstellen van NuGet-pakketten.
Deze taak configureert met name:
- nuget.exe (versie 4.8.5385 of hoger)
- dotnet / .NET 6 SDK of hoger (een eerdere versie van deze taak, NuGetAuthenticateV0, vereist .NET Core 2.1, dat niet langer wordt ondersteund)
- MSBuild (versie 15.8.166.59604 of hoger)
Upgraden naar de nieuwste stabiele versie wordt aanbevolen als u problemen ondervindt.
Ik krijg 'Er is een taak geannuleerd' tijdens het herstellen van een pakket. Wat moet ik doen?
Bekende problemen in NuGet en in de Azure-artefacten Credential Provider kunnen dit type fout veroorzaken, en updaten naar de nieuwste NuGet kan helpen.
Een bekend probleem in sommige versies van nuget/dotnet kan deze fout veroorzaken, met name tijdens grote herstelbewerkingen op machines met beperkte resources. Dit probleem is opgelost in NuGet 5.2 en .NET Core SDK 2.1.80X en 2.2.40X. Als u een oudere versie gebruikt, voert u een upgrade uit van uw versie van NuGet of dotnet. De taak .NET Core Tool Installer kan worden gebruikt om een nieuwere versie van de .NET Core SDK te installeren.
Er zijn ook bekende problemen met de Azure-artefacten Credential Provider (geïnstalleerd door deze taak), waaronder artifacts-credprovider/#77 en artifacts-credprovider/#108. Als u deze problemen ondervindt, moet u ervoor zorgen dat u de meest recente referentieprovider hebt door de invoer-forceReinstallCredentialProvider in te stellen op true in de NuGet-verificatietaak. Deze instelling zorgt er ook voor dat uw referentieprovider automatisch wordt bijgewerkt wanneer problemen worden opgelost.
Als geen van bovenstaande het probleem oplost, schakel dan Plugin Diagnostic Logging in en meld het probleem bij NuGet en de Azure-artefacten Credential Provider.
Hoe verschilt deze taak van de Taken NuGetCommand en DotNetCoreCLI?
Deze taak configureert nuget.exe, dotnet en MSBuild om te authenticeren met Azure-artefacten of andere repositories die authenticatie vereisen. Nadat deze taak is uitgevoerd, kunt u de hulpprogramma's in een latere stap (rechtstreeks of via een script) aanroepen om pakketten te herstellen of te pushen.
De taken NuGetCommand en DotNetCoreCLI vereisen het gebruik van de taak om pakketten te herstellen of te pushen, aangezien authenticatie voor Azure-artefacten alleen binnen de levensduur van de taak wordt geconfigureerd. Hierdoor kunt u voorkomen dat u pakketten in uw eigen script herstelt of pusht. Het kan ook voorkomen dat u specifieke opdrachtregelargumenten doorgeeft aan het hulpprogramma.
De Taak NuGetAuthenticate is de aanbevolen manier om geverifieerde feeds in een pijplijn te gebruiken.
Wanneer moet ik deze taak uitvoeren in mijn pijplijn?
Deze taak moet worden uitgevoerd voordat je een NuGet-tool gebruikt om pakketten te herstellen of te pushen naar een geauthenticeerde pakketbron zoals Azure-artefacten. Er zijn geen andere bestelvereisten. Deze taak kan bijvoorbeeld veilig draaien vóór of na een NuGet- of .NET Core-toolinstallertaak.
Hoe configureer ik een NuGet-pakketbron die gebruikmaakt van ApiKey ('NuGet API-sleutels'),, zoals nuget.org?
Sommige pakketbronnen, zoals nuget.org API-sleutels gebruiken voor verificatie bij het pushen van pakketten, in plaats van username/password referenties. Vanwege beperkingen in NuGet kan deze taak niet worden gebruikt om een NuGet-serviceverbinding in te stellen die gebruikmaakt van een API-sleutel.
In plaats van:
- Een geheime variabele configureren die de ApiKey bevat
- Voer de pakketpush uit met behulp van
nuget push -ApiKey $(myNuGetApiKey)ofdotnet nuget push --api-key $(myNuGetApiKey), ervan uitgaande dat u de variabelemyNuGetApiKey
Mijn agent bevindt zich achter een webproxy. Stelt NuGetAuthenticate nuget.exe, dotnet en MSBuild in om mijn proxy te gebruiken?
Nee. Hoewel deze taak zelf werkt achter een webproxy uw agent is geconfigureerd voor het gebruik van, worden NuGet-hulpprogramma's niet geconfigureerd voor het gebruik van de proxy.
Hiervoor kunt u het volgende doen:
Stel de omgevingsvariabele in
http_proxyenno_proxydesgewenst op uw proxy-instellingen. Zie NuGet CLI-omgevingsvariabelen voor meer informatie. Deze variabelen worden vaak gebruikt voor variabelen die andere niet-NuGet-hulpprogramma's (bijvoorbeeld curl) ook kunnen gebruiken.Waarschuwing:
De variabelenhttp_proxyenno_proxyzijn hoofdlettergevoelig op Linux- en Mac-besturingssystemen en moeten kleine letters bevatten. Het proberen te gebruiken van een Azure-pipelines-variabele om de omgevingsvariabele in te stellen werkt niet, omdat deze dan wordt omgezet naar hoofdletters. Stel in plaats daarvan de omgevingsvariabelen in op de computer van de zelf-hostende agent en start de agent opnieuw op.Voeg de proxy-instellingen toe aan het nuget.config-bestand op gebruikersniveau, handmatig of met behulp van
nuget config -setzoals beschreven in de nuget.config referentiedocumentatie.Waarschuwing:
De proxy-instellingen (zoalshttp_proxy) moeten worden toegevoegd aan de configuratie op gebruikersniveau. Ze worden genegeerd als deze zijn opgegeven in een ander nuget.config-bestand.
Hoe kan ik fouten opsporen als ik problemen heb met deze taak?
Als u uitgebreide logboeken uit de pijplijn wilt ophalen, voegt u een pijplijnvariabele toe system.debug en stelt u deze in op true.
Hoe werkt deze taak?
Deze taak installeert de Azure-artefacten Credential Provider in de NuGet plugins-map als deze nog niet geïnstalleerd is. Vervolgens worden omgevingsvariabelen, zoals VSS_NUGET_URI_PREFIXES en VSS_NUGET_ACCESSTOKEN ingesteld om de referentieprovider te configureren. Deze variabelen blijven ingesteld voor de levensduur van de taak. Wanneer u pakketten herstelt of pusht, voert een NuGet-hulpprogramma de referentieprovider uit. Hierbij worden de bovenstaande variabelen gebruikt om te bepalen of er referenties naar het hulpprogramma moeten worden geretourneerd.
Raadpleeg de documentatie van de referentieprovider voor meer informatie.
Mijn pijplijn moet toegang krijgen tot een feed in een ander project
Als de pijplijn wordt uitgevoerd in een ander project dan het project dat als host fungeert voor de feed, moet u het andere project instellen om lees-/schrijftoegang te verlenen aan de buildservice. Zie Pakketpermissies in Azure-pipelines voor meer details.
Werkt dit voor pijplijnuitvoeringen die worden geactiveerd vanuit een externe fork?
Nee. Pijplijnuitvoeringen die worden geactiveerd vanuit een externe fork hebben geen toegang tot de juiste geheimen voor interne feedverificatie. Het lijkt er dus op dat de verificatietaak is geslaagd, maar volgende taken waarvoor verificatie is vereist (zoals Nuget-push) mislukken met een fout op basis van: ##[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)). Nadat de pull-aanvraag is samengevoegd in de oorsprong, wordt een pijplijn die vanuit die gebeurtenis wordt geactiveerd, correct geverifieerd.
Ik heb bijgewerkt van NuGetAuthenticateV0 naar NuGetAuthenticateV1 en nu mislukt mijn dotnet-opdracht met 401
Als u bijwerkt van NuGetAuthenticateV0 naar NuGetAuthenticateV1 en een fout krijgt bij het uitvoeren van een dotnet-opdracht, zoekt u het bericht It was not possible to find any compatible framework version uit de logboeken. Voor dotnet-gebruikers vereist NuGetAuthenticateV1 .NET 6 in plaats van .NET Core 2.1, wat vereist is in NuGetAuthenticateV0 en niet langer wordt ondersteund. Om het probleem op te lossen, gebruik je de taak UseDotNet@2 vóór het dotnet-commando om .NET 6 te installeren.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Voorbeelden
NuGet-pakketten binnen uw organisatie herstellen en pushen
Als alle Azure-artefacten-feeds die je gebruikt in dezelfde organisatie als je pipeline zitten, kun je de NuGetAuthenticate-taak gebruiken zonder invoer op te geven. Voor feeds met projectbereik die zich in een ander project bevinden dan waarin de pijplijn wordt uitgevoerd, moet u het project en de feed handmatig toegang geven tot de buildservice van het project van de pijplijn.
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>
Als u een serviceverbinding wilt gebruiken, geeft u de serviceverbinding op in de nuGetServiceConnections invoer voor de NuGet-verificatietaak. U kunt vervolgens verwijzen naar de serviceverbinding met -ApiKey AzureArtifacts in een taak.
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
In de bovenstaande voorbeelden zijn OtherOrganizationFeedConnection en ThirdPartyRepositoryConnection de namen van NuGet-serviceverbindingen die zijn geconfigureerd en geautoriseerd voor gebruik in uw pijplijn, en URL's hebben die overeenkomen met die in uw nuget.config of opdrachtregelargument.
De pakketbron-URL die naar een Azure-artefacten-feed wijst, kan het project wel of niet bevatten. Een URL voor een projectbereikfeed moet het project bevatten en een URL voor een binnen het bereik van een organisatiefeed mag het project niet bevatten. Meer informatie over projectbereikfeeds.
NuGet-pakketten buiten uw organisatie herstellen en pushen
Als je Azure-artefacten feeds van een andere organisatie gebruikt of een door derden geauthenticeerde pakketrepository gebruikt, moet je NuGet serviceverbindingen instellen en deze specificeren in de nuGetServiceConnections input.
Feeds binnen je Azure-artefacten-organisatie worden ook automatisch geauthenticeerd.
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 en ThirdPartyRepositoryConnection zijn de namen van NuGet-serviceverbindingen die zijn geconfigureerd en geautoriseerd voor gebruik in uw pijplijn, en URL's hebben die overeenkomen met die in uw nuget.config of opdrachtregelargument.
De pakketbron-URL die naar een Azure-artefacten-feed wijst, kan het project wel of niet bevatten. Een URL voor een projectbereikfeed moet het project bevatten en een URL voor een binnen het bereik van een organisatiefeed mag het project niet bevatten. Meer informatie over projectbereikfeeds.
Eisen
| Eis | Beschrijving |
|---|---|
| Pijplijntypen | YAML, klassieke build, klassieke release |
| Wordt uitgevoerd op | Agent, DeploymentGroup |
| eisen | Geen |
| mogelijkheden | Deze taak voldoet niet aan de vereisten voor volgende taken in de taak. |
| opdrachtbeperkingen | Enig |
| variabelen instellen | Enig |
| Agentversie | 2.144.0 of hoger |
| Taakcategorie | Pak |
| Eis | Beschrijving |
|---|---|
| Pijplijntypen | YAML, klassieke build, klassieke release |
| Wordt uitgevoerd op | Agent, DeploymentGroup |
| eisen | Geen |
| mogelijkheden | Deze taak voldoet niet aan de vereisten voor volgende taken in de taak. |
| opdrachtbeperkingen | Enig |
| variabelen instellen | Enig |
| Agentversie | 2.120.0 of hoger |
| Taakcategorie | Pak |