NuGet ile Azure Pipelines paketleri yayımlama (YAML/Klasik)

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

Bu Azure Pipelines işlem hattınız içinde, Azure Artifacts akışında veya nuget.org gibi genel kayıt defterlerinde NuGet paketlerinizi yayımlamak için klasik düzenleyiciyi veya YAML görevlerini kullanabilirsiniz.

Bir NuGet oluşturma

NuGet paketlerinizi paketlemek için Visual Studio kullanma gibi çeşitli NuGet vardır. Paketlerinizi oluşturmak için zaten MSBuild görev veya başka bir görev kullanıyorsanız, bu bölümü atlayın ve paketleri yayımlama bölümüne atlayın.

Yeni bir NuGet oluşturmak için aşağıdaki kod parçacığını işlem hattı YAML dosyanıza ekleyin. Daha NuGet için bkz. görev.

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'
  • packagesToPack:paketi yapılacak csproj dizinlerini aramak için desen
  • packDestination:paketlerin oluşturulacak dizini

TFS'de YAML desteklenmiyor.

Paket sürümü oluşturma

NuGet paketleri adları ve sürüm numaralarıyla tanımlanır. Paketlerinizin sürümünün kullanılması için önerilen bir yaklaşım, Semantik Sürüm Kullanımı'dır. Semantik sürümlerin üç sayısal bileşeni vardır: Ana,Küçükve Düzeltme Eki.

Düzeltme eki genellikle bir hata düzeltdikten sonra artırılır (örn. 1.0.0 - 1.0.1). Geriye dönük uyumlu yeni bir özellik yayımlarsanız ikincil sürümü artırır ve düzeltme eki sürümünü 0'a sıfırlarsınız (örneğin, 1.4.17 - 1.5.0). Geriye dönük uyumsuz bir değişiklik yapmak için ana sürümü artırır ve ikincil ve düzeltme eki sürümlerini 0'a sıfırlarsınız (örn. 2.6.5 - 3.0.0).

Semantik Sürüm Oluşturma ile paketlerinizi etiketlemek için ön sürüm etiketlerini de kullanabilirsiniz. Ön sürüm etiketlerini kullanmak için bir kısa çizgi ve ardından seçtiğiniz harf veya numaralar girin:örneğin, 1.0.0-beta.

Semantik Sürüm Azure Pipelines, aşağıdaki görevlerde NuGet:

  • Derleme ve paketleriniz için aynı sürüm oluşturma düzenini kullanın:

    • $(Major).$(Minor).$(rev:.r), burada Major ve Minor , işlem hattında tanımlanan iki değişkendir. Bu biçim, derleme numarasını ve paket sürümünü yeni bir düzeltme eki numarasıyla otomatik olarak artırır. Ana ve ikincil sürümleri el ile değiştirene kadar sabit tutacağız.
    • $(Major).$(Minor).$(Patch).$(date:yyyyMMdd), burada Major , ve , işlem MinorPatch hattında tanımlanan değişkenlerdir. Bu biçim, derleme ve paket için yeni bir ön sürüm etiketi oluşturmanın ardından ana, alt ve düzeltme eki sürümlerini sabit tutacak.
  • Özel sürüm oluşturma düzeni kullanın. Paketleriniz için ana, ikincil ve düzeltme eki sürümlerini özelleştirilebilir ve NuGet görevin tarih ve saati temel alarak benzersiz bir yayın öncesi etiketi oluşturmasına izin veresiniz.

  • sürümünü oluşturmak için derleme işlem hattında bir betik kullanın.

Bu örnekte tarih ve saati ön yayın etiketi olarak nasıl kullanabileceğiniz gösterir.

variables:
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:
- task: NuGetCommand@2
  inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

TFS'de YAML desteklenmiyor.

Not

DotNetCore ve DotNetStandard paketleri, DotNetCoreCLI@2 System.InvalidCastExceptions'ın önüne geçebilirsiniz. Diğer ayrıntılar için .NET Core CLI görev bilgilerine bakın.

task: DotNetCoreCLI@2
inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

Paket yayımlama

İşlem hattınız tarafından Azure Artifacts bir akışa paket yayımlamak için Project Koleksiyonu Derleme Hizmeti kimliğini akışınıza Katkıda Bulunan olarak ayarlayabilirsiniz. Diğer ayrıntılar için bkz. Akış ayarlarını yapılandırma.

steps:
- task: NuGetAuthenticate@0
  displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    publishVstsFeed: '<projectName>/<feed>'
    allowPackageConflicts: true

Paketi dış akışa yayımlamak NuGet, önce bu akışa bağlanmak için bir hizmet bağlantısı oluşturmanız gerekir. Bu, Hizmet bağlantıları Yeni hizmet bağlantısı Projectayarlarına gidipbunu yapabilirsiniz. Öğesini NuGetve ardından Sonraki'yi seçin. Formu doldurun ve bitirerek Kaydet'i seçin. Diğer ayrıntılar için bkz. Hizmet bağlantılarını yönetme.

Paketi dış akışta yayımlamak NuGet YAML işlem hattınıza aşağıdaki kod parçacığını ekleyin.

- task: NuGetAuthenticate@0
  inputs:
    nuGetServiceConnections: '<NAME_OF_YOUR_NUGET_SERVICE_CONNECTION>'
- task: NuGetCommand@2
  inputs:
    command: push
    nuGetFeedType: external
    versioningScheme: byEnvVar
    versionEnvVar: <VERSION_ENVIRONMENT_VARIABLE>

TFS'de YAML desteklenmiyor.