NuGetAuthenticate@1 - NuGet-taak verifiëren v1

NuGet-hulpprogramma's configureren voor verificatie met Azure Artifacts en andere NuGet-opslagplaatsen. Vereist NuGet >= 4.8.5385, dotnet >= 6 of MSBuild >= 15.8.166.59604.

Syntax

# 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.

Invoerwaarden

nuGetServiceConnections - Serviceverbindingsreferenties voor feeds buiten deze organisatie
string.

Optioneel. De door komma's gescheiden lijst met nuGet-serviceverbindingsnamen voor feeds buiten deze organisatie of verzameling. Voor feeds in deze organisatie of verzameling laat u dit leeg; de referenties van de build worden automatisch gebruikt.


forceReinstallCredentialProvider - Installeer de referentieprovider opnieuw, zelfs als deze al is geïnstalleerd
boolean. Standaardwaarde: false.

Optioneel. Installeert de referentieprovider opnieuw in de gebruikersprofielmap, zelfs als deze al is geïnstalleerd. Als de referentieprovider al is geïnstalleerd in het gebruikersprofiel, bepaalt de taak of deze wordt overschreven met de door de taak opgegeven referentieprovider. Hierdoor kan de referentieprovider worden bijgewerkt (of mogelijk downgraden).


Opties voor taakbeheer

Alle taken hebben naast de taakinvoer besturingsopties. Zie Opties voor besturingselementen en algemene taakeigenschappen voor 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 worden hulpprogramma's geconfigureerd 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.

Met deze taak wordt met name het volgende geconfigureerd:

  • nuget.exe (versie 4.8.5385 of hoger)
  • dotnet/.NET 6 SDK of hoger (voor een eerdere versie van deze taak, NuGetAuthenticateV0, is .NET Core 2.1 vereist, die niet meer wordt ondersteund)
  • MSBuild (versie 15.8.166.59604 of hoger)

Upgraden naar de nieuwste stabiele versie wordt aanbevolen als u problemen ondervindt.

Ik krijg de foutmelding 'Een taak is geannuleerd' tijdens het herstellen van een pakket. Wat moet ik doen?

Bekende problemen in NuGet en in de Referentieprovider van Azure Artifacts kunnen dit type fout veroorzaken. Het bijwerken 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, kunt u proberen uw versie van NuGet of dotnet bij te werken. 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 Artifacts-referentieprovider (geïnstalleerd door deze taak), waaronder artefacten-credprovider/#77 en artifacts-credprovider/#108. Als u deze problemen ondervindt, controleert u of u de meest recente referentieprovider hebt door de invoer forceReinstallCredentialProvider in te true stellen op in de NuGet-verificatietaak. Deze instelling zorgt er ook voor dat uw referentieprovider automatisch wordt bijgewerkt wanneer problemen worden opgelost.

Als geen van de bovenstaande opties het probleem oplost, schakelt u Diagnostische logboekregistratie van invoegtoepassingen in en meldt u het probleem aan NuGet en de Referentieprovider van Azure Artifacts.

Hoe verschilt deze taak van de taken NuGetCommand en DotNetCoreCLI?

Met deze taak configureert u nuget.exe, dotnet en MSBuild voor verificatie met Azure Artifacts of andere opslagplaatsen waarvoor verificatie is vereist. 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 dat de taak wordt gebruikt om pakketten te herstellen of te pushen, omdat verificatie voor Azure Artifacts alleen wordt geconfigureerd binnen de levensduur van de taak. Dit kan voorkomen dat u pakketten binnen 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 binnen een pijplijn te gebruiken.

Wanneer in mijn pijplijn moet ik deze taak uitvoeren?

Deze taak moet worden uitgevoerd voordat u een NuGet-hulpprogramma gebruikt om pakketten te herstellen of te pushen naar een geverifieerde pakketbron, zoals Azure Artifacts. Er zijn geen andere volgordevereisten. Deze taak kan bijvoorbeeld veilig worden uitgevoerd vóór of na een installatietaak voor een NuGet- of .NET Core-hulpprogramma.

Hoe kan ik een NuGet-pakketbron configureren 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 username/password van referenties. Vanwege beperkingen in NuGet kan deze taak niet worden gebruikt voor het instellen van een NuGet-serviceverbinding die gebruikmaakt van een API-sleutel.

In plaats daarvan:

  1. Een geheime variabele configureren die de ApiKey bevat
  2. Voer de pakketpush uit met of nuget push -ApiKey $(myNuGetApiKey)dotnet nuget push --api-key $(myNuGetApiKey), ervan uitgaande dat u de variabele de naam hebt myNuGetApiKey

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 die uw agent is geconfigureerd voor gebruik, worden er geen NuGet-hulpprogramma's geconfigureerd voor het gebruik van de proxy.

Hiervoor kunt u het volgende doen:

  • Stel de omgevingsvariabele http_proxy en desgewenst in no_proxy op uw proxy-instellingen. Zie NuGet CLI-omgevingsvariabelen voor meer informatie. Deze variabelen zijn veelgebruikte variabelen die ook door andere niet-NuGet-hulpprogramma's (bijvoorbeeld curl) kunnen worden gebruikt.

    Voorzichtigheid:
    De http_proxy variabelen en no_proxy zijn hoofdlettergevoelig op Linux- en Mac-besturingssystemen en moeten kleine letters bevatten. Een poging om een Azure Pipelines-variabele te gebruiken om de omgevingsvariabele in te stellen, werkt niet, omdat deze wordt geconverteerd 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 -set zoals beschreven in de nuget.config referentiedocumentatie .

    Voorzichtigheid:
    De proxy-instellingen (zoals http_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 system.debug toe en stelt u in op true.

Hoe werkt deze taak?

Met deze taak wordt de Referentieprovider van Azure Artifacts geïnstalleerd in de map NuGet-invoegtoepassingen als deze nog niet is geïnstalleerd. Vervolgens worden omgevingsvariabelen ingesteld, zoals VSS_NUGET_URI_PREFIXES en VSS_NUGET_ACCESSTOKEN om de referentieprovider te configureren. Deze variabelen blijven ingesteld voor de levensduur van de taak. Bij het herstellen of pushen van pakketten voert een NuGet-hulpprogramma de referentieprovider uit, die de bovenstaande variabelen gebruikt om te bepalen of referenties moeten worden geretourneerd naar het hulpprogramma.

Zie de documentatie van de referentieprovider voor meer informatie.

Mijn pijplijn moet toegang hebben 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 zo instellen dat lees-/schrijftoegang wordt verleend aan de buildservice. Zie Pakketmachtigingen in Azure Pipelines voor meer informatie.

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 zoals: ##[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 met de oorsprong, wordt een pijplijn die wordt geactiveerd vanuit die gebeurtenis correct geverifieerd.

Ik heb een update uitgevoerd van NuGetAuthenticateV0 naar NuGetAuthenticateV1 en nu mislukt mijn dotnet-opdracht met 401

Als u bijwerkt van NuGetAuthenticateV0 naar NuGetAuthenticateV1 en een foutmelding krijgt bij het uitvoeren van een dotnet-opdracht, zoekt u het bericht It was not possible to find any compatible framework version in de logboeken. Voor dotnet-gebruikers vereist NuGetAuthenticateV1 .NET 6 in plaats van .NET Core 2.1. Dit is vereist in NuGetAuthenticateV0 en wordt niet meer ondersteund. Als u het probleem wilt oplossen, gebruikt u de taak UseDotNet@2 vóór de opdracht dotnet 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 Artifacts-feeds die u gebruikt zich in dezelfde organisatie bevinden als uw pijplijn, kunt u de taak NuGetAuthenticate gebruiken zonder invoer op te geven. Voor projectfeeds 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 pijplijnproject.

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 taak NuGet-verificatie. Vervolgens kunt u in een taak verwijzen naar de serviceverbinding -ApiKey AzureArtifacts .

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 OtherOrganizationFeedConnection zijn 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 Artifacts-feed verwijst, kan het project wel of niet bevatten. Een URL voor een feed met projectbereik moet het project bevatten en een URL voor een feed met organisatiebereik mag het project niet bevatten. Meer informatie over projectbereikfeeds.

NuGet-pakketten buiten uw organisatie herstellen en pushen

Als u Azure Artifacts-feeds van een andere organisatie gebruikt of een geverifieerde pakketopslagplaats van derden gebruikt, moet u NuGet-serviceverbindingen instellen en deze opgeven in de nuGetServiceConnections invoer. Feeds binnen uw Azure Artifacts-organisatie worden ook automatisch geverifieerd.

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 Artifacts-feed verwijst, kan het project wel of niet bevatten. Een URL voor een feed met projectbereik moet het project bevatten en een URL voor een feed met organisatiebereik mag het project niet bevatten. Meer informatie over projectbereikfeeds.

Vereisten

Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
Eisen Geen
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie 2.144.0 of hoger
Taakcategorie Pakket
Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
Eisen Geen
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie 2.120.0 of hoger
Taakcategorie Pakket