Menerbitkan paket NuGet dengan Azure Pipelines (YAML/Klasik)

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

Di Azure Pipelines, Anda dapat menggunakan editor klasik atau tugas YAML untuk menerbitkan paket NuGet dalam alur Anda, ke umpan Azure Artifacts Anda, atau ke registri publik seperti nuget.org.

Membuat paket NuGet

Ada berbagai cara untuk membuat paket NuGet Anda seperti menggunakan Visual Studio untuk mengemas paket NuGet Anda. Jika Anda sudah menggunakan MSBuild atau beberapa tugas lain untuk membuat paket Anda, lewati bagian ini dan lompat ke bagian terbitkan paket NuGet.

Untuk membuat paket NuGet, tambahkan cuplikan berikut ke file YAML alur Anda. Untuk informasi selengkapnya, lihat tugas NuGet.

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'
  • packagesToPack: pola untuk mencari direktori csproj untuk dikemas
  • packDestination: direktori tempat paket dibuat

Penerapan versi paket

Paket NuGet dibedakan dengan nama dan nomor versinya. Menggunakan Penerapan Versi Semantik adalah strategi yang direkomendasikan untuk mengelola versi paket secara efektif. Versi semantik terdiri dari tiga komponen numerik: Mayor, Minor, dan Patch.

Patch bertahas setelah memperbaiki bug. Saat Anda merilis fitur baru yang kompatibel dengan mundur, Anda akan menaikkan versi Minor dan mengatur ulang versi Patch ke 0. Ketika Anda membuat perubahan mundur yang tidak kompatibel, Anda menaikkan versi Utama dan mengatur ulang versi Minor dan Patch ke 0.

Dengan Penerapan Versi Semantik, Anda juga dapat menggunakan label prarilis untuk menandai paket Anda. Untuk melakukannya, masukkan tanda hubung diikuti dengan tag prarilis Anda: Misalnya 1.0.0-beta. Penerapan Versi Semantik didukung di Azure Pipelines dan dapat dikonfigurasi dalam tugas NuGet Anda sebagai berikut:

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

  • Gunakan variabel lingkungan (Klasik): byEnvVar (YAML). Versi paket Anda diatur ke nilai variabel lingkungan yang Anda tentukan.

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

Contoh berikut menunjukkan cara menggunakan opsi penerapan versi tanggal dan waktu untuk menghasilkan versi 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. Untuk informasi selengkapnya, lihat tugas .NET Core CLI.

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

Menerbitkan paket NuGet

Untuk menerbitkan paket ke umpan Azure Artifacts dari alur Anda, identitas alur harus memiliki peran Penerbit Umpan (Kontributor) pada umpan. Untuk informasi selengkapnya, lihat Izin alur.

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

Untuk menerbitkan paket ke umpan NuGet eksternal, Anda harus terlebih dahulu membuat koneksi layanan untuk menyambungkan ke umpan tersebut. Untuk membuat koneksi layanan:

  1. Buka Pengaturan>proyek Koneksi layanan Koneksi> layanan baru.
  2. Pilih NuGet, lalu pilih Berikutnya.
  3. Isi formulir lalu pilih Simpan setelah selesai.

Untuk informasi selengkapnya, lihat Mengelola koneksi layanan.

Catatan

Tugas NuGetAuthenticate@1 mendukung koneksi layanan menggunakan authenication dasar. Tugas ini tidak mendukung autentikasi kunci NUGet API. Jika koneksi layanan Anda menggunakan ApiKey, Anda harus menggunakan tugas NuGetCommand@2 dan menentukan kunci NUGet API di bidang argumen . Untuk informasi selengkapnya, lihat tugas NuGet.

Untuk menerbitkan paket ke umpan NuGet eksternal, tambahkan cuplikan berikut ke alur YAML Anda.

Menggunakan tugas Baris perintah (dengan NuGet.exe):

  - task: NuGetAuthenticate@1
    inputs:
      nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION>

  - script: |
      nuget push <PACKAGE_PATH> -src https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>
    displayName: "Push"          

Menggunakan tugas Baris perintah (dengan dotnet):

  - task: NuGetAuthenticate@1
    inputs:
      nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION>

  - script: |
      dotnet build <CSPROJ_PATH> --configuration <CONFIGURATION>
      dotnet pack <CSPROJ_PATH> -p:PackageVersion=<YOUR_PACKAGE_VERSION> --output <OUTPUT_DIRECTORY> --configuration <CONFIGURATION>
      dotnet nuget push <PACKAGE_PATH> --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING>
    displayName: "Build, pack and push"          

Catatan

ApiKey diperlukan, tetapi Anda dapat menggunakan nilai arbitrer apa pun saat mendorong ke umpan Azure Artifacts.

Menerbitkan ke NuGet.org

  1. Buat kunci API.

  2. Navigasi ke proyek Azure DevOps Anda lalu pilih ikon gigiPengaturan proyek.

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

  4. Pilih NuGet, lalu pilih Berikutnya.

  5. Pilih ApiKey sebagai metode autentikasi Anda. Gunakan url berikut untuk URL Umpan Anda: https://api.nuget.org/v3/index.json.

  6. Masukkan ApiKey yang Anda buat sebelumnya, lalu masukkan nama koneksi Layanan.

  7. Pilih Berikan izin akses ke semua alur, lalu pilih Simpan saat Anda selesai. Untuk memilih opsi ini, Anda memerlukan peran Administrator koneksi layanan.

Tambahkan cuplikan YAML berikut ke definisi alur Anda:

steps:
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    nuGetFeedType: external
    publishFeedCredentials: nuget.org