Jelaskan bugnya
Saya mencoba memvalidasi rilis canary yang berjalan pada runner yang dihosting sendiri yang menarik dependensi dari registri npm Artifactory pribadi dan kemudian menerbitkan paket kembali ke sana, semua melalui tindakan GitHub yang ada pada runner yang dihosting sendiri. Semuanya tampaknya berfungsi dengan benar kecuali langkah publikasikan itu sendiri, dan saya melihat yang berikut:
Selanjutnya, lebih jauh ke bawah:
Saya tidak harus memiliki akses ke lingkungan runner karena itu dikelola oleh tim operasi kami, tetapi saya telah memverifikasi yang berikut:
/home/ubuntu/actions-runner/_work/fe-ui/fe-ui
.npmrc
tampaknya diperbarui dengan entri token dengan benar//artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/:_authToken=${NPM_TOKEN}
.npmrc
yang sedang diperbarui dengan token di atas berada di dalam /home/ubuntu/.npmrc
Untuk Mereproduksi
Perilaku yang diharapkan
Tangkapan layar
Informasi lingkungan:
konteks tambahan
Saya ingin memberikan info tambahan, tetapi saya tidak punya banyak lagi untuk dilakukan. Apa yang dapat saya lakukan untuk menambahkan detail tambahan yang dapat membantu menyelesaikan ini?
Sepertinya Anda menggunakan legacyAuth. Saya akan mencoba mematikannya terlebih dahulu
@hipstersmoothie ketika Anda mengatakan menggunakan auth lawas, maksud Anda _auth = [token]
dalam file .npmrc
? Jika demikian, bukan itu masalahnya, jika tidak, apa sebenarnya yang Anda maksud dan bagaimana saya mematikannya?
Anda mungkin harus bekerja untuk menyelesaikan ini dengan orang devops Anda.
Beberapa tips berdasarkan penggunaan artifactory kami:
npm
plugin setRcToken
menjadi false
Saya telah memperhatikan bahwa perintah canary di output Anda menggunakan flag _auth
, yang hanya digunakan jika Anda memiliki legacyAuth
disetel ke true di .autorc Anda
Jadi langkah-langkah yang dapat Anda ambil secara lokal adalah:
~/.npmrc
setRcToken
ke false
@hipstersmoothie ah, Anda benar, kami menetapkan legacyAuth ke true karena tanpa itu (dan sekarang saya mencoba saran Anda), kami mendapatkan 403 Forbidden dari contoh artifactory kami. Saya baru saja mencoba mengatur registri dengan set token (seperti di posting asli saya tetapi dengan token yang sebenarnya) di file .npmrc
dan masih melihat 403. Saya mengerti ini mungkin batasan dari pengaturan ops kami, tetapi hanya ingin tahu, apa yang ada di npmrc Anda? Milik kami adalah sebagai berikut:
registry = https://artifactory.internal.livongo.com/artifactory/api/npm/npm-virtual
email = [email protected]
always-auth = true
save-exact = true
dan kemudian di package.json:
"publishConfig": {
"registry": "https://artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/"
},
Anda akan melihat bahwa akhir URL berbeda untuk publish vs npm install, yang pemahaman saya diperlukan melalui Artifactory untuk lapisan caching, tapi saya jelas bukan ahli Artifactory itu sendiri. Saya hanya ingat bahwa ini adalah satu-satunya cara kami dapat membuat auth bekerja dengan benar (dengan menggunakan legacyAuth) ketika kami menerbitkan dari mesin lokal kami ke Artifactory. Sekarang, kami mencoba untuk memblokir penerbitan lokal dan memindahkan ini ke GitHub Actions tetapi, seperti yang diharapkan, saya ingin menerbitkan kenari perubahan itu sebelum saya menghapus legacyAuth dari konfigurasi otomatis bersama kami dan mendistribusikannya ke semua paket kami tetapi sayangnya, saya tidak dapat melakukannya karena saya sekarang tidak dapat mempublikasikan karena legacyAuth hilang, lol.
Kami mengatur ini sejak lama, tetapi saya akan mencoba mengomunikasikan langkah-langkah yang kami ambil:
Berikut adalah dokumen internal kami untuk menyiapkan npmrc
Selain ini saya mungkin tidak akan banyak membantu. Artifactory bisa agak sulit untuk berperilaku
@hipstersmoothie Saya menghargai bantuan Anda. Anda benar dalam hal membuat Artifactory berperilaku, dan terutama lebih sulit jika Anda tidak bisa mendapatkan akses untuk mengelola instance dan harus terus bolak-balik dengan devops untuk mencoba berbagai hal.
terlepas dari itu, saya menghargai bantuan Anda dan akan terus mengabaikan ini. saya sudah mencoba meniru pengaturan yang mirip dengan apa yang Anda tunjukkan di tangkapan layar itu (dan kemudian mencobanya lagi hanya untuk memverifikasi setelah Anda mempostingnya) dan itu tidak berhasil untuk kasus penggunaan saya, mungkin karena pengaturan di Artifactory yang berbeda untuk kita. Jika Anda tidak keberatan, saya ingin masalah ini tetap terbuka dan akan kembali dan menutupnya jika/ketika kami menyelesaikannya. saya mungkin akan melangkah melalui internal auto sebagai bagian dari proses itu.
Ya aku baik-baik saja dengan itu. Jika Anda menemukan beberapa langkah penyiapan artifactory yang bagus, kami juga dapat menambahkannya ke dokumen
@hipstersmoothie Saya melihat baris ini:
https://github.com/intuit/auto/blob/v10.21.3/plugins/npm/src/set-npm-token.ts#L37
Untuk mesin lokal saya (dapat mencapai artifactory internal), ketika isCi
adalah false
, saya dapat memublikasikan. Jika saya mengubah baris node_modules/@auto-it/npm/dist/set-npm-token.js
lokal saya yang dirujuk di atas menjadi if (false) {
, maka saya mendapatkan kesalahan 403 yang sama seperti yang saya lakukan ketika isCi
adalah true
.
Entah itu benar untuk non-ci, atau benar untuk ci. Saya menduga setTokenOnCI
tidak mempertimbangkan legacyAuth
dan seharusnya?
Sepertinya Anda mungkin melewatkan di mana saya mengatakan ini
Pastikan Anda telah menyetel setRcToken ke false
Semua kode itu dilewati jika Anda memiliki setRcToken
disetel ke false
@hipstersmoothie respons yang sangat bagus dan semuanya baik-baik saja setelah kami menetapkan setRcToken
ke false
. Menggunakan auto
melalui tindakan github ke artifactory kami adalah GO. Terima kasih!
Masalah dapat ditutup, kesalahan pengguna/pengaturan, terima kasih atas dukungannya.
@hipstersmoothie Terima kasih telah bersabar sementara kami menemukan ini.