NuGetAuthenticate@1 - NuGet mengautentikasi tugas v1

Konfigurasikan alat NuGet untuk mengautentikasi dengan Azure Artifacts dan repositori NuGet lainnya. Membutuhkan NuGet >= 4.8.5385, dotnet >= 6, atau MSBuild >= 15.8.166.59604.

Sintaks

# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
  inputs:
    #nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization. 
    #forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.

Input

nuGetServiceConnections - Kredensial koneksi layanan untuk umpan di luar organisasi ini
string.

Opsional. Daftar nama koneksi layanan NuGet yang dipisahkan koma untuk umpan di luar organisasi atau koleksi ini. Untuk umpan dalam organisasi atau koleksi ini, biarkan kosong ini; kredensial build digunakan secara otomatis.


forceReinstallCredentialProvider - Instal ulang penyedia kredensial meskipun sudah diinstal
boolean. Nilai default: false.

Opsional. Instal ulang penyedia kredensial ke direktori profil pengguna, meskipun sudah diinstal. Jika penyedia kredensial sudah diinstal di profil pengguna, tugas menentukan apakah itu ditimpa dengan penyedia kredensial yang disediakan tugas. Ini dapat meningkatkan (atau berpotensi menurunkan) penyedia kredensial.


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugas mereka. Untuk informasi selengkapnya, lihat Opsi kontrol dan properti tugas umum.

Variabel output

Tidak ada.

Keterangan

Penting

Tugas ini hanya kompatibel dengan NuGet >= 4.8.0.5385, dotnet >= 6, atau MSBuild >= 15.8.166.59604.

Alat apa yang kompatibel dengan tugas ini?

Tugas ini mengonfigurasi alat yang mendukung plugin lintas platform NuGet. Alat saat ini mencakup nuget.exe, dotnet, dan versi terbaru MSBuild dengan dukungan bawaan untuk memulihkan paket NuGet.

Secara khusus, tugas ini akan mengonfigurasi:

  • nuget.exe (versi 4.8.5385 atau lebih tinggi)
  • dotnet / .NET 6 SDK atau yang lebih tinggi (versi sebelumnya dari tugas ini, NuGetAuthenticateV0, memerlukan .NET Core 2.1, yang tidak lagi didukung)
  • MSBuild (versi 15.8.166.59604 atau lebih tinggi)

Meningkatkan ke versi stabil terbaru disarankan jika Anda mengalami masalah.

Saya mendapatkan kesalahan "Tugas dibatalkan" selama pemulihan paket. Apa yang harus saya lakukan?

Masalah yang diketahui di NuGet dan di Penyedia Kredensial Artefak Azure dapat menyebabkan jenis kesalahan ini, dan memperbarui ke nuget terbaru dapat membantu.

Masalah yang diketahui dalam beberapa versi nuget/dotnet dapat menyebabkan kesalahan ini, terutama selama pemulihan besar pada komputer yang dibatasi sumber daya. Masalah ini diperbaiki di NuGet 5.2, dan .NET Core SDK 2.1.80X dan 2.2.40X. Jika Anda menggunakan versi yang lebih lama, coba tingkatkan versi NuGet atau dotnet Anda. Tugas .NET Core Tool Installer dapat digunakan untuk menginstal versi .NET Core SDK yang lebih baru.

Ada juga masalah yang diketahui dengan Penyedia Kredensial Azure Artifacts (diinstal oleh tugas ini), termasuk artifacts-credprovider/#77 dan artifacts-credprovider/#108. Jika Anda mengalami masalah ini, pastikan Anda memiliki penyedia kredensial terbaru dengan mengatur input forceReinstallCredentialProvider ke true dalam tugas Autentikasi NuGet. Pengaturan ini juga akan memastikan penyedia kredensial Anda diperbarui secara otomatis saat masalah diselesaikan.

Jika tidak ada hal di atas yang menyelesaikan masalah, aktifkan Pengelogan Diagnostik Plugin dan laporkan masalah ke NuGet dan Penyedia Kredensial Artefak Azure.

Bagaimana tugas ini berbeda dari tugas NuGetCommand dan DotNetCoreCLI?

Tugas ini mengonfigurasi nuget.exe, dotnet, dan MSBuild untuk mengautentikasi dengan Azure Artifacts atau repositori lain yang memerlukan autentikasi. Setelah tugas ini berjalan, Anda kemudian dapat memanggil alat di langkah selanjutnya (baik secara langsung atau melalui skrip) untuk memulihkan atau mendorong paket.

Tugas NuGetCommand dan DotNetCoreCLI memerlukan penggunaan tugas untuk memulihkan atau mendorong paket, karena autentikasi ke Azure Artifacts hanya dikonfigurasi dalam masa pakai tugas. Ini dapat mencegah Anda memulihkan atau mendorong paket dalam skrip Anda sendiri. Ini juga dapat mencegah Anda meneruskan argumen baris perintah tertentu ke alat.

Tugas NuGetAuthenticate adalah cara yang disarankan untuk menggunakan umpan terautentikasi dalam alur.

Kapan di alur saya harus menjalankan tugas ini?

Tugas ini harus berjalan sebelum Anda menggunakan alat NuGet untuk memulihkan atau mendorong paket ke sumber paket terautentikasi seperti Azure Artifacts. Tidak ada persyaratan pemesanan lainnya. Misalnya, tugas ini dapat berjalan dengan aman baik sebelum atau sesudah tugas alat penginstal NuGet atau .NET Core.

Bagaimana cara mengonfigurasi sumber paket NuGet yang menggunakan ApiKey ("Kunci API NuGet"), seperti nuget.org?

Beberapa sumber paket seperti nuget.org menggunakan kunci API untuk autentikasi saat mendorong paket, bukan username/password kredensial. Karena keterbatasan di NuGet, tugas ini tidak dapat digunakan untuk menyiapkan koneksi layanan NuGet yang menggunakan kunci API.

Sebagai gantinya:

  1. Mengonfigurasi variabel rahasia yang berisi ApiKey
  2. Lakukan pendorongan paket menggunakan nuget push -ApiKey $(myNuGetApiKey) atau dotnet nuget push --api-key $(myNuGetApiKey), dengan asumsi Anda menamai variabel myNuGetApiKey

Agen saya berada di belakang proksi web. Apakah NuGetAuthenticate akan menyiapkan nuget.exe, dotnet, dan MSBuild untuk menggunakan proksi saya?

Nomor. Meskipun tugas ini sendiri akan bekerja di belakang proksi web yang telah dikonfigurasi agen Anda untuk digunakan, tugas ini tidak mengonfigurasi alat NuGet untuk menggunakan proksi.

Untuk melakukannya, Anda dapat:

  • Atur variabel http_proxy lingkungan dan secara no_proxy opsional ke pengaturan proksi Anda. Lihat Variabel lingkungan NuGet CLI untuk detailnya. Variabel ini umumnya digunakan variabel yang juga dapat digunakan oleh alat non-NuGet lainnya (misalnya curl).

    Hati:
    Variabel http_proxy dan no_proxy peka huruf besar/kecil pada sistem operasi Linux dan Mac dan harus huruf kecil. Mencoba menggunakan variabel Azure Pipelines untuk mengatur variabel lingkungan tidak akan berfungsi, karena akan dikonversi ke huruf besar. Sebagai gantinya, atur variabel lingkungan pada mesin agen yang dihost sendiri dan mulai ulang agen.

  • Tambahkan pengaturan proksi ke file nuget.configtingkat pengguna , baik secara manual atau menggunakan nuget config -set seperti yang dijelaskan dalam dokumentasi referensinuget.config .

    Hati:
    Pengaturan proksi (seperti http_proxy) harus ditambahkan ke konfigurasi tingkat pengguna. Mereka akan diabaikan jika ditentukan dalam file nuget.config yang berbeda.

Bagaimana cara men-debug jika saya mengalami masalah dengan tugas ini?

Untuk mendapatkan log verbose dari alur, tambahkan variabel system.debug alur dan atur ke true.

Bagaimana cara kerja tugas ini?

Tugas ini menginstal Penyedia Kredensial Artefak Azure ke direktori plugin NuGet jika belum diinstal. Kemudian mengatur variabel lingkungan seperti VSS_NUGET_URI_PREFIXES dan VSS_NUGET_ACCESSTOKEN untuk mengonfigurasi penyedia kredensial. Variabel ini tetap diatur untuk masa pakai pekerjaan. Saat memulihkan atau mendorong paket, alat NuGet menjalankan penyedia kredensial, yang menggunakan variabel di atas untuk menentukan apakah harus mengembalikan kredensial kembali ke alat.

Lihat dokumentasi penyedia kredensial untuk detail selengkapnya.

Alur Saya perlu mengakses umpan dalam proyek yang berbeda

Jika alur berjalan dalam proyek yang berbeda dari proyek yang menghosting umpan, Anda harus menyiapkan proyek lain untuk memberikan akses baca/tulis ke layanan build. Lihat Izin paket di Azure Pipelines untuk detail selengkapnya.

Apakah ini akan berfungsi untuk eksekusi alur yang dipicu dari fork eksternal?

Nomor. Eksekusi alur yang dipicu dari fork eksternal tidak memiliki akses ke rahasia yang tepat untuk autentikasi umpan internal. Dengan demikian, itu akan muncul seperti tugas autentikasi berhasil, tetapi tugas berikutnya yang memerlukan autentikasi (seperti pendorongan Nuget) akan gagal dengan kesalahan di sepanjang baris: ##[error]The nuget command failed with exit code(1) and error(Response status code does not indicate success: 500 (Internal Server Error - VS800075: The project with id 'vstfs:///Classification/TeamProject/341ec244-e856-40ad-845c-af31c33c2152' does not exist, or you do not have permission to access it. (DevOps Activity ID: C12C19DC-642C-469A-8F58-C89F2D81FEA7)). Setelah Permintaan Pull digabungkan ke asal, maka alur yang dipicu dari peristiwa tersebut akan mengautentikasi dengan benar.

Saya memperbarui dari NuGetAuthenticateV0 ke NuGetAuthenticateV1 dan sekarang perintah dotnet saya gagal dengan 401

Jika Anda memperbarui dari NuGetAuthenticateV0 ke NuGetAuthenticateV1 dan mendapatkan kesalahan saat menjalankan perintah dotnet, cari pesan It was not possible to find any compatible framework version dari log. Untuk pengguna dotnet, NuGetAuthenticateV1 memerlukan .NET 6 alih-alih .NET Core 2.1, yang diperlukan di NuGetAuthenticateV0 dan tidak lagi didukung. Untuk mengatasi masalah ini, gunakan tugas UseDotNet@2 sebelum perintah dotnet untuk menginstal .NET 6.

- task: UseDotNet@2
  displayName: Use .NET 6 SDK
  inputs:
    packageType: sdk
    version: 6.x

Contoh

Memulihkan dan mendorong paket NuGet dalam organisasi Anda

Jika semua umpan Artefak Azure yang Anda gunakan berada di organisasi yang sama dengan alur Anda, Anda dapat menggunakan tugas NuGetAuthenticate tanpa menentukan input apa pun. Untuk umpan tercakup proyek yang berada dalam proyek yang berbeda dari tempat alur berjalan, Anda harus memberikan proyek dan akses umpan secara manual ke layanan build proyek alur.

nuget.config

<configuration>
  <packageSources>
    <!-- 
      Any Azure Artifacts feeds within your organization will automatically be authenticated. Both dev.azure.com and visualstudio.com domains are supported.
      Project scoped feed URL includes the project, organization scoped feed URL does not.
    -->
    <add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="MyProjectFeed2" value="https://{organization}.pkgs.visualstudio.com/{project}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="MyOtherProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed@view}/nuget/v3/index.json" />
    <add key="MyOrganizationFeed1" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
  </packageSources>
</configuration>

Untuk menggunakan koneksi layanan, tentukan koneksi layanan dalam nuGetServiceConnections input untuk tugas Autentikasi NuGet. Anda kemudian dapat mereferensikan koneksi layanan dengan -ApiKey AzureArtifacts dalam tugas.

nuget.exe

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
  inputs:
    versionSpec: '*'
    checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg

dotnet

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source https://pkgs.dev.azure.com/{organization}/_packaging/{feed1}/nuget/v3/index.json MyProject.*.nupkg

Dalam contoh di atas, OtherOrganizationFeedConnection dan ThirdPartyRepositoryConnection merupakan nama koneksi layanan NuGet yang telah dikonfigurasi dan diotorisasi untuk digunakan dalam alur Anda, dan memiliki URL yang cocok dengan yang ada di argumen baris perintah atau Anda nuget.config .

URL sumber paket yang menunjuk ke umpan Azure Artifacts mungkin atau mungkin tidak berisi proyek. URL untuk umpan terlingkup proyek harus berisi proyek, dan URL untuk umpan terlingkup organisasi tidak boleh berisi proyek. Pelajari selengkapnya tentang umpan lingkup proyek.

Memulihkan dan mendorong paket NuGet di luar organisasi Anda

Jika Anda menggunakan umpan Azure Artifacts dari organisasi lain atau menggunakan repositori paket terautentikasi pihak ketiga, Anda harus menyiapkan koneksi layanan NuGet dan menentukannya dalam nuGetServiceConnections input. Umpan dalam organisasi Azure Artifacts Anda juga akan diautentikasi secara otomatis.

nuget.config

<configuration>
  <packageSources>
    <!-- Any Azure Artifacts feeds within your organization will automatically be authenticated -->
    <add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="MyOrganizationFeed" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
    <!-- Any package source listed here whose URL matches the URL of a service connection in nuGetServiceConnections will also be authenticated.
         The key name here does not need to match the name of the service connection. -->
    <add key="OtherOrganizationFeed" value="https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/nuget/v3/index.json" />
    <add key="ThirdPartyRepository" value="https://{thirdPartyRepository}/index.json" />
  </packageSources>
</configuration>

nuget.exe

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
  inputs:
    versionSpec: '*'
    checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg

dotnet

- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source "MyProjectFeed1"  MyProject.*.nupkg

OtherOrganizationFeedConnection dan ThirdPartyRepositoryConnection adalah nama koneksi layanan NuGet yang telah dikonfigurasi dan diotorisasi untuk digunakan dalam alur Anda, dan memiliki URL yang cocok dengan yang ada di nuget.config atau argumen baris perintah Anda.

URL sumber paket yang menunjuk ke umpan Azure Artifacts mungkin atau mungkin tidak berisi proyek. URL untuk umpan terlingkup proyek harus berisi proyek, dan URL untuk umpan terlingkup organisasi tidak boleh berisi proyek. Pelajari selengkapnya tentang umpan lingkup proyek.

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen 2.144.0 atau lebih tinggi
Kategori tugas Paket
Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen 2.120.0 atau lebih tinggi
Kategori tugas Paket