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

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Pipelines'ı kullanarak, Klasik veya YAML işlem hatlarını kullanarak NuGet paketlerinizi kuruluşunuzdaki, diğer kuruluşlardaki Azure Artifacts akışlarına ve nuget.org gibi genel kayıt defterlerine yayımlayabilirsiniz. Bu makalede şunları yapmayı öğreneceksiniz:

  • Paketleri iç akışa yayımlama
  • Paketleri farklı bir kuruluştaki bir akışa yayımlama
  • Paket sürümü oluşturma

Önkoşullar

NuGet paketlerini aynı kuruluştaki bir akışa yayımlama

Not

Azure Pipelines kullanarak paketlerinizi bir akışa yayımlamak için hem Proje Koleksiyonu Derleme Hizmeti'ne hem de projenizin Derleme Hizmeti kimliklerine akış ayarlarınızda atanan Akış Yayımcısı (Katkıda Bulunan) rolü verildiğinden emin olun. Daha fazla ayrıntı için bkz . İzinleri yönetme.

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem hatları'yı ve ardından işlem hattı tanımınızı seçin.

  3. Düzenle'yi seçin ve ardından YAML işlem hattınıza aşağıdaki kod parçacığını ekleyin.

steps:
- task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
  displayName: 'NuGet Tool Installer'

- task: NuGetAuthenticate@0
  displayName: 'NuGet Authenticate'

- script: |
      nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
  displayName: Push
  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem hatları'yı ve ardından işlem hattı tanımınızı seçin.

  3. Düzenle'yi seçin ve ardından YAML işlem hattınıza aşağıdaki kod parçacığını ekleyin.

steps:
- task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
  displayName: 'NuGet Tool Installer'

- task: NuGetAuthenticate@1
  displayName: 'NuGet Authenticate'

- script: |
      nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
  displayName: Push

NuGet paketlerini başka bir kuruluştaki bir akışa yayımlama

NuGet paketlerinizi farklı bir Azure DevOps kuruluşundaki bir akışta yayımlamak için öncelikle hedef kuruluşta bir kişisel erişim belirteci (PAT) oluşturmanız gerekir. Hedef akışınızı barındıran kuruluşa gidin ve Paketleme>Okuma ve yazma kapsamıyla kişisel erişim belirteci oluşturun. PAT oluşturulduktan sonra, bir hizmet bağlantısı kurmak için aşağıdaki bölümde gerek duyacağınız için bunu kopyalayıp güvenli bir konumda depolayın.

  1. İşlem hattınızın çalıştırılacağı Azure DevOps kuruluşunda oturum açın ve projenize gidin.

  2. Proje ayarlarınız>Hizmet bağlantıları'na gidin.

  3. Yeni hizmet bağlantısı'nı, NuGet'i ve ardından İleri'yi seçin.

  4. Kimlik Doğrulama yöntemi olarak Dış Azure DevOps Server'ı seçin ve hedef Akış URL'nizi girin. Daha önce oluşturduğunuz Kişisel Erişim Belirtecini yapıştırın, hizmet bağlantınız için bir ad sağlayın ve Senaryonuz için uygunsa Tüm işlem hatlarına erişim izni ver seçeneğini işaretleyin.

  5. Bitirdiğinizde Kaydet'i seçin.

    Farklı bir kuruluştaki dış akışla kimlik doğrulaması yapmak için NuGet hizmet bağlantısının nasıl ayarlandığını gösteren ekran görüntüsü.

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem hatları'yı ve ardından işlem hattı tanımınızı seçin.

  3. Düzenle'yi seçin ve ardından YAML işlem hattınıza aşağıdaki kod parçacığını ekleyin.

    - task: NuGetToolInstaller@1                                # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push       
    
  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem hatları'yı ve ardından işlem hattı tanımınızı seçin.

  3. Düzenle'yi seçin ve ardından YAML işlem hattınıza aşağıdaki kod parçacığını ekleyin.

    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@0
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>
    
    - script: |
        nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push          
    

Paketin farklı bir kuruluştaki bir akışta başarıyla yayımlandığını gösteren ekran görüntüsü.

NuGet görev paketi sürümü oluşturma

Azure Pipelines AnlamSal Sürüm Oluşturma'yi destekler ve NuGet görevleri için aşağıdaki yapılandırma seçeneklerini sağlar:

  • Tarih ve saati kullanma (Klasik) | byPrereleaseNumber (YAML): Paket sürümünüz şu biçimi izler: Major.Minor.Patch-ci-datetime burada Major, Minor ve Patch değerlerini özelleştirme esnekliğine sahip olursunuz.

  • Ortam değişkeni kullanma (Klasik) | byEnvVar (YAML): Paket sürümünüz belirtilen ortam değişkeninin değerine ayarlanır.

  • Derleme numarasını kullanma (Klasik) | byBuildNumber (YAML): Paket sürümünüz derleme numarasına ayarlanır. İşlem hattı Seçeneklerinizde derleme numarası biçimini olarak $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)tanımladığınızdan emin olun. YAML'de biçimi belirtmek için işlem hattınızın köküne bir name: özellik ekleyin ve biçiminizi tanımlayın.

Aşağıda, tarih ve saat sürümü oluşturma özelliğini kullanarak şu şekilde biçimlendirilmiş SemVer uyumlu bir paket oluşturmayı gösteren bir örnek verilmiştir: Major.Minor.Patch-ci-datetime.

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

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

Not

DotNetCore ve DotNetStandard paketleri System.InvalidCastExceptions önlemek için görevle birlikte DotNetCoreCLI@2 paketlenmelidir. Daha fazla ayrıntı için .NET Core CLI görevine bakın.

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