Bagikan melalui


Menerbitkan paket NuGet dengan Azure Pipelines (YAML/Klasik)

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

Dengan Azure Pipelines, Anda dapat menggunakan alur klasik atau YAML untuk menerbitkan paket NuGet ke umpan Artefak Azure, umpan eksternal, atau registri publik seperti nuget.org. Dalam artikel ini, Anda akan mempelajari cara:

  • Membuat paket NuGet di Azure Pipelines
  • Menerbitkan paket ke umpan internal dan eksternal
  • Menerbitkan paket ke NuGet.org

Prasyarat

Membuat paket NuGet

Ada beberapa cara untuk membuat paket NuGet Anda, seperti menggunakan dotnet atau nuget.exe CLI untuk mengemas paket Anda. Jika Anda sudah menggunakan MSBuild atau tugas lain untuk membuat paket, Anda dapat melewati bagian ini dan melanjutkan ke yang berikutnya.

Untuk membuat paket NuGet, tambahkan cuplikan berikut ke file YAML Anda. Lihat Tugas NuGet untuk detail selengkapnya.

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'
  • packagesToPack: pola yang digunakan tugas untuk mencari direktori csproj untuk dikemas.
  • packDestination: direktori tempat paket dibuat. Jika kosong, paket akan dibuat di akar sumber.

Penerapan versi paket

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

Nomor Patch dinaikkan setelah memperbaiki bug. Saat merilis fitur baru yang kompatibel dengan versi mundur, Anda meningkatkan versi Minor dan mengatur ulang versi Patch ke 0. Sebaliknya, ketika membuat perubahan mundur yang tidak kompatibel, Anda menaikkan versi Utama dan mengatur ulang versi Minor dan Patch ke 0.

Penerapan Versi Semantik juga mendukung penggunaan label prarilis untuk menandai paket. Cukup tambahkan tanda hubung diikuti dengan tag prarilis Anda, misalnya: 1.0.0-beta.

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

  • Gunakan tanggal dan waktu (Klasik) | byPrereleaseNumber (YAML): Versi paket Anda 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.

Di bawah 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)'

Menerbitkan paket ke umpan internal

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.

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

Menerbitkan paket ke umpan eksternal

Untuk menerbitkan paket Anda ke umpan NuGet eksternal atau registri publik, seperti umpan di organisasi Azure DevOps lainnya atau nuget.org, Anda harus terlebih dahulu membuat koneksi layanan untuk mengautentikasi dengan layanan masing-masing:

  1. Dari proyek Azure DevOps Anda, navigasikan ke Pengaturan proyek>Koneksi layanan>

  2. Pilih Koneksi>layanan baru NuGet>Berikutnya.

  3. Isi bidang yang diperlukan lalu pilih Simpan setelah selesai. Lihat Mengelola koneksi layanan untuk detail selengkapnya.

Catatan

Tugas NuGetAuthenticate@1 mendukung koneksi layanan dengan autentikasi dasar tetapi tidak mendukung autentikasi Apikey. Untuk menggunakan autentikasi ApiKey, Anda harus menggunakan tugas NuGetCommand@2 sebagai gantinya.

Untuk menerbitkan paket NuGet Anda ke umpan di organisasi lain, tambahkan cuplikan berikut ke alur YAML Anda:

  • Menggunakan tugas baris Perintah dan 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 dan 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 string apa pun saat menerbitkan ke umpan Azure Artifacts.

Menerbitkan ke NuGet.org

  1. Masuk ke akun nuget.org Anda dan Buat kunci API.

  2. Navigasi ke proyek Azure DevOps Anda lalu pilih ikon gigi Pengaturan proyek.

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

  4. Pilih NuGet, lalu pilih Berikutnya.

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

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

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

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