Auto: Auth tidak diambil dengan benar di GitHub Action menggunakan Artifactory dan pelari yang dihosting sendiri

Dibuat pada 19 Mar 2021  ·  14Komentar  ·  Sumber: intuit/auto

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:

Screen Shot 2021-03-19 at 10 11 08 AM

Selanjutnya, lebih jauh ke bawah:

Screen Shot 2021-03-19 at 10 11 53 AM

Saya tidak harus memiliki akses ke lingkungan runner karena itu dikelola oleh tim operasi kami, tetapi saya telah memverifikasi yang berikut:

  • Aksi berjalan di /home/ubuntu/actions-runner/_work/fe-ui/fe-ui
  • File .npmrc tampaknya diperbarui dengan entri token dengan benar

    • //artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/:_authToken=${NPM_TOKEN}

  • File .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?

bug

Semua 14 komentar

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:

  • Kami menyimpan .npmrc artifactory yang valid di env var yang disuntikkan selama build kami

Screen Shot 2021-03-19 at 11 32 06 AM

  • Karena kita menyetel npmrc sendiri, Anda juga perlu menyetel 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:

  1. dapatkan npmrc yang berfungsi secara lokal yang menerbitkan ke artifactory
  2. salin ke env var
  3. menyuntikkan env var itu selama build ke ~/.npmrc
  4. Pastikan Anda telah menyetel 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

Screen Shot 2021-03-19 at 12 01 36 PM

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat