Auto: فشل "auto canary" في monorepo مع الإصدار التجريبي

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

صف الخلل

عند تشغيل auto canary في Lerna monorepo ، تظهر مشكلات متعددة.

  1. يتم رفع الإصدار من 9.0.0-beta.33 إلى 9.0.1-canary.809.1.1a2be58f.0 عندما يجب أن يكون 9.0.0-canary... بدلاً من ذلك.

  2. تقول Error: Running command 'npx' failed في البداية

  3. فشل في النشر إلى npm ، قائلاً You cannot publish over the previously published versions: 9.0.0-beta.33

العلاقات العامة التي أحاول نشرها هي: https://github.com/react-spring/react-spring/pull/809

لإعادة إنتاج

ليس لدي أدنى ريبرو حتى الآن. LMK إذا لزم الأمر.

سلوك متوقع

من المتوقع نشر جميع الحزم مع إصدار 9.0.0-canary.809.1.1a2be58f.0 .

سطح المكتب (يرجى استكمال المعلومات التالية):

  • نظام التشغيل: macOS v10.14.5
  • المتصفح: N / A
  • الإصدار: v7.6.0

سياق إضافي

GH_TOKEN="xxx" auto canary --build 1 --pr 809
Error: Running command 'npx' failed


Changes:
 - @react-spring/addons: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/animated: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/core: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - react-spring: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/shared: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/konva: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/native: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/three: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/web: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/zdog: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0



lerna notice cli v3.15.0
lerna info current version 9.0.0-beta.34
lerna WARN force-publish all packages
lerna info Assuming all packages changed
lerna WARN version Skipping working tree validation, proceed at your own risk
lerna info auto-confirmed 
lerna info execute Skipping git tag/commit
lerna info execute Skipping git push
lerna info execute Skipping releases
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna http fetch PUT 403 https://registry.npmjs.org/@react-spring%2fshared 1475ms
lerna ERR! E403 You cannot publish over the previously published versions: 9.0.0-beta.33.

    at ChildProcess.<anonymous> (~/.nvm/versions/node/v11.10.1/pnpm-global/3/node_modules/.pnpm/registry.npmjs.org/@auto-it/core/7.6.1/node_modules/@auto-it/core/dist/utils/exec-promise.js:98:36)
    at ChildProcess.emit (events.js:197:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
bug

ال 14 كومينتر

أيضًا ، لا يتم احترام الحقل publishConfig.directory في package.json لكل حزمة.

سألقي نظرة على هذا!

  1. يتم رفع الإصدار من 9.0.0-beta.33 إلى 9.0.1-canary.809.1.1a2be58f.0 عندما يجب أن يكون 9.0.0-canary ... بدلاً من ذلك.

لقد فتحت # 609 للتخلص من التجزئة الزائدة هناك. يرجع الجزء .0 من الإصدار إلى وضع العلم --preid . نحتاج إلى هذا لبقية الإصدار حتى لا يختفي حقًا.

hipstersmoothie أوه لم أكن أشتكي من ذلك. لم أرغب في قضاء الوقت الكافي في كتابة التجزئة. 😆 تشير هذه الجملة في الواقع إلى أنها 9.0.1 بينما يجب أن تكون 9.0.0 ثابتة.

آه لقد فهمت. في هذه الحالة يكون هذا هو السلوك المتوقع. نسخة الكناري هي النسخة المحاكية "التالية". على سبيل المثال:

يحتوي PR على major label => يحتوي الكناري مع هذه التغييرات على تلك التغييرات الرئيسية ويجب أن يكون إصدارًا رئيسيًا جديدًا

سبب انتقاله إلى 9.0.1 هو أننا نتحول افتراضيًا إلى patch عندما لا يتم العثور على تصنيف.

حسنا. تشير علامة latest حاليًا إلى 8.0.27 ، لذلك لا أتوقع أن يستخدم 9.0.1 auto canary 9.0.1 أي حال. لابد أنه قد تم الخلط بينه وبين وجود 9.0.0-beta.33 . هل هناك طريقة لفرض بقاء الإصدار عند 9.0.0 ؟

الطريقة التي تتصرف بها الآن هي أنها ستلقي نظرة على "أحدث إصدار" وإصدارك المحلي وتستخدم الإصدار الأعلى. لذلك في هذه الحالة تم حلها إلى 9.0.0-beta.33 .

هل هناك طريقة لإجبار الإصدار على البقاء في 9.0.0؟

محليًا إذا قمت بتشغيل lerna باستخدام prerelease بدلاً من preminor ، فلن يتم زيادة الإصدار. للحصول على prerelease لأمر canary ، يمكننا إضافة علامة إضافية أو استخدام تسمية prerelease ، لكن الميزة لن تكون تلقائية.

فشل في النشر إلى npm ، قائلاً إنه لا يمكنك النشر فوق الإصدارات المنشورة مسبقًا: 9.0.0-beta.33

يبدو أن هذه مشكلة حول package.json s التي تشق طريقها إلى المجلد dist . يتم تشغيل الخطوة prepare قبل أي شيء تلقائي ، لذا فإن الإصدار هو كل ما كان موجودًا في البداية. في هذه الحالة "9.0.0-beta.33"

عند تشغيل lerna ، تلتقط هذه النسخة القديمة من package.json ، والتي تحتوي على نسخة منشورة بالفعل ، وتحاول النشر مرة أخرى.

محليًا إذا قمت بتشغيل lerna باستخدام prerelease بدلاً من preminor ، فلن يتم زيادة الإصدار. للحصول على prerelease لأمر canary ، يمكننا إضافة علامة إضافية أو استخدام تسمية prerelease ، لكن الميزة لن تكون تلقائية.

يجب أن تكون جيدة بما فيه الكفاية. هل تعتبر "تشغيل auto canary محليًا من فرع ينشئ إصدارًا من beta / next " حالة متطورة؟ إذا لم يكن الأمر كذلك ، فربما يجب أن يكون هناك دعم تلقائي هنا. أيضًا ، إذا كنت سأدير auto canary من CI ، فهل سأستمر في الوصول إلى هذه الحالة المتطورة؟

عند تشغيل lerna ، تلتقط هذه النسخة القديمة من package.json ، والتي تحتوي على نسخة منشورة بالفعل ، وتحاول النشر مرة أخرى.

تدعم Lerna publishConfig.directory (انظر هنا ) ، ولكن ربما يتجنب تكاملك مع Lerna بطريقة ما مسار الكود هذا.

هذا الخط هو المشكلة.

لأنك تفعل هذا الشيء حيث قمت بنسخ خلال package.json، التمهيدي، الخ في مجلد حي وبعد ذلك فقط نشر ذلك، نحن بحاجة لتشغيل prepare النصي في وقت محدد جدا:

  1. lerna version - يغير package.json إلى إصدار canary
  2. prepare - تم وضع الحزمة النهائية في مجلد dist
  3. lerna publish - ينشر مجلد توزيع الحزم بالإصدار الصحيح

لذلك بالنسبة لسير العمل هذا ، يجب أن تدع البرامج النصية لدورة الحياة تعمل ويجب تعيين ignoreScripts على false (أو ليس على الإطلاق).

هل تعتبر "تشغيل الكناري التلقائي محليًا من فرع يبني إصدارًا تجريبيًا / إصدارًا تاليًا" ليكون حالة متطورة؟ إذا لم يكن الأمر كذلك ، فربما يجب أن يكون هناك دعم تلقائي هنا.

لم يتم تضمين الإصدار التجريبي / الدعم التالي حقًا بعد ، لكنني سأعود إلى هذه المشكلة عندما أحاول معالجتها.

ربما يكون تكاملك مع Lerna يتجنب بطريقة ما مسار الكود هذا.

نحن لا نفترض أي افتراضات حول استخدام lerna ، لذا لا ينبغي أن يكون هذا مشكلة. يمكنك أن ترى هنا أننا ندعو فقط إلى lerna للقيام بكل الرفع الثقيل.

aleclarson تمكنت من نشر الكناري بعد إزالة ignoreScripts . أعتقد أنني عالجت كل شيء في هذه القضية ، إذا قمت بإغلاقه من فضلك!

حسنًا يا حلو! لديّ حل بديل في الوقت الحالي ، لذا لن أتحقق في أي وقت قريبًا.

سأكون متأكدًا من إعادة الفتح إذا تمكنت من محاولة ذلك مرة أخرى. ؛)

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