Megosztás a következőn keresztül:


NuGetAuthenticate@1 – NuGet–hitelesítés 1. feladat

Konfigurálja a NuGet-eszközöket az Azure Artifacts és más NuGet-adattárak hitelesítéséhez. NuGet >= 4.8.5385, dotnet >= 6 vagy MSBuild >= 15.8.166.59604.

Szintaxis

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

Bemenetek

forceReinstallCredentialProvider - A hitelesítőadat-szolgáltató újratelepítése akkor is, ha már telepítve van
boolean. Alapértelmezett érték: false.

Szabadon választható. Újratelepíti a hitelesítőadat-szolgáltatót a felhasználói profil könyvtárába, még akkor is, ha már telepítve van. Ha a hitelesítőadat-szolgáltató már telepítve van a felhasználói profilban, a feladat megállapítja, hogy felülírja-e a feladat által biztosított hitelesítőadat-szolgáltatóval. Ez frissítheti (vagy csökkentheti) a hitelesítőadat-szolgáltatót.


nuGetServiceConnections - szolgáltatáskapcsolat hitelesítő adatai a szervezeten kívüli hírcsatornákhoz
string.

Szabadon választható. A NuGet szolgáltatáskapcsolat vesszővel tagolt listája szervezeten vagy gyűjteményen kívüli hírcsatornák neveit. A szervezetben vagy gyűjteményben lévő hírcsatornák esetében hagyja üresen; a rendszer automatikusan használja a build hitelesítő adatait.


Tevékenységvezérlési beállítások

Minden tevékenység a tevékenységbemeneteken kívül vezérlési lehetőségekkel is rendelkezik. További információ: Vezérlők és gyakori feladattulajdonságok.

Kimeneti változók

Egyik sem.

Megjegyzések

Fontos

Ez a feladat csak a NuGet >= 4.8.0.5385, dotnet >= 6 vagy MSBuild >= 15.8.166.59604 fájllal kompatibilis.

Milyen eszközök kompatibilisek ezzel a feladattal?

Ez a feladat olyan eszközöket konfigurál, amelyek támogatják NuGet platformfüggetlen beépülő modulokat. Az eszközök jelenleg nuget.exe, dotnet és az MSBuild legújabb verzióit tartalmazzák, beépített támogatással a NuGet-csomagok visszaállításához.

Ez a feladat a következőt fogja konfigurálni:

  • nuget.exe (4.8.5385-ös vagy újabb verzió)
  • dotnet / .NET 6 SDK vagy újabb (a feladat egy korábbi verziója, a NuGetAuthenticateV0 megköveteli a .NET Core 2.1-et, amely már nem támogatott)
  • MSBuild (15.8.166.59604-es vagy újabb verzió)

Ha bármilyen probléma merül fel, javasoljuk, hogy frissítsen a legújabb stabil verzióra.

"A feladat megszakítva" hibaüzenet jelenik meg a csomag visszaállítása során. Mit tegyek?

A NuGet és az Azure Artifacts hitelesítőadat-szolgáltató ismert problémái okozhatják ezt a típusú hibát, és a legújabb nugetre való frissítés segíthet.

A nuget/dotnet egyes verzióiban ismert probléma okozhatja ezt a hibát, különösen az erőforrás-korlátozott gépeken végzett nagy visszaállítások során. Ez a probléma a NuGet 5.2 és a .NET Core SDK 2.1.80X és 2.2.40Xvan kijavítva. Ha régebbi verziót használ, próbálja meg frissíteni a NuGet vagy a dotnet verzióját. A .NET Core Tool Installer feladat a .NET Core SDK újabb verziójának telepítéséhez használható.

Az Azure Artifacts hitelesítőadat-szolgáltatóval (amelyet ez a feladat telepített) is ismert problémákat tapasztal, például artifacts-credprovider/#77 és artifacts-credprovider/#108. Ha ezeket a problémákat tapasztalja, győződjön meg arról, hogy a legújabb hitelesítőadat-szolgáltatóval rendelkezik, ha a bemeneti forceReinstallCredentialProvidertrue a NuGet-hitelesítés feladatban. Ez a beállítás azt is biztosítja, hogy a hitelesítőadat-szolgáltató automatikusan frissüljön a problémák megoldásakor.

Ha a fentiek egyike sem oldja meg a problémát, engedélyezze beépülő modul diagnosztikai naplózási, és jelentse a problémát a NuGet- és a Azure Artifacts hitelesítőadat-szolgáltató.

Miben különbözik ez a tevékenység a NuGetCommand- és DotNetCoreCLI-feladatoktól?

Ez a feladat nuget.exe, dotnet és MSBuild használatával konfigurálja a hitelesítést az Azure Artifacts vagy más, hitelesítést igénylő adattárak használatával. A feladat futtatása után egy későbbi lépésben (közvetlenül vagy szkripttel) meghívhatja az eszközöket a csomagok visszaállításához vagy leküldéséhez.

A NuGetCommand- és DotNetCoreCLI-feladatokhoz a feladat használata szükséges a csomagok visszaállításához vagy leküldéséhez, mivel az Azure Artifactshez való hitelesítés csak a feladat élettartamán belül van konfigurálva. Ez megakadályozhatja a csomagok visszaállítását vagy leküldését a saját szkripten belül. Azt is megakadályozhatja, hogy adott parancssori argumentumokat adjon át az eszköznek.

A NuGetAuthenticate feladat a hitelesített hírcsatornák folyamaton belüli használatának ajánlott módja.

Mikor futtassam ezt a feladatot a folyamatban?

Ennek a feladatnak futnia kell, mielőtt NuGet-eszközzel visszaállítja vagy leküldi a csomagokat egy hitelesített csomagforrásba, például az Azure Artifactsbe. Nincsenek más rendezési követelmények. Ez a feladat például biztonságosan futtatható NuGet- vagy .NET Core-eszköztelepítő feladat előtt vagy után.

Hogyan konfigurálhatok egy Olyan NuGet-csomagforrást, amely ApiKey -t (NuGet API-kulcsokat) használ, például nuget.org?

Egyes csomagforrások, például nuget.org API-kulcsokat használnak a hitelesítéshez a csomagok leküldésekor a hitelesítő adatok username/password helyett. A NuGet korlátozásai miatt ez a feladat nem használható API-kulcsot használó NuGet-szolgáltatáskapcsolat beállítására.

Helyette:

  1. Az ApiKey-t tartalmazó titkos változó konfigurálása
  2. A csomagküldés végrehajtása nuget push -ApiKey $(myNuGetApiKey) vagy dotnet nuget push --api-key $(myNuGetApiKey)használatával, feltéve, hogy elnevezte a változót myNuGetApiKey

Az ügynököm egy webes proxy mögött áll. Beállítja a NuGetAuthenticate a nuget.exe, a dotnet és az MSBuild parancsot a proxym használatára?

Nem. Bár ez a feladat egy webes proxy mögött fog működni, az ügynökhasználatára lett konfigurálva, nem konfigurálja a NuGet-eszközöket a proxy használatára.

Ehhez a következőkre van lehetőség:

  • Állítsa be a környezeti változót http_proxy, és igény szerint no_proxy a proxybeállításokra. Részletekért lásd NuGet CLI környezeti változóit. Ezek a változók gyakran használt változók, amelyeket más nem NuGet-eszközök (pl. curl) is használhatnak.

    Figyelem:
    A http_proxy és no_proxy változók megkülönböztetik a kis- és nagybetűket Linux és Mac operációs rendszereken, és kisbetűknek kell lenniük. Ha egy Azure Pipelines-változót próbál meg használni a környezeti változó beállításához, az nem fog működni, mivel az nagybetűssé lesz konvertálva. Ehelyett állítsa be a környezeti változókat a saját üzemeltetésű ügynök gépén, és indítsa újra az ügynököt.

  • Adja hozzá a proxybeállításokat a felhasználói szintű nuget.config fájlhoz manuálisan vagy nuget config -set használatával, a nuget.config referencia- dokumentációban leírtak szerint.

    Figyelem:
    A proxybeállításokat (például http_proxy) hozzá kell adni a felhasználói szintű konfigurációhoz. A rendszer figyelmen kívül hagyja őket, ha egy másik nuget.config fájlban vannak megadva.

Hogyan lehet hibakeresést végezni, ha problémáim vannak ezzel a feladattal?

Ha részletes naplókat szeretne lekérni a folyamatból, adjon hozzá egy folyamatváltozót system.debug, és állítsa true.

Hogyan működik ez a feladat?

Ez a feladat telepíti az Azure Artifacts hitelesítőadat-szolgáltató a NuGet beépülő modul könyvtárába, ha még nincs telepítve. Ezután beállítja az olyan környezeti változókat, mint a VSS_NUGET_URI_PREFIXES és a VSS_NUGET_ACCESSTOKEN a hitelesítőadat-szolgáltató konfigurálásához. Ezek a változók a feladat élettartamára vannak beállítva. Csomagok visszaállításakor vagy leküldésekor a NuGet-eszköz végrehajtja a hitelesítőadat-szolgáltatót, amely a fenti változók alapján állapítja meg, hogy vissza kell-e adnia a hitelesítő adatokat az eszköznek.

További részletekért tekintse meg a hitelesítőadat-szolgáltató dokumentációját.

A folyamatnak egy másik projektben lévő hírcsatornához kell hozzáférnie

Ha a folyamat más projektben fut, mint a hírcsatornát üzemeltető projekt, be kell állítania a másik projektet, hogy olvasási/írási hozzáférést biztosítson a buildszolgáltatáshoz. További részletekért tekintse meg csomagengedélyeket az Azure Pipelines.

Működik ez egy külső elágazásból aktivált folyamatfuttatások esetében?

Nem. A külső elágazásból aktivált folyamatfuttatások nem férnek hozzá a belső adatcsatorna-hitelesítés megfelelő titkos kulcsaihoz. Így úgy fog megjelenni, mintha a hitelesítési feladat sikeres lenne, de a hitelesítést igénylő további feladatok (például a Nuget-leküldés) a következő sorok mentén meghiúsulnak: ##[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)). A lekéréses kérelem forrásba való egyesítése után az eseményből aktivált folyamat megfelelően hitelesít.

Frissítettem a NuGetAuthenticateV0-ről a NuGetAuthenticateV1-re, és most a dotnet parancsom a 401-es hibával meghiúsul

Ha a NuGetAuthenticateV0-ről a NuGetAuthenticateV1-ről frissít, és dotnet parancsot futtató hibaüzenetet kap, keresse meg a naplókból It was not possible to find any compatible framework version üzenetet. A dotnet-felhasználók számára a NuGetAuthenticateV1 a .NET Core 2.1 helyett .NET 6-ot igényel, amely a NuGetAuthenticateV0-ben szükséges, és már nem támogatott. A probléma megoldásához használja a dotnet parancs előtti UseDotNet@2 feladatot a .NET 6 telepítéséhez.

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

Példák

NuGet-csomagok visszaállítása és leküldése a szervezeten belül

Ha az összes használt Azure Artifacts-hírcsatorna ugyanabban a szervezetben van, mint a folyamat, a NuGetAuthenticate feladatot bemenetek megadása nélkül is használhatja. A projekt hatókörű hírcsatornái esetében, amelyek egy másik projektben vannak, mint ahol a folyamat fut, manuálisan kell hozzáférést adni a projektnek és a hírcsatornának a folyamat projektjének buildszolgáltatásához.

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>

Szolgáltatáskapcsolat használatához adja meg a szolgáltatáskapcsolatot a NuGet-hitelesítés feladat nuGetServiceConnections bemenetében. Ezután hivatkozhat a szolgáltatáskapcsolatra -ApiKey AzureArtifacts egy feladatban.

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

A fenti példákban OtherOrganizationFeedConnection és ThirdPartyRepositoryConnection azok a NuGet-szolgáltatáskapcsolatok nevei,, amelyek konfigurálva vannak és engedélyezve vannak a folyamatban való használatra, valamint a nuget.config vagy parancssori argumentumban szereplő URL-címek.

Az Azure Artifacts-hírcsatornára mutató csomagforrás URL-címe tartalmazhatja a projektet. A projekt hatókörű hírcsatornáinak URL-címének tartalmaznia kell a projektet, a szervezeti hatókörű hírcsatornák URL-címe pedig nem tartalmazhatja a projektet. További információ projekthatókörű hírcsatornákról.

NuGet-csomagok visszaállítása és leküldése a szervezeten kívül

Ha egy másik szervezet Azure Artifacts-hírcsatornáit használja, vagy egy harmadik féltől származó hitelesített csomagadattárat használ, be kell állítania NuGet-szolgáltatáskapcsolatokat, és meg kell adnia őket a nuGetServiceConnections bemenetben. Az Azure Artifacts-szervezeten belüli hírcsatornák is automatikusan hitelesítve lesznek.

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 és ThirdPartyRepositoryConnectionNuGet-szolgáltatáskapcsolatok nevei,, amelyek konfigurálva vannak és engedélyezve vannak a folyamatban való használatra, valamint a nuget.config vagy parancssori argumentumban szereplő URL-címek.

Az Azure Artifacts-hírcsatornára mutató csomagforrás URL-címe tartalmazhatja a projektet. A projekt hatókörű hírcsatornáinak URL-címének tartalmaznia kell a projektet, a szervezeti hatókörű hírcsatornák URL-címe pedig nem tartalmazhatja a projektet. További információ projekthatókörű hírcsatornákról.

Követelmények

Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás bekapcsolva Ügynök, DeploymentGroup
Követelmények Egyik sem
képességek Ez a tevékenység nem felel meg a feladat későbbi tevékenységeire vonatkozó követelményeknek.
parancskorlátozások Bármely
Változók beállítása Bármely
Ügynök verziója 2.144.0 vagy újabb
Tevékenységkategória Csomag
Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás bekapcsolva Ügynök, DeploymentGroup
Követelmények Egyik sem
képességek Ez a tevékenység nem felel meg a feladat későbbi tevékenységeire vonatkozó követelményeknek.
parancskorlátozások Bármely
Változók beállítása Bármely
Ügynök verziója 2.120.0 vagy újabb
Tevékenységkategória Csomag