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

NuGet araçlarını Azure Artifacts ve diğer NuGet depoları ile kimlik doğrulaması için konfigure edin. NuGet >= 4.8.5385, dotnet >= 6 veya MSBuild >= 15.8.166.59604 gerektirir.

Sözdizimi

# 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:
    #azureDevOpsServiceConnection: # string. Alias: workloadIdentityServiceConnection. Optional. Use when nuGetServiceConnections == ''. 'Azure DevOps' Service Connection. 
    #feedUrl: # string. Optional. Use when workloadIdentityServiceConnection != ''. Azure Artifacts URL. 
    #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.

Giriş

azureDevOpsServiceConnection - 'Azure DevOps' Servis Bağlantısı
Giriş diğer adı: workloadIdentityServiceConnection. string. Opsiyonel. nuGetServiceConnections == ''olduğunda kullanın.

Eğer bu ayarlanmışsa, feedUrl gereklidir. Diğer tüm girdiler göz ardı edilir.


feedUrl - Azure Artifacts URL
string. Opsiyonel. workloadIdentityServiceConnection != ''olduğunda kullanın.

Eğer bu ayarlanmışsa, workloadIdentityServiceConnection gereklidir. Diğer tüm girdiler göz ardı edilir. Uyumlu değil nuGetServiceConnections. Besleme URL'si NuGet servis indeks formatında olmalıdır: https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json.


forceReinstallCredentialProvider - önceden yüklenmiş olsa bile kimlik bilgisi sağlayıcısını yeniden yükleme
boolean. Varsayılan değer: false.

Eğer 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ının üzerine yazılıp yazılmadığını belirler. Bu, kimlik bilgisi sağlayıcısını yükseltebilir (veya eski sürüme düşürebilir).


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

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


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

Hiç kimse.

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 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 ve Azure Artifacts Credential Provider'daki bilinen sorunlar bu tür hatalara neden olabilir ve en son nuget'e güncelleme yardımcı olabilir.

Nuget/dotnet'in bazı sürümlerinde bilinen 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 ile 2.2.40X sürümlerinde düzeltildi. Eski bir sürüm kullanıyorsanız NuGet veya dotnet sürümünüzü yükseltmeyi deneyin. .NET Core Tool Installer görevi, .NET Core SDK'nın daha yeni bir sürümünü yüklemek için kullanılabilir.

Bu görevle kurulan Azure Artifacts Credential Provider ile ilgili bilinen sorunlar da vardır; bunlar arasında artifacts-credprovider/#77 ve artifacts-credprovider/#108 bulunur. Bu sorunlarla karşılaşırsanız, NuGet Kimlik Doğrulaması görevinde giriş 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ı Logingi etkinleştirin ve sorunu NuGet ile Azure Artifacts Credential Provider'ye bildirin.

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

Bu görev, nuget.exe, dotnet ve MSBuild'i kimlik doğrulama gerektiren Azure Artifacts veya diğer depolarla kimlik doğrulama yapmak üzere yapılandırır. 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'e kimlik doğrulama yalnızca görevin ömrü içinde yapılandırıldığından, paketleri geri yüklemek veya itmek için görevin kullanılmasını gerektirir. Bu, paketleri kendi betiğinizde 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, NuGet aracı kullanarak paketleri Azure Artifacts gibi kimlik doğrulamalı paket kaynağına geri yüklemek veya göndermek için kullanılmadan önce çalıştırılmalıdır. Başka sipariş gereksinimleri yoktur. Örneğin, bu görev NuGet veya .NET Core araç kurulum görevinden önce veya sonra güvenle çalışabilir.

nuget.org gibi ApiKey ("NuGet API anahtarları") kullanan bir NuGet paket kaynağını nasıl yapılandırebilirim?

nuget.org gibi bazı paket kaynakları, kimlik bilgilerini username/password yerine paketleri gönderme sırasında 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.

Yerine:

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

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 kullanacak şekilde 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 ayarlayın ve isteğe bağlı olarak ara sunucu ayarlarınıza no_proxy. Ayrıntılar için bkz. NuGet CLI ortam değişkenlerini . 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. Azure Pipelines değişkenini kullanarak ortam değişkenini ayarlamaya çalışmak işe yaramaz çünkü değişken büyük harflere dönüştürülür. Bunun yerine, şirket içinde barındırılan aracının makinesinde ortam değişkenlerini ayarlayın ve aracıyı yeniden başlatın.

  • proxy ayarlarını, nuget.config başvuru belgelerinde açıklandığı gibi el ile veya nuget config -set kullanarak kullanıcı düzeyi nuget.config dosyasına ekleyin.

    Dikkat:
    Proxy ayarları (http_proxygibi) kullanıcı düzeyinde yapılandırmaya eklenmelidir. Farklı bir nuget.config dosyasında belirtilirse bunlar yoksayılır.

Bu görevle ilgili sorunlarım varsa nasıl hata ayıklayabilirim?

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

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

Bu görev, Azure Artifacts Credential Provider dosyasını NuGet eklentileri dizinine yükler. Ardından, kimlik bilgisi sağlayıcısını yapılandırmak için VSS_NUGET_URI_PREFIXES ve VSS_NUGET_ACCESSTOKEN gibi ortam değişkenlerini ayarlar. Bu değişkenler işin ömrü boyunca ayarlanmış olarak kalır. Paketleri geri yüklerken veya gönderirken NuGet aracı, kimlik bilgilerini araca geri döndürmesi gerekip gerekmediğini belirlemek için yukarıdaki değişkenleri kullanan kimlik bilgisi sağlayıcısını yürütür.

Daha fazla ayrıntı için kimlik bilgisi sağlayıcısı belgelerine bakın.

İşlem Hattımın farklı bir projedeki bir 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 ayarlamanız gerekir. Daha fazla detay için Paket izinleri Azure Pipelines sayfasına bakınız.

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ırlarda 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 şimdi 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 It was not possible to find any compatible framework version iletisini arayın. Dotnet kullanıcıları için, NuGetAuthenticateV1, NuGetAuthenticateV0'da 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ı kurun.

- 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ı boru hattınızla aynı organizasyondaysa, NuGetAuthenticate görevini herhangi bir giriş belirtmeden 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 proje 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 nuGetServiceConnections girişinde hizmet bağlantısını belirtin. Daha sonra bir görevdeki -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 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 kaynak 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ştan Azure Artifacts akış kullanıyorsanız veya üçüncü taraf kimlik doğrulamalı paket deposu kullanıyorsanız, NuGet servis bağlantılarını kurmanız ve bunları nuGetServiceConnections girişinde belirtmeniz gerekir. Azure Artifacts organizasyonunuzdaki akışlar da otomatik olarak kimlik doğrulaması sağlanacaktı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 kaynak 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.

Gereksinim -leri

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Aracı, DeploymentGroup
Talepleri Hiç kimse
Özellikleri Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi
Ayarlanabilir değişkenleri Herhangi
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 Aracı, DeploymentGroup
Talepleri Hiç kimse
Özellikleri Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi
Ayarlanabilir değişkenleri Herhangi
Aracı sürümü 2.120.0 veya üzeri
Görev kategorisi Paket