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 használatával történő hitelesítéshez. NuGet >= 4.8.5385, dotnet >= 6 vagy MSBuild >= 15.8.166.59604 szükséges.

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.

Bevitelek

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

Választható. A szervezeten vagy gyűjteményen kívüli hírcsatornák NuGet-szolgáltatáskapcsolatainak vesszővel tagolt listája. A szervezet vagy gyűjtemény hírcsatornáinál hagyja üresen a műveletet; a rendszer automatikusan használja a build hitelesítő adatait.


forceReinstallCredentialProvider - Telepítse újra a hitelesítőadat-szolgáltatót még akkor is, ha már telepítve van
boolean. Alapértelmezett érték: false.

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 azt a feladat által biztosított hitelesítőadat-szolgáltatóval. Ez frissítheti (vagy le is frissítheti) a hitelesítőadat-szolgáltatót.


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

Minden tevékenység a tevékenység bemenetei mellett vezérlési lehetőségekkel is rendelkezik. További információ: Vezérlési beállítások és gyakori feladattulajdonságok.

Kimeneti változók

Nincsenek.

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 a NuGet platformfüggetlen beépülő moduljait. 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ő beállításokat 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émát tapasztal, javasoljuk, hogy frissítsen a legújabb stabil verzióra.

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

A NuGetben és az Azure Artifacts hitelesítőadat-szolgáltatóban előforduló ismert problémák okozhatnak ilyen típusú hibát, és a legújabb nugetre való frissítés segíthet.

A nuget/dotnet egyes verzióiban jelentkező ismert probléma okozhatja ezt a hibát, különösen az erőforrás-korlátozott gépeken történő nagy mértékű visszaállítások során. Ezt a problémát a NuGet 5.2 és a .NET Core SDK 2.1.80X és 2.2.40X esetében javítottuk. 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ó.

Ismert problémák merülnek fel az Azure Artifacts hitelesítőadat-szolgáltatóval (amelyet ez a feladat telepített), például az artifacts-credprovider/#77 és az 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 bemenetet forceReinstallCredentialProvidertrue a NuGet-hitelesítés feladatba állítja. 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 a beépülő modul diagnosztikai naplózását , és jelentse a problémát a NuGetnek és az Azure Artifacts hitelesítőadat-szolgáltatónak.

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

Ez a feladat nuget.exe, dotnet és MSBuild konfigurálásával végez 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 a DotNetCoreCLI-feladatokhoz a feladat használatával kell visszaállítani vagy le kell küldeni a csomagokat, mivel az Azure Artifacts hitelesítése csak a feladat teljes élettartama alatt 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özt használna a csomagok visszaállításához vagy leküldéséhez 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áljon 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 helyett username/password . 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.

Helyett:

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

Az ügynököm egy webes proxy mögött van. Beállítja a NuGetAuthenticate nuget.exe, dotnetet és MSBuildet a proxym használatához?

Nem. Bár maga a feladat egy olyan webproxy mögött fog működni, amelyet az ügynöke konfigurált, nem konfigurálja a NuGet-eszközöket a proxy használatára.

Ehhez a következő lehetőségek közül választhat:

  • Állítsa be a környezeti változót http_proxy , és opcionálisan no_proxy a proxybeállításokat. Részletekért lásd: NuGet CLI környezeti változók . 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 helyi ü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 a nuget.config referenciadokumentá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 hibakeresést, 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 a következőre: true.

Hogyan működik ez a feladat?

Ez a feladat telepíti az Azure Artifacts hitelesítőadat-szolgáltatót 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 VSS_NUGET_ACCESSTOKEN a hitelesítőadat-szolgáltató konfigurálása. 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ókkal á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 saját 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 lásd : Csomagengedélyek az Azure Pipelinesban .

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ő hírcsatorna-hitelesítés megfelelő titkos kulcsaihoz. Így úgy fog kinézni, 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ő sorokkal 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íti magát.

Frissítettem NuGetAuthenticateV0-ról NuGetAuthenticateV1-ra, és most a dotnet parancsom a 401-zel meghiúsul

Ha a NuGetAuthenticateV0-ról a NuGetAuthenticateV1-ra frissít, és egy dotnet-parancsot futtató hibaüzenetet kap, keresse meg az üzenetet It was not possible to find any compatible framework version a naplókból. Dotnet-felhasználók esetén 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 található, mint a folyamat, a NuGetAuthenticate feladatot bemenetek megadása nélkül is használhatja. Olyan projekt hatókörű hírcsatornák esetében, amelyek más 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 nuGetServiceConnections NuGet-hitelesítés feladat 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 és azok a NuGet-szolgáltatáskapcsolatok nevei, OtherOrganizationFeedConnectionThirdPartyRepositoryConnection amelyek konfigurálva és engedélyezve vannak a folyamatban való használatra, és amelyek URL-címei megegyeznek a vagy a nuget.config parancssori argumentumban szereplőkkel.

Előfordulhat, hogy az Azure Artifacts-hírcsatornára mutató csomagforrás URL-címe tartalmazza a projektet. A projekt hatókörébe tartozó hírcsatornák 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ó a 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 külső hitelesített csomagtárat használ, be kell állítania a 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 ThirdPartyRepositoryConnection azok a NuGet-szolgáltatáskapcsolatok nevei, amelyek konfigurálva és engedélyezve vannak a folyamatban való használatra, és amelyek URL-címei megegyeznek a nuget.config vagy a parancssori argumentumban szereplőkkel.

Előfordulhat, hogy az Azure Artifacts-hírcsatornára mutató csomagforrás URL-címe tartalmazza a projektet. A projekt hatókörébe tartozó hírcsatornák 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ó a 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: Ügynök, DeploymentGroup
Igények None
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ármelyik
Változók beállítása Bármelyik
Ügynök verziója 2.144.0 vagy újabb
Feladatkategória Csomag
Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás: Ügynök, DeploymentGroup
Igények None
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ármelyik
Változók beállítása Bármelyik
Ügynök verziója 2.120.0 vagy újabb
Feladatkategória Csomag