NuGetAuthenticate@1 – úloha ověřování NuGet 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:
    #nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization. 
    #forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.

Vstupy

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

Nepovinný parametr. Čárkami oddělený seznam názvů připojení služby NuGet pro informační kanály mimo tuto organizaci nebo kolekci. U informačních kanálů v této organizaci nebo kolekci ponechte toto pole prázdné. přihlašovací údaje sestavení se použijí automaticky.


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

Nepovinný parametr. Přeinstaluje zprostředkovatele přihlašovacích údajů do adresáře profilů uživatelů, i když už je nainstalovaný. Pokud je zprostředkovatel přihlašovacích údajů už v profilu uživatele nainstalovaný, úloha určí, jestli se přepíše pomocí zprostředkovatele přihlašovacích údajů zadaného úlohou. To může upgradovat (nebo potenciálně downgradovat) poskytovatele přihlašovacích údajů.


Možnosti řízení úkolů

Všechny úkoly mají kromě vstupů úkolů i možnosti řízení. Další informace najdete v tématu Možnosti ovládacích prvků a běžné vlastnosti úlohy.

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 nakonfiguruje nástroje, které podporují moduly plug-in NuGet pro různé platformy. Nástroje v současné době 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 novější)

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

Během obnovení balíčku se zobrazují chyby Úloha byla zrušena. Co bych měl/a dělat?

Tento typ chyby můžou způsobovat známé problémy v NuGetu a ve zprostředkovateli přihlašovacích údajů Azure Artifacts a může pomoct aktualizace na nejnovější nuget.

Tuto chybu může způsobit známý problém v některých verzích nuget/dotnet, zejména při rozsáhlém obnovení počítačů s omezenými prostředky. Tento problém je opravený v NuGetu 5.2 a sadě .NET Core SDK 2.1.80X a 2.2.40X. Pokud používáte starší verzi, zkuste upgradovat verzi NuGetu nebo dotnet. Úlohu instalačního programu nástroje .NET Core je možné 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 zprostředkovatele přihlašovacích údajů, a to nastavením vstupu forceReinstallCredentialProvider na hodnotu true v úloze Ověření NuGet. Toto nastavení také zajistí, aby se při řešení problémů automaticky aktualizoval poskytovatel přihlašovacích údajů.

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

Jak se tato úloha liší od úloh NuGetCommand a DotNetCoreCLI?

Tato úloha nakonfiguruje 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 nástroje vyvolat v pozdějším kroku (buď přímo, nebo prostřednictvím skriptu) a obnovit nebo odeslat balíčky.

Úlohy NuGetCommand a DotNetCoreCLI vyžadují použití úlohy k obnovení nebo nasdílení 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 obnovování nebo nabízení balíčků v rámci vlastního skriptu. Může vám také zabránit v předání konkrétních argumentů příkazového řádku nástroji.

Úloha NuGetAuthenticate je doporučeným způsobem, jak používat ověřené informační kanály v rámci kanálu.

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

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íčků, jako je Azure Artifacts. Neexistují žádné další požadavky na řazení. Tato úloha se například může bezpečně spustit před úlohou instalačního programu nástroje NuGet nebo .NET Core nebo po ní.

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

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

Místo toho:

  1. Konfigurace tajné proměnné obsahující klíč rozhraní ApiKey
  2. Za předpokladu, že jste proměnnou pojmenovali , proveďte nasdílení balíčku pomocí nuget push -ApiKey $(myNuGetApiKey) nebo dotnet nuget push --api-key $(myNuGetApiKey). myNuGetApiKey

Můj agent je za webovým proxy serverem. Nastaví NuGetAuthenticate nuget.exe, dotnet a MSBuild tak, aby používaly můj proxy server?

Ne. I když tato úloha samotná bude fungovat za webovým proxy serverem, na který je váš agent nakonfigurovaný, nenakonfiguruje nástroje NuGet pro použití proxy serveru.

Provedete to takto:

  • Nastavte proměnnou http_proxy prostředí a volitelně no_proxy na nastavení proxy serveru. Podrobnosti najdete v tématu Proměnné prostředí rozhraní příkazového řádku NuGet . Tyto proměnné jsou běžně používané proměnné, které můžou používat i jiné nástroje než NuGet (např. curl).

    Pozor:
    Proměnné http_proxy a no_proxy rozlišují malá a velká písmena v operačních systémech Linux a Mac a musí být malými písmeny. Pokus o nastavení proměnné prostředí pomocí proměnné Azure Pipelines 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.configna úrovni uživatele , a to buď ručně, nebo pomocí příkazu nuget config -set , jak je popsáno v referenční dokumentaci knuget.config .

    Pozor:
    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 souboru nuget.config.

Návody ladění, pokud mám s touto úlohou problémy?

Pokud chcete získat podrobné protokoly z kanálu, přidejte proměnnou system.debug kanálu a nastavte na 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ý. Pak nastaví proměnné prostředí, jako VSS_NUGET_URI_PREFIXES jsou a VSS_NUGET_ACCESSTOKEN , a a nakonfiguruje 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 ke zprostředkovateli přihlašovacích údajů.

Kanál potřebuje přístup ke 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 službě sestavení udělil přístup pro čtení a zápis. Další podrobnosti najdete v tématu Oprávnění balíčků ve službě Azure Pipelines .

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

Ne. Spuštění kanálu, která se aktivují z externího forku, nemají přístup k správným tajným kódům pro ověřování interního kanálu. Proto se bude zdát, že úloha ověření je úspěšná, ale následné úlohy, které vyžadují ověření (například nabízení NuGet), selžou s chybou v tomto pořadí: ##[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 s původem se kanál, který se aktivuje z této události, správně ověří.

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

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

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

Příklady

Obnovení a nasdílení změn balíčků NuGet v rámci organizace

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

Soubor 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>

Pokud chcete použít připojení služby, zadejte připojení služby ve nuGetServiceConnections vstupu pro úlohu Ověřování NuGet. Pak můžete odkazovat na připojení -ApiKey AzureArtifacts služby 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 a ThirdPartyRepositoryConnection jsou názvy připojení služby NuGet, OtherOrganizationFeedConnection která byla nakonfigurována a autorizována pro použití ve vašem kanálu a obsahují adresy URL, které odpovídají adresám v argumentu příkazového nuget.config řádku nebo .

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

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ích stran, budete muset nastavit připojení služby NuGet a zadat je ve nuGetServiceConnections vstupu. Informační kanály v rámci vaší organizace Azure Artifacts se také budou automaticky ověřovat.

Soubor 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 , která byla nakonfigurována a autorizována pro použití ve vašem kanálu, a obsahují adresy URL, které odpovídají adresám 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 kanálu s oborem projektu musí obsahovat projekt a adresa URL informačního kanálu s oborem organizace nesmí obsahovat projekt. Přečtěte si další informace o informačních kanálech s vymezeným projektem.

Požadavky

Požadavek Popis
Typy kanálů YAML, classic build, verze Classic
Spustí se Agent, DeploymentGroup
Požadavky Žádné
Možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
Omezení příkazů Všechny
Nastavitelné proměnné Všechny
Verze agenta 2.144.0 nebo vyšší
Kategorie úloh Balíček
Požadavek Popis
Typy kanálů YAML, classic build, verze Classic
Spustí se Agent, DeploymentGroup
Požadavky Žádné
Možnosti Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze.
Omezení příkazů Všechny
Nastavitelné proměnné Všechny
Verze agenta 2.120.0 nebo vyšší
Kategorie úloh Balíček