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 forceReinstallCredentialProvider
true
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:
- ApiKey-t tartalmazó titkos változó konfigurálása
- 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álisanno_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:
Ahttp_proxy
ésno_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áulhttp_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, OtherOrganizationFeedConnection
ThirdPartyRepositoryConnection
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 |