صف الخلل
عند تشغيل auto canary
في Lerna monorepo ، تظهر مشكلات متعددة.
يتم رفع الإصدار من 9.0.0-beta.33
إلى 9.0.1-canary.809.1.1a2be58f.0
عندما يجب أن يكون 9.0.0-canary...
بدلاً من ذلك.
تقول Error: Running command 'npx' failed
في البداية
فشل في النشر إلى 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
.
سطح المكتب (يرجى استكمال المعلومات التالية):
سياق إضافي
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)
أيضًا ، لا يتم احترام الحقل publishConfig.directory
في package.json
لكل حزمة.
سألقي نظرة على هذا!
- يتم رفع الإصدار من 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
النصي في وقت محدد جدا:
lerna version
- يغير package.json إلى إصدار canaryprepare
- تم وضع الحزمة النهائية في مجلد distlerna publish
- ينشر مجلد توزيع الحزم بالإصدار الصحيحلذلك بالنسبة لسير العمل هذا ، يجب أن تدع البرامج النصية لدورة الحياة تعمل ويجب تعيين ignoreScripts
على false (أو ليس على الإطلاق).
هل تعتبر "تشغيل الكناري التلقائي محليًا من فرع يبني إصدارًا تجريبيًا / إصدارًا تاليًا" ليكون حالة متطورة؟ إذا لم يكن الأمر كذلك ، فربما يجب أن يكون هناك دعم تلقائي هنا.
لم يتم تضمين الإصدار التجريبي / الدعم التالي حقًا بعد ، لكنني سأعود إلى هذه المشكلة عندما أحاول معالجتها.
ربما يكون تكاملك مع Lerna يتجنب بطريقة ما مسار الكود هذا.
نحن لا نفترض أي افتراضات حول استخدام lerna ، لذا لا ينبغي أن يكون هذا مشكلة. يمكنك أن ترى هنا أننا ندعو فقط إلى lerna
للقيام بكل الرفع الثقيل.
aleclarson تمكنت من نشر الكناري بعد إزالة ignoreScripts
. أعتقد أنني عالجت كل شيء في هذه القضية ، إذا قمت بإغلاقه من فضلك!
حسنًا يا حلو! لديّ حل بديل في الوقت الحالي ، لذا لن أتحقق في أي وقت قريبًا.
سأكون متأكدًا من إعادة الفتح إذا تمكنت من محاولة ذلك مرة أخرى. ؛)