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 propertiname:
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:
- Buka Pengaturan>proyek Koneksi layanan Koneksi> layanan baru.
- Pilih NuGet, lalu pilih Berikutnya.
- 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
Buat kunci API.
Navigasi ke proyek Azure DevOps Anda lalu pilih Pengaturan proyek.
Pilih Koneksi layanan, lalu pilih Koneksi layanan baru.
Pilih NuGet, lalu pilih Berikutnya.
Pilih ApiKey sebagai metode autentikasi Anda. Gunakan url berikut untuk URL Umpan Anda: https://api.nuget.org/v3/index.json.
Masukkan ApiKey yang Anda buat sebelumnya, lalu masukkan nama koneksi Layanan.
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
Artikel terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk