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
nuGetServiceConnections
Bu 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.
forceReinstallCredentialProvider
Zaten 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:

  1. ApiKey içeren bir gizli değişken yapılandırma
  2. Değişkeni olarak adlandırılmış olduğunu nuget push -ApiKey $(myNuGetApiKey) varsayarak veya dotnet nuget push --api-key $(myNuGetApiKey) kullanarak paket anında yüklemesi gerçekleştirin myNuGetApiKey

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_proxy isteğe bağlı olarak no_proxy ara 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:
    ve http_proxy değişkenleri Linux ve Mac işletim sistemlerinde no_proxy bü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.