Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Konfigurasikan alat NuGet untuk mengautentikasi dengan Azure Artifacts dan repositori NuGet lainnya. Memerlukan NuGet >= 4.8.5385, dotnet >= 6, atau MSBuild >= 15.8.166.59604.
Sintaksis
# 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:
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
# 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.
Masukan
forceReinstallCredentialProvider
-
Instal ulang penyedia kredensial meskipun sudah diinstal
boolean. Nilai default: false.
Fakultatif. 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.
kredensial koneksi layanan nuGetServiceConnections - untuk umpan di luar organisasi ini
string.
Fakultatif. Daftar koneksi layanan NuGet yang dipisahkan koma nama untuk umpan di luar organisasi atau koleksi ini. Untuk umpan dalam organisasi atau koleksi ini, biarkan kosong; kredensial build digunakan secara otomatis.
Opsi kontrol tugas
Semua tugas memiliki opsi kontrol selain input tugasnya. Untuk informasi selengkapnya, lihat opsi Kontrol dan properti tugas umum.
Variabel-variabel keluaran
Tidak ada.
Komentar
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)
Disarankan untuk meningkatkan ke versi stabil terbaru jika Anda mengalami masalah.
Saya mendapatkan kesalahan "Tugas dibatalkan" selama pemulihan paket. Apa yang harus saya lakukan?
Masalah umum di NuGet dan di Penyedia Kredensial Artefak Azure dapat menyebabkan jenis kesalahan ini, dan memperbarui ke nuget terbaru dapat membantu.
Masalah yang diketahui di beberapa versi nuget/dotnet dapat menyebabkan kesalahan ini, terutama selama pemulihan besar pada mesin 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 Penginstal Alat .NET Core dapat digunakan untuk menginstal versi SDK .NET Core 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 NuGet Authenticate. Pengaturan ini juga akan memastikan penyedia kredensial Anda diperbarui secara otomatis saat masalah diselesaikan.
Jika tidak satu pun dari hal di atas menyelesaikan masalah, aktifkan Pengelogan Diagnostik Plugin dan laporkan masalah ke NuGet dan Penyedia Kredensial Artefak Azure.
Apa perbedaan tugas ini dengan tugas NuGetCommand dan DotNetCoreCLI?
Tugas ini mengonfigurasi nuget.exe, dotnet, dan MSBuild untuk mengautentikasi dengan Azure Artefacts 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 direkomendasikan untuk menggunakan umpan yang diautentikasi dalam alur.
Kapan dalam alur saya harus menjalankan tugas ini?
Tugas ini harus berjalan sebelum Anda menggunakan alat NuGet untuk memulihkan atau mendorong paket ke sumber paket yang diautentikasi seperti Azure Artifacts. Tidak ada persyaratan pemesanan lainnya. Misalnya, tugas ini dapat berjalan dengan aman sebelum atau sesudah tugas penginstal alat 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.
Sebaliknya:
- Mengonfigurasi variabel rahasia yang berisi ApiKey
- Lakukan push paket menggunakan
nuget push -ApiKey $(myNuGetApiKey)ataudotnet nuget push --api-key $(myNuGetApiKey), dengan asumsi Anda menamai variabelmyNuGetApiKey
Agen saya berada di belakang proksi web. Apakah NuGetAuthenticate akan menyiapkan nuget.exe, dotnet, dan MSBuild untuk menggunakan proxy saya?
Tidak. Meskipun tugas ini sendiri akan bekerja di belakang proksi web yang telah dikonfigurasi untuk digunakan oleh agen Anda, tugas ini tidak mengonfigurasi alat NuGet untuk menggunakan proxy.
Untuk melakukannya, Anda dapat:
Atur variabel
http_proxylingkungan dan secarano_proxyopsional ke pengaturan proksi Anda. Lihat Variabel lingkungan NuGet CLI untuk detailnya. Variabel ini adalah variabel yang umum digunakan yang juga dapat digunakan oleh alat non-NuGet lainnya (misalnya curl).Hati-hati:
Variabelhttp_proxydanno_proxypeka 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 komputer agen yang dihost sendiri dan mulai ulang agen.Tambahkan pengaturan proksi ke file nuget.configtingkat pengguna , baik secara manual atau menggunakan
nuget config -setseperti yang dijelaskan dalam dokumentasi referensinuget.config .Hati-hati:
Pengaturan proksi (sepertihttp_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 Azure Artefacts ke dalam 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 selama 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?
Tidak. Eksekusi alur yang dipicu dari fork eksternal tidak memiliki akses ke rahasia yang tepat untuk autentikasi umpan internal. Dengan demikian, akan tampak seperti tugas autentikasi berhasil, tetapi tugas berikutnya yang memerlukan autentikasi (seperti Nuget push) akan gagal dengan kesalahan seperti: ##[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 Pull Request digabungkan ke asal, maka alur yang dipicu dari peristiwa tersebut akan diautentikasi 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, bukan .NET Core 2.1, yang diperlukan di NuGetAuthenticateV0 dan tidak lagi didukung. Untuk mengatasi masalah, 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 Azure Artefacts yang Anda gunakan berada di organisasi yang sama dengan alur Anda, Anda dapat menggunakan tugas NuGetAuthenticate tanpa menentukan input apa pun. Untuk umpan cakupan proyek yang berada di proyek yang berbeda dari tempat alur berjalan, Anda harus memberikan akses proyek dan 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 NuGet Authenticate. Anda kemudian dapat mereferensikan koneksi layanan dalam -ApiKey AzureArtifacts 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 adalah nama koneksi layanan NuGet yang telah dikonfigurasi dan diizinkan untuk digunakan dalam alur Anda, dan memiliki URL yang cocok dengan argumen baris perintah atau nuget.config Anda.
URL sumber paket yang mengarah ke umpan Azure Artifacts mungkin atau mungkin tidak berisi proyek. URL untuk feed cakupan project harus berisi project, dan URL untuk feed tercakup organisasi tidak boleh berisi project. Pelajari selengkapnya tentang umpan cakupan proyek .
Memulihkan dan mendorong paket NuGet di luar organisasi Anda
Jika Anda menggunakan umpan Azure Artifacts dari organisasi lain atau menggunakan repositori paket pihak ketiga yang diautentikasi, 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 diizinkan untuk digunakan dalam alur Anda, dan memiliki URL yang cocok dengan yang ada di argumen nuget.config atau baris perintah Anda.
URL sumber paket yang mengarah ke umpan Azure Artifacts mungkin atau mungkin tidak berisi proyek. URL untuk feed cakupan project harus berisi project, dan URL untuk feed tercakup organisasi tidak boleh berisi project. Pelajari selengkapnya tentang umpan cakupan proyek .
Persyaratan
| Persyaratan | Deskripsi |
|---|---|
| Jenis alur | YAML, Build klasik, Rilis klasik |
| Berjalan pada | Agen, DeploymentGroup |
| Tuntutan | Tidak ada |
| Kemampuan | Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan. |
| pembatasan Perintah |
Apa saja |
| variabel yang Dapat Diatur |
Apa saja |
| Versi agen | 2.144.0 atau lebih tinggi |
| Kategori tugas | Paket |
| Persyaratan | Deskripsi |
|---|---|
| Jenis alur | YAML, Build klasik, Rilis klasik |
| Berjalan pada | Agen, DeploymentGroup |
| Tuntutan | Tidak ada |
| Kemampuan | Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan. |
| pembatasan Perintah |
Apa saja |
| variabel yang Dapat Diatur |
Apa saja |
| Versi agen | 2.120.0 atau lebih tinggi |
| Kategori tugas | Paket |