Bagikan melalui


npmAuthenticate@0 - npm mengautentikasi tugas v0 (untuk pelari tugas)

Gunakan tugas ini untuk memberikan kredensial npm ke file .npmrc di repositori Anda untuk cakupan build. Ini memungkinkan npm, serta npm pelari tugas seperti gulp dan Grunt, untuk mengautentikasi dengan registri privat.

Sintaksis

# npm authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.

Masukan

workingFile - file .npmrc untuk mengautentikasi
string. Dibutuhkan.

Jalur ke file .npmrc yang menentukan registri yang ingin Anda kerjakan. Pilih file, bukan folder, seperti /packages/mypackage.npmrc.


customEndpoint - Kredensial untuk registri di luar organisasi/kumpulan ini
string.

Daftar koneksi layanan npm yang dipisahkan koma nama untuk registri di luar organisasi atau koleksi ini. File .npmrc yang ditentukan harus berisi entri registri yang sesuai dengan koneksi layanan. Jika Anda hanya memerlukan registri di organisasi atau koleksi ini, biarkan kosong ini. 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 output

Tidak ada.

Komentar

Gunakan tugas ini untuk memberikan kredensial npm ke file .npmrc di repositori Anda untuk cakupan build. Ini memungkinkan npm, serta npm pelari tugas seperti gulp dan Grunt, untuk mengautentikasi dengan registri privat.

Bagaimana cara kerja tugas ini?

Tugas ini mencari file .npmrc yang ditentukan untuk entri registri, lalu menambahkan detail autentikasi untuk registri yang ditemukan ke akhir file. Untuk semua registri dalam organisasi/koleksi saat ini, kredensial build digunakan. Untuk registri di organisasi yang berbeda atau dihosting oleh pihak ketiga, URI registri akan dibandingkan dengan URI koneksi layanan npm ditentukan oleh input customEndpoint, dan kredensial yang sesuai akan digunakan. File .npmrc akan dikembalikan ke status aslinya di akhir eksekusi alur.

Kapan dalam alur saya harus menjalankan tugas ini?

Tugas ini harus berjalan sebelum Anda menggunakan npm, atau runner tugas npm, untuk menginstal atau mendorong paket ke repositori npm terautentikasi seperti Azure Artifacts. Tidak ada persyaratan pemesanan lainnya.

Saya memiliki beberapa proyek npm. Apakah saya perlu menjalankan tugas ini untuk setiap file .npmrc?

Tugas ini hanya akan menambahkan detail autentikasi ke satu file .npmrc sekaligus. Jika Anda memerlukan autentikasi untuk beberapa file .npmrc, Anda dapat menjalankan tugas beberapa kali, sekali untuk setiap file .npmrc. Sebagai alternatif, pertimbangkan untuk membuat file .npmrc yang menentukan semua registri yang digunakan oleh proyek Anda, menjalankan npmAuthenticate pada file .npmrc ini, lalu mengatur variabel lingkungan untuk menunjuk file .npmrc ini sebagai file konfigurasi npm per pengguna.

- task: npmAuthenticate@0
  inputs:
    workingFile: $(Agent.TempDirectory)/.npmrc

- script: echo "##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(Agent.TempDirectory)/.npmrc"

- script: npm ci
  workingDirectory: project1

- script: npm ci
  workingDirectory: project2

Agen saya berada di belakang proksi web. Apakah npmAuthenticate akan menyiapkan npm/gulp/Grunt untuk menggunakan proksi saya?

Jawabannya adalah tidak. Meskipun tugas ini sendiri akan bekerja di belakang proksi web agen Anda telah dikonfigurasi untuk menggunakan, tugas ini tidak mengonfigurasi npm atau npm pelari tugas untuk menggunakan proksi.

Untuk melakukannya, Anda dapat:

  • Atur variabel lingkungan http_proxy/https_proxy dan secara opsional no_proxy ke pengaturan proksi Anda. Lihat konfigurasi npm untuk detailnya. Perhatikan bahwa ini adalah variabel yang umum digunakan yang juga dapat digunakan oleh alat non-npm lainnya (misalnya curl).

  • Tambahkan pengaturan proksi ke konfigurasi npm, baik secara manual, dengan menggunakan npm config set, atau dengan mengatur variabel lingkungan diawali dengan NPM_CONFIG_.

    Penting

    npm pelari tugas mungkin tidak kompatibel dengan semua metode konfigurasi proksi yang didukung oleh npm.

  • Tentukan proksi dengan bendera baris perintah saat memanggil npm.

    - script: npm ci --https-proxy $(agent.proxyurl)
    

Jika proksi Anda memerlukan autentikasi, Anda mungkin perlu menambahkan langkah build tambahan untuk membuat URI proksi terautentikasi.

- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)

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.

Contoh

Memulihkan paket npm untuk proyek Anda dari registri dalam organisasi Anda

Jika satu-satunya registri terautentikasi yang Anda gunakan adalah registri Azure Artifacts di organisasi Anda, Anda hanya perlu menentukan jalur ke file .npmrc ke tugas npmAuthenticate.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
- script: npm ci

- script: npm publish

Memulihkan dan menerbitkan paket npm di luar organisasi Anda

Jika .npmrc Anda berisi registri Azure Artifacts dari organisasi lain atau menggunakan repositori paket terautentikasi pihak ketiga, Anda harus menyiapkan koneksi layanan npm dan menentukannya dalam input customEndpoint. Registri dalam organisasi Azure Artifacts Anda juga akan diautentikasi secara otomatis.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true

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

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection # Name of your service connection
- script: npm ci

- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnection dan ThirdPartyRepositoryNpmConnection adalah nama koneksi layanan npm yang telah dikonfigurasi dan diotorisasi untuk digunakan dalam alur Anda, dan memiliki URL yang cocok dengan yang ada dalam file .npmrc yang ditentukan.

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak
Kemampuan Tugas ini tidak memenuhi tuntutan apa pun untuk tugas berikutnya dalam pekerjaan.
pembatasan Perintah Apapun
variabel yang Dapat Diatur Apapun
Versi agen 2.115.0 atau lebih tinggi
Kategori tugas Paket