Menerbitkan paket NuGet

Setelah membuat paket NuGet dan memiliki file .nupkg , Anda dapat membuat paket tersedia untuk pengembang lain baik secara publik maupun privat. Artikel ini menjelaskan cara berbagi paket publik secara global melalui nuget.org.

Anda juga dapat membuat paket privat hanya tersedia untuk tim atau organisasi dengan menghostingnya di berbagi file, server NuGet privat, atau repositori pihak ketiga seperti myget, ProGet, Repositori Nexus, atau Artifactory. Untuk informasi selengkapnya, lihat Menghosting umpan NuGet Anda sendiri. Untuk menerbitkan dengan Azure Artifacts, lihat Menerbitkan paket ke NuGet.org.

Terbitkan ke nuget.org

Untuk menerbitkan di nuget.org, masuk ke nuget.org dengan akun Microsoft, dan gunakan untuk membuat akun nuget.org gratis. Ikuti instruksi di Menambahkan akun individual baru.

Screenshot that shows the NuGet sign in link.

Setelah memiliki akun, Anda dapat menerbitkan paket ke nuget.org dengan menggunakan portal web nuget.org, CLI dotnet, atau NuGet CLI versi 4.1.0 atau yang lebih tinggi. Anda juga dapat menerbitkan paket melalui Azure Pipelines.

Mengunggah ke portal web nuget.org

Untuk mengunggah paket ke situs web nuget.org:

  1. Pilih Unggah di menu atas di nuget.org, telusuri paket di komputer Anda, dan pilih Buka.

    Screenshot that shows the Upload dialog on nuget.org

    Jika ID paket sudah ada di nuget.org, Anda mendapatkan kesalahan. Ubah pengidentifikasi paket di proyek Anda, kemas ulang, dan coba unggah lagi.

  2. Jika nama paket tersedia, bagian Verifikasi terbuka sehingga Anda dapat meninjau metadata dari manifes paket. Jika Anda menyertakan file readme dalam paket Anda, pilih Pratinjau untuk memastikan semua konten dirender dengan benar.

    Untuk mengubah salah satu metadata, edit file proyek atau file .nuspec Anda, bangun ulang, kemas ulang, dan unggah lagi.

  3. Setelah semua informasi siap, pilih Kirim.

Dorong dengan menggunakan baris perintah

Untuk mendorong paket ke nuget.org dengan baris perintah, Anda dapat menggunakan dotnet.exe atau nuget.exe v4.1.0 atau lebih tinggi, yang menerapkan protokol NuGet yang diperlukan. Untuk informasi selengkapnya, lihat Protokol NuGet.

Untuk menggunakan salah satu baris perintah, Anda harus terlebih dahulu mendapatkan kunci API dari nuget.org.

Membuat kunci API

  1. Masuk ke akun nuget.org Anda atau buat akun jika Anda belum memilikinya.

  2. Pilih nama pengguna Anda di kanan atas, lalu pilih Kunci API.

  3. Pilih Buat, dan berikan nama untuk kunci Anda.

  4. Di bawah Pilih Cakupan, pilih Dorong.

  5. Di bawah Pilih Pola Glob Paket>, masukkan *.

  6. Pilih Buat.

  7. Pilih Salin untuk menyalin kunci baru.

    Screenshot that shows the new API key with the Copy link.

Penting

  • Selalu rahasiakan kunci API Anda. Kunci API seperti kata sandi yang memungkinkan siapa pun mengelola paket atas nama Anda. Hapus atau regenerasi kunci API Anda jika tidak sengaja terungkap.
  • Simpan kunci Anda di lokasi yang aman, karena Anda tidak dapat menyalin kunci lagi nanti. Jika Anda kembali ke halaman kunci API, Anda perlu meregenerasi kunci untuk menyalinnya. Anda juga dapat menghapus kunci API jika Anda tidak ingin lagi mendorong paket.

Cakupan memungkinkan Anda membuat kunci API terpisah untuk tujuan yang berbeda. Setiap kunci memiliki jangka waktu kedaluwarsa, dan Anda dapat mencakup kunci ke paket atau pola glob tertentu. Anda juga mencakup setiap kunci ke operasi tertentu: Mendorong paket dan versi paket baru, hanya mendorong versi paket baru, atau membatalkan daftar.

Melalui cakupan, Anda dapat membuat kunci API untuk orang yang berbeda yang mengelola paket untuk organisasi Anda sehingga mereka hanya memiliki izin yang mereka butuhkan.

Untuk informasi selengkapnya, lihat kunci API cakupan.

Menggunakan CLI dotnet

Dari folder yang berisi file .nupkg , jalankan perintah berikut. Tentukan nama file .nupkg Anda, dan ganti nilai kunci dengan kunci API Anda.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

Output menunjukkan hasil proses penerbitan:

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

Untuk informasi selengkapnya, lihat dotnet nuget push.

Catatan

Jika Anda ingin menghindari paket pengujian Anda ditayangkan di nuget.org, Anda dapat mendorong ke situs pengujian nuget.org di https://int.nugettest.org. Perhatikan bahwa paket yang diunggah ke int.nugettest.org mungkin tidak dipertahankan.

Menggunakan NuGet CLI

  1. Pada prompt perintah, jalankan perintah berikut, ganti <your_API_key> dengan kunci yang Anda dapatkan dari nuget.org:

    nuget setApiKey <your_API_key>
    

    Perintah ini menyimpan kunci API Anda dalam konfigurasi NuGet sehingga Anda tidak perlu memasukkan kunci API lagi di komputer yang sama.

    Catatan

    Kunci API ini tidak digunakan untuk mengautentikasi dengan umpan privat. Untuk mengelola kredensial untuk mengautentikasi dengan sumber ini, lihat perintah sumber nuget.

  2. Dorong paket dengan menggunakan perintah berikut:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Menerbitkan dengan Azure Pipelines

Anda dapat mendorong paket ke nuget.org dengan Azure Pipelines sebagai bagian dari proses integrasi berkelanjutan/penyebaran berkelanjutan (CI/CD). Untuk informasi selengkapnya, lihat Menerbitkan paket NuGet dengan Azure Pipelines.

Menerbitkan paket yang ditandatangani

Untuk mengirimkan paket yang ditandatangani, Anda harus terlebih dahulu mendaftarkan sertifikat yang Anda gunakan untuk menandatangani paket. Jika Anda tidak memenuhi persyaratan paket yang ditandatangani, nuget.org menolak paket.

Batas ukuran paket

Nuget.org memiliki batas ukuran paket sekitar 250 MB. Ketika paket yang melebihi batas tersebut diunggah, kesalahan berikut ditampilkan:

File paket melebihi batas ukuran. Harap coba lagi.

Jika paket tersebut didorong dari baris perintah, output berikut diproduksi:

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

Jika Anda mendapatkan kesalahan ini, pertimbangkan untuk merevisi konten paket untuk mengurangi ukurannya. Jika Anda mengemas simbol debug ke dalam paket Anda, pertimbangkan untuk menerbitkannya secara terpisah. Aset lain dapat diterbitkan secara terpisah sebagai satu atau beberapa paket dependensi untuk menyebarkannya ke potongan yang lebih kecil.

Validasi dan pengindeksan paket

Paket yang didorong untuk nuget.org menjalani beberapa validasi, seperti pemeriksaan virus, dan paket yang ada dipindai secara berkala. Ketika paket melewati semua pemeriksaan validasi, mungkin perlu beberapa saat untuk diindeks dan muncul di hasil pencarian. Saat paket sedang diindeks, paket muncul di bawah Paket Tidak Terdaftar, dan Anda melihat pesan berikut di halaman paket:

Screenshot of a message indicating that a package isn't yet published.

Setelah validasi dan pengindeksan selesai, Anda menerima email bahwa paket berhasil diterbitkan. Jika paket gagal pemeriksaan validasi, halaman paket diperbarui untuk menampilkan kesalahan terkait, dan Anda menerima email pemberitahuan.

Validasi dan pengindeksan paket biasanya memakan waktu kurang dari 15 menit. Jika penerbitan paket memakan waktu lebih lama dari yang diharapkan, periksa status nuget.org di status.nuget.org. Jika semua sistem beroperasi dan paket tidak berhasil diterbitkan dalam waktu satu jam, hubungi nuget.org dengan menggunakan tautan Hubungi dukungan di halaman paket.

Untuk melihat status paket, pilih Kelola paket di bawah nama akun Anda di kanan atas di nuget.org, dan pilih paket dari Paket yang Diterbitkan atau Paket Tidak Terdaftar.

Mengelola pemilik paket di nuget.org

Pemilik paket memiliki izin penuh untuk paket, termasuk menambahkan dan menghapus pemilik lain dan menerbitkan pembaruan.

Meskipun file .nuspec paket NuGet menentukan penulis paket, nuget.org tidak menggunakan metadata tersebut untuk menentukan kepemilikan. Sebagai gantinya, nuget.org menetapkan kepemilikan kepada orang yang menerbitkan paket, baik pengguna yang masuk yang mengunggah paket, atau pengguna yang kunci API-nya digunakan dengan dotnet push, , nuget SetApiKeyatau nuget push.

Untuk mengubah kepemilikan paket:

  1. Masuk ke nuget.org dengan akun yang saat ini memiliki paket.

  2. Pilih nama akun Anda di kanan atas, pilih Kelola paket, dan perluas Paket yang Diterbitkan.

  3. Pilih paket yang ingin Anda kelola, dan di sisi kanan halaman paket, pilih Kelola paket.

  4. Pada halaman manajemen paket, pilih Pemilik.

  5. Ikuti salah satu tindakan berikut:

    • Pilih Hapus untuk menghapus pemilik saat ini.

    • Tambahkan pemilik di bawah Tambahkan pemilik dengan memasukkan nama pengguna dan pesan mereka, dan memilih Tambahkan.

      Tindakan ini mengirim email ke pemilik bersama baru dengan tautan konfirmasi. Setelah dikonfirmasi, orang tersebut memiliki izin penuh untuk menambahkan dan menghapus pemilik. Hingga dikonfirmasi, bagian Pemilik saat ini menunjukkan persetujuan yang tertunda untuk orang tersebut.

Untuk mentransfer kepemilikan, seperti ketika kepemilikan berubah atau paket diterbitkan di bawah akun yang salah, tambahkan pemilik baru. Setelah mengonfirmasi kepemilikan, mereka dapat menghapus pemilik lama dari daftar.

Untuk menetapkan kepemilikan ke perusahaan atau grup, buat akun nuget.org dengan alias email yang diteruskan ke anggota tim yang sesuai. Misalnya, berbagai paket Microsoft ASP.NET dimiliki bersama oleh akun microsoft dan aspnet .

Terkadang, paket mungkin tidak memiliki pemilik aktif. Misalnya, pemilik asli mungkin telah meninggalkan perusahaan yang memproduksi paket. Jika Anda adalah pemilik paket yang sah dan perlu mendapatkan kembali kepemilikan, gunakan formulir kontak di nuget.org untuk menjelaskan situasi Anda kepada tim NuGet. Tim mengikuti proses untuk memverifikasi kepemilikan Anda, termasuk mencoba menemukan pemilik yang ada, dan dapat mengirimi Anda undangan baru untuk menjadi pemilik paket.

Langkah berikutnya