Auto: لم يتم انتقاء المصادقة بشكل صحيح في GitHub Action باستخدام Artifactory والمتسابقين المستضافين ذاتيًا

تم إنشاؤها على ١٩ مارس ٢٠٢١  ·  14تعليقات  ·  مصدر: intuit/auto

صف الخلل

أحاول التحقق من صحة إصدار كناري يتم تشغيله على عداء مستضاف ذاتيًا يسحب التبعيات من سجل Artifactory npm الخاص ثم ينشر حزمة مرة أخرى إليه ، كل ذلك من خلال إجراء GitHub الموجود على عداء مستضاف ذاتيًا. يبدو أن كل شيء يعمل بشكل صحيح باستثناء خطوة النشر نفسها ، وأرى ما يلي:

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

بعد ذلك ، إلى أسفل:

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

ليس لدي بالضرورة إمكانية الوصول إلى بيئة العداء حيث يديرها فريق العمليات لدينا ولكني تحققت مما يلي:

  • يتم تشغيل الإجراء في /home/ubuntu/actions-runner/_work/fe-ui/fe-ui
  • يبدو أن الملف .npmrc قد تم تحديثه بإدخال الرمز بشكل صحيح

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

  • الملف .npmrc الذي يتم تحديثه بالرمز أعلاه موجود داخل /home/ubuntu/.npmrc

لإعادة إنتاج



سلوك متوقع

لقطات

معلومات البيئة:


سياق إضافي

أرغب في تقديم أي معلومات إضافية ولكن ليس لدي الكثير لأخرج منه. ماذا يمكنني أن أفعل لإضافة تفاصيل إضافية قد تساعد في حل هذا؟

bug

ال 14 كومينتر

يبدو أنك تستخدم legacyAuth. سأحاول إيقاف ذلك أولاً

hipstersmoothie عندما تقول باستخدام المصادقة القديمة ، هل تقصد _auth = [token] في الملف .npmrc ؟ إذا كان الأمر كذلك ، فليس هذا هو الحال ، وإذا لم يكن الأمر كذلك ، فماذا تقصد بالضبط وكيف يمكنني إيقاف ذلك؟

ربما يجب أن تعمل على حل هذه المشكلة مع الرجل المطوّر.

بعض النصائح بناءً على استخداماتنا الصناعية:

  • نقوم بتخزين مصنع .npmrc صالح في var env يتم حقنه أثناء عمليات البناء الخاصة بنا

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

  • نظرًا لأننا نضع npmrc بأنفسنا ، فأنت بحاجة أيضًا إلى تعيين المكون الإضافي npm setRcToken إلى false

لقد لاحظت أن أمر canary في مخرجاتك يستخدم علامة _auth ، والتي تُستخدم فقط إذا كان لديك legacyAuth مضبوطًا على true في ملف .autorc الخاص بك

لذا فإن الخطوات التي يمكنك اتخاذها محليًا هي:

  1. الحصول على npmrc يعمل محليًا ينشر في المصنع
  2. انسخه إلى شكل بصيغة
  3. حقن var var أثناء الإنشاء في ~/.npmrc
  4. تأكد من تعيين setRcToken إلى false

hipstersmoothie آه ، أنت محق ، لقد وضعنا legacyAuth على صحيح لأنه بدونه (والآن أحاول تقديم اقتراحاتك) ، نحصل على 403 ممنوع من مثيلنا المصطنع. لقد حاولت للتو تعيين التسجيل باستخدام مجموعة الرموز (كما في المنشور الأصلي ولكن مع الرمز المميز الفعلي) في الملف .npmrc وما زلت أرى 403. أتفهم أن هذا ربما يكون قيدًا على إعداد عملياتنا ، ولكن فقط من باب الفضول ، ماذا يوجد في npmrc الخاص بك؟ لنا ما يلي:

registry = https://artifactory.internal.livongo.com/artifactory/api/npm/npm-virtual
email = [email protected]
always-auth = true
save-exact = true

ثم في package.json:

"publishConfig": {
  "registry": "https://artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/"
},

ستلاحظ أن نهاية عنوان URL مختلفة بالنسبة لعمليات تثبيت النشر مقابل تثبيتات npm ، وهو ما أفهمه كان ضروريًا من خلال Artifactory لطبقة التخزين المؤقت ، لكنني بالتأكيد لست خبيرًا في Artifactory نفسها. أتذكر فقط أن هذه كانت الطريقة الوحيدة التي تمكنا بها من جعل المصادقة تعمل بشكل صحيح (باستخدام legacyAuth) عندما كنا ننشر من أجهزتنا المحلية إلى Artifactory. الآن ، نحاول حظر النشر المحلي وإلغاء تحميل هذا إلى إجراءات GitHub ، ولكن ، كما لو كان حظًا سعيدًا ، كنت أرغب في نشر كناري لهذا التغيير قبل إزالة legacyAuth من التكوين التلقائي المشترك وتوزيعه على جميع حزمنا ولكن للأسف ، أنا غير قادر على ذلك لأنني الآن لا أستطيع النشر بسبب فقدان legacyAuth ، لول.

لقد قمنا بإعداد هذا مرة واحدة منذ فترة طويلة ، لكنني سأحاول إيصال الخطوات التي نتخذها:

إليك مستنداتنا الداخلية لإعداد npmrc

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

بخلاف هذا ، ربما لن أكون مفيدًا كثيرًا. يمكن أن يكون من الصعب نوعًا ما على المصنوعات اليدوية أن تتصرف

hipstersmoothie أقدر مساعدتك. أنت محق تمامًا فيما يتعلق بجعل Artifactory تتصرف ، وسيكون الأمر أكثر صعوبة بشكل خاص إذا لم تتمكن من الوصول إلى إدارة المثيل وعليك الاستمرار في التنقل ذهابًا وإيابًا مع devops لتجربة الأشياء.

بغض النظر ، أنا أقدر مساعدتك وسأستمر في سد هذا الأمر. لقد حاولت بالفعل محاكاة إعداد مشابه لما عرضته في لقطة الشاشة هذه (ثم حاولت ذلك مرة أخرى للتحقق فقط بعد نشره) ولم ينجح في حالة الاستخدام الخاصة بي ، ربما بسبب الإعداد في Artifactory الذي يختلف لنا. إذا كنت لا تمانع ، فأنا أرغب في إبقاء هذه المشكلة مفتوحة وسأعود وأغلقها إذا / عندما نصل إلى حل هذه المشكلة. من المحتمل أن ينتهي بي الأمر بالمرور عبر الأجزاء الداخلية للسيارة كجزء من تلك العملية.

نعم أنا بخير مع ذلك. إذا توصلت إلى بعض خطوات الإعداد الجيدة ، فيمكننا إضافتها إلى المستندات أيضًا

hipstersmoothie أنا أنظر إلى هذا الخط:

https://github.com/intuit/auto/blob/v10.21.3/plugins/npm/src/set-npm-token.ts#L37

بالنسبة للجهاز المحلي الخاص بي (قادر على الوصول إلى المصنع الداخلي) ، عندما يكون isCi هو false ، يمكنني النشر. إذا قمت بتغيير خط node_modules/@auto-it/npm/dist/set-npm-token.js المحلي المشار إليه أعلاه ليكون if (false) { ، فسيظهر لي نفس الخطأ 403 كما أفعل عندما يكون isCi هو true .

إما أنه صحيح لـ non-ci أو صحيح لـ ci. أظن أن setTokenOnCI لا يفكر في legacyAuth ويجب أن يكون كذلك؟

يبدو أنك قد فاتتك المكان الذي قلت فيه هذا

تأكد من ضبط setRcToken على false

يتم تخطي كل هذا الرمز إذا كان لديك setRcToken مضبوطًا على false

hipstersmoothie يا له من استجابة لطيفة جدًا وكل شيء على ما يرام بمجرد تعيين setRcToken إلى false . استخدام auto عبر إجراءات github لمصنعنا هو GO. شكرا!

يمكن إغلاق المشكلة ، خطأ في المستخدم / الإعداد ، شكرًا على الدعم.

hipstersmoothie شكرًا لك على التحلي بالصبر بينما اكتشفنا ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات