Paket: NuGet Kimlik Doğrulaması
Azure Pipelines
Şirket NuGet depolar ve diğer Azure Artifacts kimlik doğrulaması NuGet yapılandırma.
Önemli
Bu görev yalnızca NuGet = > 4.8.0.5385, dotnet > = 2.1.400 veya MSBuild > = 15.8.166.59604 ile uyumludur
YAML kod parçacığı
# Authenticate nuget.exe, dotnet, and MSBuild with Azure Artifacts and optionally other repositories
- task: NuGetAuthenticate@0
#inputs:
#nuGetServiceConnections: MyOtherOrganizationFeed, MyExternalPackageRepository # Optional
#forceReinstallCredentialProvider: false # Optional
Bağımsız değişkenler
| Bağımsız Değişken | Description |
|---|---|
nuGetServiceConnectionsBu kuruluş dışındaki akışlar için hizmet bağlantısı kimlik bilgileri |
(İsteğe bağlı) Bu kuruluş/koleksiyon dışındaki NuGet için hizmet bağlantı adlarının virgülle ayrılmış listesi. Yalnızca bu kuruluşta/koleksiyonda akışlara ihtiyacınız varsa bunu boş bırakın; Derlemenin kimlik bilgileri otomatik olarak kullanılır. |
forceReinstallCredentialProviderZaten yüklü olsa bile kimlik bilgisi sağlayıcısını yeniden yükleyin |
(İsteğe bağlı) Önceden yüklenmiş olsa bile kimlik bilgisi sağlayıcısını kullanıcı profili dizinine yeniden yükleyin. Bu, kimlik bilgisi sağlayıcısını yükseltebilirsiniz (veya büyük olasılıkla eski sürüme düşürebilirsiniz). |
| Denetim seçenekleri |
Örnekler
Kuruluş içinde NuGet geri yükleme ve geri yükleme
Kullanmakta Azure Artifacts akışlar işlem hattınız ile aynı kuruluşta yer aldısa, giriş belirtmeden NuGetAuthenticate görevini kullanabilirsiniz. İşlem hattının çalıştırıldıklarından farklı bir projede yer alan proje kapsamlı akışlar için, projeye el ile ve işlem hattının projesinin derleme hizmetine akış erişimi vermelisiniz.
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>
Bir hizmet bağlantısı kullanmak için, Kimlik Doğrulama görevi için nuGetServiceConnections girişte hizmet NuGet belirtin. Ardından bir görevdeki ile hizmet -ApiKey AzureArtifacts bağlantısına başvurabilirsiniz.
nuget.exe
- task: NuGetAuthenticate@0
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@0
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
Yukarıdaki örneklerde ve , NuGet komut satırı bağımsız değişkeninize veya komut satırı bağımsız değişkeninize uygun URL'lere sahip yapılandırılmış ve yetkilendirilmiş nuget.config OtherOrganizationFeedConnectionThirdPartyRepositoryConnection bağlantılarıdır. OtherOrganizationFeedConnection
Bir kaynak akışına işaret Azure Artifacts paket kaynağı URL'si projeyi içerebilir veya içerebildi. Proje kapsamlı akışın URL'si projeyi içermeli ve bir kuruluş kapsamlı akışın URL'si projeyi içermeli. Daha fazla bilgi edinin.
Paket paketlerini NuGet dışına geri yükleme ve itme
Farklı bir Azure Artifacts veya üçüncü taraf kimliği doğrulanmış bir paket deposu kullanıyorsanız, NuGet hizmeti bağlantılarını ayarlamalı ve bunları girişte belirtebilirsiniz. Azure Artifacts içindeki akışlar da otomatik olarak doğrulanır.
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@0
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@0
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
OtherOrganizationFeedConnectionve , işlem hattında NuGet için yapılandırılmış ve yetkilendirilmiş bir hizmet bağlantılarının adlarıdır ve nuget.config veya komut satırı bağımsız değişkenleri ile eş nuget.config ThirdPartyRepositoryConnection URL'leridir. OtherOrganizationFeedConnection
Bir kaynak akışına işaret Azure Artifacts paket kaynağı URL'si projeyi içerebilir veya içerebildi. Proje kapsamlı akışın URL'si projeyi içermeli ve bir kuruluş kapsamlı akışın URL'si projeyi içermeli. Daha fazla bilgi edinin.
Açık kaynak
Bu görev, üzerinde açık kaynak GitHub. Geri bildirim ve katkılar açıktır.
SSS
Bu görevle hangi araçlar uyumludur?
Bu görev, platformlar arası eklentilerini NuGet araçları yapılandıracak. Günümüzde bu, nuget.exe paketleri geri yükleme desteğiyle MSBuild, dotnet ve MSBuild sürümlerini NuGet içerir.
Özellikle, bu görev şunları yapılandıracak:
- nuget.exe, sürüm 4.8.5385 veya daha yüksek
- dotnet / .NET Core SDK, sürüm 2.1.400 veya daha yüksek
- MSBuild, sürüm 15.8.166.59604 veya daha yüksek
Ancak, herhangi bir sorunla karşılaşırsanız en son kararlı sürüme yükseltme önerilir.
Paket geri yükleme işlemi sırasında "Bir görev iptal edildi" hatalarına neden oldu. Ne yapmalıyım?
NuGet ve Azure Artifacts Kimlik Bilgisi Sağlayıcı bilinen sorunlar bu tür hatalara ve en son nuget'e güncelleştirmeye neden olabilir.
Nuget/dotnet'in bazı sürümlerinde bilinen bir sorun, özellikle de kaynak kısıtlı makinelerde büyük geri yüklemeler sırasında bu hataya neden olabilir. Bu sorun hem NuGet 5.2hem de .NET Core SDK 2.1.80X ve 2.2.40X'te düzeltilmiştir. Daha eski bir sürüm kullanıyorsanız, NuGet veya dotnet sürümünü yükseltmeyi deneyin. .NET Core Araç Yükleyicisi görevi, uygulamanın daha yeni bir sürümünü yüklemek .NET Core SDK.
Azure Artifacts Kimlik Bilgisi Sağlayıcı (bu görev tarafından yüklenir) ile ilgili artifacts-credprovider/#77 ve artifacts-credprovider/#108gibi bilinen sorunlar da vardır. Bu sorunlarıyla karşınız varsa, Kimlik Doğrulama görevi için giriş ayarını olarak ayarerek en forceReinstallCredentialProvider son kimlik NuGet emin true olun. Bu, sorunlar çözülürken kimlik bilgisi sağlayıcınızın otomatik olarak güncelleştirilmiş olmasını da sağlar.
Yukarıdakilerin hiçbiri sorunu çözmezse, Eklenti Tanılama Günlüğünü etkinleştirin ve sorunu NuGet veAzure Artifacts Kimlik Bilgisi Sağlayıcı.
Bu görev NuGetCommand ve DotNetCoreCLI görevlerden nasıl farklıdır?
Bu görev, nuget.exe, dotnet ve MSBuild kimlik doğrulaması gerektiren Azure Artifacts depolarla kimlik doğrulaması yapmak üzere yapılandırıyor. Bu görev çalıştırıldıktan sonra, paketleri geri yüklemek veya göndererek sonraki bir adımda (doğrudan veya bir betik aracılığıyla) araçları çağırabilirsiniz.
NuGetCommand ve DotNetCoreCLI görevleri, paketleri geri yüklemek veya geri yüklemek için görevi kullanmayı gerektirir, Azure Artifacts için kimlik doğrulaması yalnızca görevin ömrü içinde yapılandırılır. Bu, paketleri kendi betiğinizin içinde geri yüklemenizi veya itmenizi önleyebilirsiniz. Ayrıca belirli komut satırı bağımsız değişkenlerini aracına geçirmeniz de engellenebilir.
NuGetAuthenticate görevi, bir işlem hattı içinde kimliği doğrulanmış akışları kullanmanın önerilen yolutur.
İşlem hattımda bu görevi ne zaman çalıştır istiyorum?
Bu görev, paketleri geri yüklemek veya NuGet gibi kimliği doğrulanmış bir paket kaynağına geri yüklemek veya itmek için bir Azure Artifacts. Başka sipariş gereksinimleri yoktur. Örneğin, bu görev bir NuGet veya .NET Core araç yükleyici görevi öncesinde veya sonrasında güvenli bir şekilde çalıştırabilirsiniz.
Nasıl yaparım? ApiKey ("NuGet API anahtarları") kullanan bir NuGet paketi kaynağı yapılandırabilirsiniz, örneğin nuget.org?
Örneğin, kullanıcı adı/parola nuget.org yerine paketleri iletirken kimlik doğrulaması için API anahtarlarını kullanma gibi bazı paket kaynakları. Bu görev, NuGet nedeniyle API anahtarı kullanan bir NuGet hizmeti bağlantısı ayarlamak için kullanılamaz.
Yer -ine:
- ApiKey içeren bir gizli değişken yapılandırma
- Değişkeni olarak adlandırılmış olduğunu
nuget push -ApiKey $(myNuGetApiKey)varsayarak veyadotnet nuget push --api-key $(myNuGetApiKey)kullanarak paket anında yüklemesi gerçekleştirinmyNuGetApiKey
Aracım bir web proxy. NuGetAuthenticate proxy'nuget.exe kullanmak için MSBuild, dotnet ve MSBuild ayar mı kuracak?
Hayır. Bu görev, aracınız kullanmak üzere web proxy bir görevin arkasında çalışacaktır, ancak NuGet ara sunucu kullanmak üzere yapılandırmaz.
Bunu yapmak için şunları da yapmak için:
Ortam değişkenini ve
http_proxyisteğe bağlı olarakno_proxyara sunucu ayarlarınızı ayarlayın. Ayrıntılar NuGet CLI ortam değişkenlerine bakın. Bunların yaygın olarak kullanılan değişkenler olduğunu ve diğer NuGet (curl gibi) de kullanabileceğini unutmayın.Dikkat:
vehttp_proxydeğişkenleri Linux ve Mac işletim sistemlerindeno_proxybüyük/küçük harfe duyarlıdır ve küçük harfe duyarlı olmalıdır. Ortam değişkenlerini ayarlamak Azure Pipelines bir değişken kullanmaya çalışmak, büyük harfe dönüştürülecek şekilde çalışmaz. Bunun yerine, kendinden konak aracının makinesine ortam değişkenlerini ayarlayın ve aracıyı yeniden başlatın.Ara sunucu ayarlarını el ile veya nuget.config başvuru belgelerinde açıklandığı gibi kullanarak kullanıcı nuget.config ekleyin.
Dikkat:
Proxy ayarlarıhttp_proxy(örneğin), kullanıcı düzeyinde yapılandırmaya eklenmiştir. Bunlar farklı bir dosyada belirtilirse yoksayılır nuget.config.
Nasıl yaparım? sorun olursa hata ayıklaması nasıl musunuz?
İşlem hattından ayrıntılı günlükler almak için system.debug işlem hattı değişkenlerini true olarak ekleyin.
Bu görev nasıl çalışır?
Bu görev, Azure Artifacts Kimlik Bilgisi Sağlayıcı yüklü NuGet plugins dizinine yüklenir.
Ardından, kimlik bilgisi sağlayıcısını yapılandırmak VSS_NUGET_URI_PREFIXES için , ve gibi ortam VSS_NUGET_ACCESSTOKENVSS_NUGET_EXTERNAL_FEED_ENDPOINTS değişkenlerini ayarlar. Bu değişkenler işin kullanım ömrü boyunca ayarlanmış olarak kalır.
Paketleri geri yükleme veya itme NuGet, kimlik bilgilerini aracına geri iade etmek zorunda olup olmadığını belirlemek için yukarıdaki değişkenleri kullanan kimlik bilgisi sağlayıcısını yürütür.
Diğer ayrıntılar için kimlik bilgisi sağlayıcısı belgelerine bakın.
İşlem Hattım'ın farklı bir projede yer alan akışa erişmesi gerekiyor
İşlem hattı akışı barındıran projeden farklı bir projede çalışıyorsa, derleme hizmetine okuma/yazma erişimi vermek için diğer projeyi kurmanız gerekir. Diğer ayrıntılar için bkz. Azure Pipelines paket izinleri.