Bagikan melalui


Menerbitkan paket NuGet dengan Azure Pipelines (YAML/Klasik)

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Dengan menggunakan Azure Pipelines, Anda dapat menerbitkan paket NuGet ke umpan Azure Artifacts di organisasi Anda, di organisasi lain, dan ke registri publik seperti nuget.org, menggunakan alur Klasik atau YAML. Dalam artikel ini, Anda akan mempelajari cara:

  • Menerbitkan paket ke umpan internal
  • Menerbitkan paket ke umpan di organisasi lain
  • Penerapan versi paket

Prasyarat

Menerbitkan paket NuGet ke umpan di organisasi yang sama

Catatan

Untuk menerbitkan paket Anda ke umpan menggunakan Azure Pipelines, pastikan bahwa Project Collection Build Service dan identitas Build Service proyek Anda diberikan peran Penerbit Umpan (Kontributor) yang ditetapkan di pengaturan umpan Anda. Lihat Mengelola izin untuk detail selengkapnya.

  1. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Alur, lalu pilih definisi alur Anda.

  3. Pilih Edit, lalu tambahkan cuplikan berikut ke alur YAML Anda.

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. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Alur, lalu pilih definisi alur Anda.

  3. Pilih Edit, lalu tambahkan cuplikan berikut ke alur YAML Anda.

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

Menerbitkan paket NuGet ke umpan di organisasi lain

Untuk menerbitkan paket NuGet Anda ke umpan di organisasi Azure DevOps yang berbeda, Anda harus terlebih dahulu membuat token akses pribadi (PAT) di organisasi target. Navigasi ke organisasi yang menghosting umpan target Anda dan Buat token akses pribadi dengan Kemasan>Baca & tulis cakupan. Setelah PAT dibuat, salin dan simpan di lokasi yang aman, karena Anda akan membutuhkannya di bagian berikut untuk menyiapkan koneksi layanan.

  1. Masuk ke organisasi Azure DevOps tempat alur Anda akan berjalan, lalu navigasikan ke proyek Anda.

  2. Navigasikan ke pengaturan Proyek>Koneksi layanan Anda.

  3. Pilih Koneksi layanan baru, pilih NuGet, lalu pilih Berikutnya.

  4. Pilih Server Azure DevOps Eksternal sebagai metode Autentikasi, lalu masukkan URL Umpan target Anda. Tempelkan Token Akses Pribadi yang Anda buat sebelumnya, berikan nama untuk koneksi layanan Anda, dan centang Berikan izin akses ke semua alur jika berlaku untuk skenario Anda.

  5. Pilih Simpan saat Anda selesai.

    Cuplikan layar yang menampilkan cara menyiapkan koneksi layanan NuGet untuk mengautentikasi dengan umpan eksternal di organisasi yang berbeda.

  1. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Alur, lalu pilih definisi alur Anda.

  3. Pilih Edit, lalu tambahkan cuplikan berikut ke alur YAML Anda.

    - 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. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Alur, lalu pilih definisi alur Anda.

  3. Pilih Edit, lalu tambahkan cuplikan berikut ke alur YAML Anda.

    - 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          
    

Cuplikan layar yang menampilkan paket berhasil diterbitkan ke umpan di organisasi yang berbeda.

Penerapan versi paket tugas NuGet

Azure Pipelines mendukung Penerapan Versi Semantik dan menyediakan opsi konfigurasi berikut untuk tugas NuGet:

  • Gunakan tanggal dan waktu (Klasik) | byPrereleaseNumber (YAML): Versi paket Anda akan mengikuti format: Major.Minor.Patch-ci-datetime di mana Anda memiliki fleksibilitas untuk menyesuaikan nilai Mayor, Minor, dan Patch.

  • Menggunakan variabel lingkungan (Klasik) | byEnvVar (YAML): Versi paket Anda diatur ke nilai variabel lingkungan yang ditentukan.

  • Menggunakan nomor build (Klasik) | byBuildNumber (YAML): Versi paket Anda diatur ke nomor build. Pastikan Anda menentukan format nomor build di Opsi alur Anda sebagai $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r). Untuk menentukan format dalam YAML, tambahkan name: properti di akar alur Anda dan tentukan format Anda.

Berikut ini adalah contoh yang menunjukkan cara menggunakan penerapan versi tanggal dan waktu untuk menghasilkan paket yang sesuai dengan SemVer yang diformat sebagai: 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)'

Catatan

DotNetCore dan DotNetStandard paket harus dipaketkan dengan DotNetCoreCLI@2 tugas untuk menghindari System.InvalidCastExceptions. Lihat tugas .NET Core CLI untuk detail selengkapnya.

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