Sdílet prostřednictvím


NuGetAuthenticate@1 – Úloha ověření NuGetu v1

Nakonfigurujte nástroje NuGet pro ověřování pomocí Azure Artifacts a dalších úložišť NuGet. Vyžaduje NuGet >= 4.8.5385, dotnet >= 6 nebo 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:
    #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.

Vstupy

forceReinstallCredentialProvider - přeinstalovat zprostředkovatele přihlašovacích údajů, i když už je nainstalovaný
boolean. Výchozí hodnota: false.

Volitelný. Přeinstaluje zprostředkovatele přihlašovacích údajů do adresáře profilu uživatele, i když už je nainstalovaný. Pokud je zprostředkovatel přihlašovacích údajů již nainstalován v profilu uživatele, úloha určí, zda je přepsána poskytovatelem přihlašovacích údajů zadaným úkolem. To může upgradovat (nebo potenciálně downgradovat) zprostředkovatele přihlašovacích údajů.


nuGetServiceConnections - přihlašovací údaje pro připojení služby pro informační kanály mimo tuto organizaci
string.

Volitelný. Seznam připojení služby NuGet oddělený čárkami názvy informačních kanálů mimo tuto organizaci nebo kolekci. U informačních kanálů v této organizaci nebo kolekci ponechte toto prázdné; přihlašovací údaje sestavení se používají automaticky.


Možnosti řízení úkolů

Všechny úkoly mají kromě vstupů úkolů také možnosti řízení. Další informace naleznete v tématu Možnosti ovládacího prvku a běžné vlastnosti úloh.

Výstupní proměnné

Žádný.

Poznámky

Důležitý

Tato úloha je kompatibilní pouze s nuGet >= 4.8.0.5385, dotnet >= 6 nebo MSBuild >= 15.8.166.59604.

Jaké nástroje jsou kompatibilní s touto úlohou?

Tato úloha konfiguruje nástroje, které podporují moduly plug-in NuGet pro různé platformy. Nástroje aktuálně zahrnují nuget.exe, dotnet a nejnovější verze nástroje MSBuild s integrovanou podporou obnovení balíčků NuGet.

Konkrétně tato úloha nakonfiguruje:

  • nuget.exe (verze 4.8.5385 nebo novější)
  • dotnet / .NET 6 SDK nebo novější (předchozí verze této úlohy NuGetAuthenticateV0, vyžaduje .NET Core 2.1, která se už nepodporuje).
  • MSBuild (verze 15.8.166.59604 nebo vyšší)

Pokud narazíte na nějaké problémy, doporučujeme upgradovat na nejnovější stabilní verzi.

Při obnovení balíčku se zobrazí chyby "Úloha byla zrušena". Co mám dělat?

Známé problémy v NuGetu a poskytovateli přihlašovacích údajů Azure Artifacts můžou způsobit tento typ chyby a aktualizace na nejnovější nuget může pomoct.

známý problém v některých verzích nuget/dotnet může způsobit tuto chybu, zejména při velkých obnoveních na počítačích s omezenými prostředky. Tento problém je opravený v NuGetu 5.2a sadě .NET Core SDK 2.1.80X a 2.2.40X. Pokud používáte starší verzi, zkuste upgradovat verzi NuGetu nebo dotnetu. Instalační program nástroje .NET Core lze použít k instalaci novější verze sady .NET Core SDK.

Existují také známé problémy se zprostředkovatelem přihlašovacích údajů Azure Artifacts (nainstalovaným touto úlohou), včetně artifacts-credprovider/#77 a artifacts-credprovider/#108. Pokud narazíte na tyto problémy, ujistěte se, že máte nejnovějšího poskytovatele přihlašovacích údajů nastavením vstupního forceReinstallCredentialProvider na true v úloze Ověření NuGet. Toto nastavení také zajistí, aby se poskytovatel přihlašovacích údajů automaticky aktualizoval při řešení problémů.

Pokud ani jedna z výše uvedených možností problém nevyřeší, povolte protokolování diagnostiky modulu plug-in a nahlaste problém NuGet a poskytovatele přihlašovacích údajů Azure Artifacts.

Jak se tento úkol liší od úkolů NuGetCommand a DotNetCoreCLI?

Tato úloha konfiguruje nuget.exe, dotnet a MSBuild pro ověřování pomocí Azure Artifacts nebo jiných úložišť, která vyžadují ověření. Po spuštění této úlohy pak můžete vyvolat nástroje v pozdějším kroku (buď přímo, nebo prostřednictvím skriptu) pro obnovení nebo nabízení balíčků.

Úlohy NuGetCommand a DotNetCoreCLI vyžadují použití úlohy k obnovení nebo nabízení balíčků, protože ověřování do Azure Artifacts se konfiguruje pouze během doby života úlohy. To vám může zabránit v obnovení nebo nasdílení balíčků v rámci vlastního skriptu. Může vám také zabránit v předávání konkrétních argumentů příkazového řádku do nástroje.

Úloha NuGetAuthenticate se doporučuje použít ověřené informační kanály v rámci kanálu.

Kdy mám tuto úlohu spustit v kanálu?

Tato úloha se musí spustit před použitím nástroje NuGet k obnovení nebo nabízení balíčků do ověřeného zdroje balíčku, jako je Azure Artifacts. Neexistují žádné další požadavky na řazení. Tato úloha může například bezpečně spustit před nebo po úloze instalačního programu nástroje NuGet nebo .NET Core.

Jak nakonfiguruji zdroj balíčku NuGet, který používá klíč rozhraní ApiKey (klíče rozhraní NuGet API), například nuget.org?

Některé zdroje balíčků, jako je nuget.org, používají klíče rozhraní API pro ověřování při nabízení balíčků místo username/password přihlašovacích údajů. Kvůli omezením v NuGetu nelze tuto úlohu použít k nastavení připojení služby NuGet, které používá klíč rozhraní API.

Namísto:

  1. Konfigurace proměnné tajného kódu obsahující klíč apiKey
  2. Proveďte nabízení balíčku pomocí nuget push -ApiKey $(myNuGetApiKey) nebo dotnet nuget push --api-key $(myNuGetApiKey)za předpokladu, že jste proměnnou pojmenovali myNuGetApiKey

Můj agent je za webovým proxy serverem. Nastaví NuGetAuthenticate nuget.exe, dotnet a MSBuild pro použití mého proxy serveru?

Ne. I když tato úloha bude fungovat za webovým proxy serverem byl váš agent nakonfigurován tak, aby používal, nenakonfiguruje nástroje NuGet pro použití proxy serveru.

Můžete to udělat takto:

  • Nastavte proměnnou prostředí http_proxy a volitelně no_proxy na nastavení proxy serveru. Podrobnosti najdete v proměnných prostředí rozhraní příkazového řádku NuGet. Tyto proměnné se běžně používají proměnné, které mohou používat i jiné nástroje než NuGet (např. curl).

    upozornění:
    Proměnné http_proxy a no_proxy v operačních systémech Linux a Mac rozlišují velká a malá písmena. Pokus o použití proměnné Azure Pipelines k nastavení proměnné prostředí nebude fungovat, protože se převede na velká písmena. Místo toho nastavte proměnné prostředí na počítači agenta v místním prostředí a restartujte agenta.

  • Přidejte nastavení proxy serveru do souboru nuget.config na úrovni uživatele, a to buď ručně, nebo pomocí nuget config -set, jak je popsáno v referenční dokumentacinuget.config.

    upozornění:
    Nastavení proxy serveru (například http_proxy) musí být přidáno do konfigurace na úrovni uživatele. Budou ignorovány, pokud jsou zadány v jiném nuget.config souboru.

Jak můžu ladit, pokud mám s touto úlohou problémy?

Pokud chcete získat podrobné protokoly z kanálu, přidejte proměnnou kanálu system.debug a nastavte true.

Jak tento úkol funguje?

Tato úloha nainstaluje zprostředkovatele přihlašovacích údajů Azure Artifacts do adresáře modulů plug-in NuGet, pokud ještě není nainstalovaný. Potom nastaví proměnné prostředí, jako jsou VSS_NUGET_URI_PREFIXES a VSS_NUGET_ACCESSTOKEN, aby nakonfigurovali zprostředkovatele přihlašovacích údajů. Tyto proměnné zůstanou nastavené po celou dobu životnosti úlohy. Při obnovování nebo nabízení balíčků nástroj NuGet spustí zprostředkovatele přihlašovacích údajů, který pomocí výše uvedených proměnných určí, jestli má vrátit přihlašovací údaje zpět do nástroje.

Další podrobnosti najdete v dokumentaci k poskytovateli přihlašovacích údajů.

Kanál potřebuje přístup k informačnímu kanálu v jiném projektu

Pokud kanál běží v jiném projektu, než je projekt, který je hostitelem informačního kanálu, musíte nastavit druhý projekt tak, aby udělil službě sestavení přístup pro čtení a zápis. Další podrobnosti najdete v tématu Oprávnění balíčku ve službě Azure Pipelines.

Bude to fungovat u spuštění kanálu, která se aktivují z externího forku?

Ne. Spuštění kanálu aktivovaná z externího forku nemají přístup k správným tajným kódům pro interní ověřování informačního kanálu. Zobrazí se tedy, jako by úloha ověření proběhla úspěšně, ale následné úlohy, které vyžadují ověření (například nabízení NuGet), selžou s chybou v řádcích: ##[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)). Po sloučení žádosti o přijetí změn do zdroje se kanál aktivovaný z této události ověří správně.

Aktualizoval(a) jsem z NuGetAuthenticateV0 na NuGetAuthenticateV1 a teď můj příkaz dotnet selže s 401

Pokud aktualizujete z NuGetAuthenticateV0 na NuGetAuthenticateV1 a zobrazí se chyba při spuštění příkazu dotnet, vyhledejte zprávu It was not possible to find any compatible framework version z protokolů. Pro uživatele dotnet nuGetAuthenticateV1 vyžaduje .NET 6 místo .NET Core 2.1, který je vyžadován v NuGetAuthenticateV0 a už se nepodporuje. Pokud chcete tento problém vyřešit, pomocí úlohy UseDotNet@2 před příkazem dotnet nainstalujte .NET 6.

- task: UseDotNet@2
  displayName: Use .NET 6 SDK
  inputs:
    packageType: sdk
    version: 6.x

Příklady

Obnovení a nabízení balíčků NuGet v rámci vaší organizace

Pokud jsou všechny kanály Azure Artifacts, které používáte, ve stejné organizaci jako kanál, můžete použít úlohu NuGetAuthenticate bez zadání jakýchkoli vstupů. Pro kanály s vymezeným oborem projektu, které jsou v jiném projektu, než ve kterém kanál běží, musíte projekt a informační kanál udělit přístup ke službě sestavení kanálu.

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>

Chcete-li použít připojení služby, zadejte připojení služby v nuGetServiceConnections vstup pro úlohu Ověření NuGet. Potom můžete odkazovat na připojení služby k -ApiKey AzureArtifacts v úloze.

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

Ve výše uvedených příkladech jsou OtherOrganizationFeedConnection a ThirdPartyRepositoryConnectionnázvy připojení služby NuGet nakonfigurovaných a autorizovaných pro použití v kanálu a mají adresy URL, které odpovídají adresám URL v argumentu nuget.config nebo příkazového řádku.

Zdrojová adresa URL balíčku odkazující na informační kanál Azure Artifacts může nebo nemusí obsahovat projekt. Adresa URL pro kanál s vymezeným oborem projektu musí obsahovat projekt a adresa URL kanálu s oborem organizace nesmí obsahovat projekt. Přečtěte si další informace o informačních kanálech s vymezeným oborem projektu.

Obnovení a nabízení balíčků NuGet mimo vaši organizaci

Pokud používáte informační kanály Azure Artifacts z jiné organizace nebo používáte úložiště ověřených balíčků třetí strany, budete muset nastavit připojení služby NuGet a zadat je ve vstupu nuGetServiceConnections. Informační kanály ve vaší organizaci Azure Artifacts se také automaticky ověří.

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 a ThirdPartyRepositoryConnection jsou názvy připojení služby NuGet nakonfigurované a autorizované pro použití v kanálu a mají adresy URL, které odpovídají adresám URL v argumentu nuget.config nebo příkazového řádku.

Zdrojová adresa URL balíčku odkazující na informační kanál Azure Artifacts může nebo nemusí obsahovat projekt. Adresa URL pro kanál s vymezeným oborem projektu musí obsahovat projekt a adresa URL kanálu s oborem organizace nesmí obsahovat projekt. Přečtěte si další informace o informačních kanálech s vymezeným oborem projektu.

Požadavky

Požadavek Popis
Typy kanálů YAML, klasické sestavení, klasická verze
Běží na Agent, DeploymentGroup
požadavky Žádný
možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
omezení příkazů Jakýkoliv
nastavitelné proměnné Jakýkoliv
Verze agenta 2.144.0 nebo vyšší
Kategorie úkolu Balíček
Požadavek Popis
Typy kanálů YAML, klasické sestavení, klasická verze
Běží na Agent, DeploymentGroup
požadavky Žádný
možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
omezení příkazů Jakýkoliv
nastavitelné proměnné Jakýkoliv
Verze agenta 2.120.0 nebo novější
Kategorie úkolu Balíček