Delen via


NuGetAuthenticate@1 - NuGet-verificatie v1-taak

Configureer NuGet-hulpprogramma's voor verificatie met Azure Artifacts en andere NuGet-opslagplaatsen. 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:
    #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

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

Facultatief. 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. 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, 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 'Er is een taak 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 en 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.2en .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 .NET Core Tool Installer taak kan worden gebruikt om een nieuwere versie van de .NET Core SDK te installeren.

Er zijn ook bekende problemen met de Referentieprovider van Azure Artifacts (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 de bovenstaande oplossingen het probleem oplost, schakelt u diagnostische logboekregistratie van invoegtoepassing in en meldt u het probleem aan NuGet- en de Azure Artifacts Credential Provider.

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.

Voor de NuGetCommand- en DotNetCoreCLI-taken is het gebruik van de taak vereist om pakketten te herstellen of te pushen, omdat verificatie voor Azure Artifacts alleen binnen de levensduur van de taak is 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 u een NuGet-hulpprogramma gebruikt om pakketten te herstellen of te pushen naar een geverifieerde pakketbron, zoals Azure Artifacts. Er zijn geen andere bestelvereisten. Deze taak kan bijvoorbeeld veilig worden uitgevoerd vóór of na een NuGet- of .NET Core-hulpprogrammainstallatietaak.

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:

  1. Een geheime variabele configureren die de ApiKey bevat
  2. Voer de pakketpush uit met behulp van nuget push -ApiKey $(myNuGetApiKey) of dotnet nuget push --api-key $(myNuGetApiKey), ervan uitgaande dat u de variabele 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 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_proxy en no_proxy desgewenst 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 variabelen http_proxy en no_proxy zijn hoofdlettergevoelig op Linux- en Mac-besturingssystemen en moeten kleine letters bevatten. Het gebruik van een Azure Pipelines-variabele 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.

    Waarschuwing:
    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 toe system.debug en stelt u deze in op true.

Hoe werkt deze taak?

Met deze taak wordt de Azure Artifacts Credential Provider geïnstalleerd in de map nuGet-invoegtoepassingen als deze nog niet is geïnstalleerd. 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 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 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. Dit is vereist in NuGetAuthenticateV0 en wordt niet meer ondersteund. Als u het probleem wilt oplossen, gebruikt u de UseDotNet@2 taak vóór de dotnet-opdracht 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 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 bron-URL van het pakket die verwijst naar een Azure Artifacts-feed kan het project al dan 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 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 bron-URL van het pakket die verwijst naar een Azure Artifacts-feed kan het project al dan 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