NuGetAuthenticate@1 - NuGet kimlik doğrulaması v1 görevi

Azure Artifacts ve diğer NuGet depolarıyla kimlik doğrulaması yapmak için NuGet araçlarını yapılandırın. NuGet >= 4.8.5385, dotnet >= 6 veya MSBuild >= 15.8.166.59604 gerektirir.

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.

Girişler

nuGetServiceConnections - Bu kuruluş dışındaki akışlar için hizmet bağlantısı kimlik bilgileri
string.

İsteğe bağlı. Bu kuruluş veya koleksiyon dışındaki akışlar için NuGet hizmet bağlantı adlarının virgülle ayrılmış listesi. Bu kuruluş veya koleksiyondaki akışlar için bunu boş bırakın; derlemenin kimlik bilgileri otomatik olarak kullanılır.


forceReinstallCredentialProvider - Zaten yüklü olsa bile kimlik bilgisi sağlayıcısını yeniden yükleyin
boolean. Varsayılan değer: false.

İsteğe bağlı. Zaten yüklü olsa bile kimlik bilgisi sağlayıcısını kullanıcı profili dizinine yeniden yükler. Kimlik bilgisi sağlayıcısı kullanıcı profilinde zaten yüklüyse, görev tarafından sağlanan kimlik bilgisi sağlayıcısıyla üzerine yazıp yazılmadığını belirler. Bu, kimlik bilgisi sağlayıcısını yükseltebilir (veya eski sürüme düşürebilir).


Görev denetimi seçenekleri

Tüm görevlerin, görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Yok.

Açıklamalar

Önemli

Bu görev yalnızca NuGet >= 4.8.0.5385, dotnet >= 6 veya MSBuild >= 15.8.166.59604 ile uyumludur.

Hangi araçlar bu görevle uyumludur?

Bu görev , NuGet platformlar arası eklentilerini destekleyen araçları yapılandırır. Araçlar şu anda NuGet paketlerini geri yüklemeye yönelik yerleşik destekle MSBuild'in nuget.exe, dotnet ve son sürümlerini içerir.

Özellikle, bu görev şunları yapılandıracaktır:

  • nuget.exe (sürüm 4.8.5385 veya üzeri)
  • dotnet / .NET 6 SDK veya üzeri (bu görevin önceki bir sürümü olan NuGetAuthenticateV0, artık desteklenmeyen .NET Core 2.1 gerektirir)
  • MSBuild (sürüm 15.8.166.59604 veya üzeri)

Herhangi bir sorunla karşılaşırsanız en son kararlı sürüme yükseltmeniz önerilir.

Paket geri yükleme sırasında "Bir görev iptal edildi" hataları alıyorum. Ne yapmalıyım?

NuGet'teki ve Azure Artifacts Kimlik Bilgileri Sağlayıcısı'ndaki bilinen sorunlar bu tür bir hataya neden olabilir ve en son nuget'e güncelleştirmek yararlı olabilir.

Nuget/dotnet'in bazı sürümlerindeki bilinen bir sorun , özellikle de kaynak kısıtlanmış makinelerde büyük geri yüklemeler sırasında bu hataya neden olabilir. Bu sorun NuGet 5.2 ve .NET Core SDK 2.1.80X ve 2.2.40X'te düzeltilmiştir. Eski bir sürüm kullanıyorsanız NuGet veya dotnet sürümünüzü yükseltmeyi deneyin. .NET Core Araç Yükleyicisi görevi, .NET Core SDK'sının daha yeni bir sürümünü yüklemek için kullanılabilir.

Artifacts-credprovider/#77 ve artifacts-credprovider/#108 dahil olmak üzere Azure Artifacts Kimlik Bilgisi Sağlayıcısı ile ilgili bilinen sorunlar da vardır (bu görev tarafından yüklenir). Bu sorunlarla karşılaşırsanız, NuGet Kimlik Doğrulaması görevinde girişi forceReinstallCredentialProvidertrue olarak ayarlayarak en son kimlik bilgisi sağlayıcısına sahip olduğunuzdan emin olun. Bu ayar, sorunlar çözüldükçe kimlik bilgisi sağlayıcınıznın otomatik olarak güncelleştirilmesini de sağlar.

Yukarıdakilerden hiçbiri sorunu çözmezse Eklenti Tanılama Günlüğü'nü etkinleştirin ve sorunu NuGet'e ve Azure Artifacts Kimlik Bilgileri Sağlayıcısı'na bildirin.

Bu görevin NuGetCommand ve DotNetCoreCLI görevlerinden farkı nedir?

Bu görev nuget.exe, dotnet ve MSBuild'i Azure Artifacts veya kimlik doğrulaması gerektiren diğer 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öndermek için sonraki bir adımda (doğrudan veya bir betik aracılığıyla) araçları çağırabilirsiniz.

NuGetCommand ve DotNetCoreCLI görevleri, Azure Artifacts kimlik doğrulaması yalnızca görevin ömrü içinde yapılandırıldığından, paketleri geri yüklemek veya göndermek için görevin kullanılmasını gerektirir. Bu, kendi betiğinizdeki paketleri geri yüklemenizi veya göndermenizi engelleyebilir. Ayrıca belirli komut satırı bağımsız değişkenlerini ara çubuğuna geçirmenizi engelleyebilir.

NuGetAuthenticate görevi, bir işlem hattı içinde kimliği doğrulanmış akışları kullanmanın önerilen yoludur.

İşlem hattımda ne zaman bu görevi çalıştırmalıyım?

Bu görev, Azure Artifacts gibi kimliği doğrulanmış bir paket kaynağına paketleri geri yüklemek veya göndermek için NuGet aracını kullanmadan önce çalıştırılmalıdır. Başka sıralama gereksinimi yoktur. Örneğin, bu görev bir NuGet veya .NET Core araç yükleyicisi görevinden önce veya sonra güvenle çalışabilir.

Nasıl yaparım? gibi ApiKey ("NuGet API anahtarları") kullanan bir NuGet paket kaynağı yapılandırılır nuget.org?

nuget.org gibi bazı paket kaynakları, kimlik bilgileri yerine username/password paketler gönderilirken kimlik doğrulaması için API anahtarlarını kullanır. NuGet'teki sınırlamalar nedeniyle bu görev, API anahtarı kullanan bir NuGet hizmet bağlantısı kurmak için kullanılamaz.

Yer -ine:

  1. ApiKey'i içeren bir gizli dizi değişkenini yapılandırma
  2. Değişkeni adlandırdığınız varsayılarak veya dotnet nuget push --api-key $(myNuGetApiKey)kullanarak nuget push -ApiKey $(myNuGetApiKey) paket gönderme işlemini gerçekleştirinmyNuGetApiKey

Aracım bir web ara sunucusunun arkasında. NuGetAuthenticate ara sunucumu kullanmak için nuget.exe, dotnet ve MSBuild'i ayarlayacak mı?

Hayır. Bu görev , aracınızın kullanmak üzere yapılandırıldığı bir web ara sunucusunun arkasında çalışacak olsa da, NuGet araçlarını ara sunucuyu kullanacak şekilde yapılandırmaz.

Bunu yapmak için şunları yapabilirsiniz:

  • Ortam değişkenini http_proxy ve isteğe bağlı olarak no_proxy ara sunucu ayarlarınızı ayarlayın. Ayrıntılar için bkz. NuGet CLI ortam değişkenleri . Bu değişkenler, diğer NuGet olmayan araçların (ör. curl) de kullanabilecekleri yaygın olarak kullanılan değişkenlerdir.

    Dikkat:
    http_proxy Ve no_proxy değişkenleri Linux ve Mac işletim sistemlerinde büyük/küçük harfe duyarlıdır ve küçük harfle yazılmalıdır. Ortam değişkenini ayarlamak için bir Azure Pipelines değişkeni kullanılmaya çalışılması işe yaramaz, bu nedenle büyük harfe dönüştürülür. Bunun yerine, şirket içi barındırılan aracının makinesinde 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 nuget config -setkullanıcı düzeyi nuget.configdosyasına ekleyin.

    Dikkat:
    Proxy ayarları (örneğin http_proxy), kullanıcı düzeyi yapılandırmasına eklenmelidir. Farklı bir nuget.config dosyasında belirtilirse bunlar yoksayılır.

Bu görevle ilgili sorunlarım varsa hata ayıklaması Nasıl yaparım??

İşlem hattından ayrıntılı günlükleri almak için bir işlem hattı değişkeni system.debug ekleyin ve olarak trueayarlayın.

Bu görev nasıl çalışır?

Bu görev, henüz yüklü değilse Azure Artifacts Kimlik Bilgisi Sağlayıcısı'nı NuGet eklentileri dizinine yükler. Ardından, kimlik bilgisi sağlayıcısını yapılandırmak için ve VSS_NUGET_ACCESSTOKEN gibi VSS_NUGET_URI_PREFIXES ortam değişkenlerini ayarlar. Bu değişkenler işin ömrü boyunca ayarlanmış olarak kalır. Bir NuGet aracı paketleri geri yüklerken veya gönderirken kimlik bilgisi sağlayıcısını yürütür ve bu sağlayıcı, kimlik bilgilerini araca geri döndürmesi gerekip gerekmediğini belirlemek için yukarıdaki değişkenleri kullanır.

Diğer ayrıntılar için kimlik bilgisi sağlayıcısı belgelerine bakın.

İşlem Hattımın farklı bir projedeki akışa erişmesi gerekiyor

İşlem hattı akışı barındıran projeden farklı bir projede çalışıyorsa, diğer projeyi derleme hizmetine okuma/yazma erişimi vermek üzere ayarlamanız gerekir. Diğer ayrıntılar için bkz. Azure Pipelines'da paket izinleri .

Bu, dış çataldan tetiklenen işlem hattı çalıştırmaları için çalışacak mı?

Hayır. Dış çataldan tetiklenen işlem hattı çalıştırmalarının iç akış kimlik doğrulaması için uygun gizli dizilere erişimi yoktur. Bu nedenle, kimlik doğrulama görevi başarılı gibi görünür, ancak kimlik doğrulaması gerektiren sonraki görevler (Nuget gönderimi gibi) şu satırlar boyunca bir hatayla başarısız olur: ##[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)). Çekme İsteği kaynakla birleştirildikten sonra, o olaydan tetiklenen bir işlem hattı düzgün bir şekilde doğrulanır.

NuGetAuthenticateV0'den NuGetAuthenticateV1'e güncelleştirdim ve dotnet komutum 401 ile başarısız oluyor

NuGetAuthenticateV0'den NuGetAuthenticateV1'e güncelleştiriyorsanız ve dotnet komutunu çalıştırırken hata alırsanız, günlüklerden gelen iletiyi It was not possible to find any compatible framework version arayın. Dotnet kullanıcıları için NuGetAuthenticateV1, NuGetAuthenticateV0 içinde gerekli olan ve artık desteklenmeyen .NET Core 2.1 yerine .NET 6 gerektirir. Sorunu çözmek için dotnet komutundan önceki UseDotNet@2 görevini kullanarak .NET 6'yı yükleyin.

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

Örnekler

Kuruluşunuzdaki NuGet paketlerini geri yükleme ve gönderme

Kullandığınız tüm Azure Artifacts akışları işlem hattınızla aynı kuruluştaysa, herhangi bir giriş belirtmeden NuGetAuthenticate görevini kullanabilirsiniz. İşlem hattının çalıştığı projeden farklı bir projede yer alan proje kapsamlı akışlar için, projeye ve akışa işlem hattının derleme hizmetine el ile erişim vermeniz gerekir.

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>

Hizmet bağlantısı kullanmak için NuGet Kimlik Doğrulaması görevinin girişinde nuGetServiceConnections hizmet bağlantısını belirtin. Daha sonra bir görevde ile -ApiKey AzureArtifacts hizmet bağlantısına başvurabilirsiniz.

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

Yukarıdaki örneklerde OtherOrganizationFeedConnection ve ThirdPartyRepositoryConnection işlem hattınızda kullanılmak üzere yapılandırılmış ve yetkilendirilmiş NuGet hizmet bağlantılarının adlarıdır ve veya komut satırı bağımsız değişkeninizdekilerle nuget.config eşleşen URL'lere sahiptir.

Azure Artifacts akışına işaret eden paket kaynağı URL'si projeyi içerebilir veya içermeyebilir. Proje kapsamlı akışın URL'si projeyi içermeli ve kuruluş kapsamlı akışın URL'si projeyi içermemelidir. Proje kapsamlı akışlar hakkında daha fazla bilgi edinin.

NuGet paketlerini kuruluşunuzun dışına geri yükleme ve gönderme

Farklı bir kuruluştaki Azure Artifacts akışlarını veya üçüncü taraf kimliği doğrulanmış paket deposunu kullanıyorsanız , NuGet hizmet bağlantılarını ayarlamanız ve bunları girişte nuGetServiceConnections belirtmeniz gerekir. Azure Artifacts kuruluşunuzdaki 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@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 ve ThirdPartyRepositoryConnection , işlem hattınızda kullanılmak üzere yapılandırılmış ve yetkilendirilmiş NuGet hizmet bağlantılarının adlarıdır ve nuget.config veya komut satırı bağımsız değişkeninizdekilerle eşleşen URL'lere sahiptir.

Azure Artifacts akışına işaret eden paket kaynağı URL'si projeyi içerebilir veya içermeyebilir. Proje kapsamlı akışın URL'si projeyi içermeli ve kuruluş kapsamlı akışın URL'si projeyi içermemelidir. Proje kapsamlı akışlar hakkında daha fazla bilgi edinin.

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için hiçbir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.144.0 veya üzeri
Görev kategorisi Paket
Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için hiçbir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.120.0 veya üzeri
Görev kategorisi Paket