صف الخلل
أحاول التحقق من صحة إصدار كناري يتم تشغيله على عداء مستضاف ذاتيًا يسحب التبعيات من سجل Artifactory npm الخاص ثم ينشر حزمة مرة أخرى إليه ، كل ذلك من خلال إجراء GitHub الموجود على عداء مستضاف ذاتيًا. يبدو أن كل شيء يعمل بشكل صحيح باستثناء خطوة النشر نفسها ، وأرى ما يلي:
بعد ذلك ، إلى أسفل:
ليس لدي بالضرورة إمكانية الوصول إلى بيئة العداء حيث يديرها فريق العمليات لدينا ولكني تحققت مما يلي:
/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
لإعادة إنتاج
سلوك متوقع
لقطات
معلومات البيئة:
سياق إضافي
أرغب في تقديم أي معلومات إضافية ولكن ليس لدي الكثير لأخرج منه. ماذا يمكنني أن أفعل لإضافة تفاصيل إضافية قد تساعد في حل هذا؟
يبدو أنك تستخدم legacyAuth. سأحاول إيقاف ذلك أولاً
hipstersmoothie عندما تقول باستخدام المصادقة القديمة ، هل تقصد _auth = [token]
في الملف .npmrc
؟ إذا كان الأمر كذلك ، فليس هذا هو الحال ، وإذا لم يكن الأمر كذلك ، فماذا تقصد بالضبط وكيف يمكنني إيقاف ذلك؟
ربما يجب أن تعمل على حل هذه المشكلة مع الرجل المطوّر.
بعض النصائح بناءً على استخداماتنا الصناعية:
npm
setRcToken
إلى false
لقد لاحظت أن أمر canary في مخرجاتك يستخدم علامة _auth
، والتي تُستخدم فقط إذا كان لديك legacyAuth
مضبوطًا على true في ملف .autorc الخاص بك
لذا فإن الخطوات التي يمكنك اتخاذها محليًا هي:
~/.npmrc
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
بخلاف هذا ، ربما لن أكون مفيدًا كثيرًا. يمكن أن يكون من الصعب نوعًا ما على المصنوعات اليدوية أن تتصرف
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 شكرًا لك على التحلي بالصبر بينما اكتشفنا ذلك.