Jelaskan bugnya
Saat menjalankan auto canary
di Lerna monorepo, beberapa masalah muncul.
Versi sedang diubah dari 9.0.0-beta.33
menjadi 9.0.1-canary.809.1.1a2be58f.0
padahal seharusnya 9.0.0-canary...
sebagai gantinya.
Dikatakan Error: Running command 'npx' failed
tepat di awal
Gagal mempublikasikan ke npm, mengatakan You cannot publish over the previously published versions: 9.0.0-beta.33
PR yang saya coba publikasikan adalah: https://github.com/react-spring/react-spring/pull/809
Untuk Mereproduksi
Saya belum memiliki repro minimal. LMK jika perlu.
Perilaku yang diharapkan
Diharapkan semua paket diterbitkan dengan 9.0.0-canary.809.1.1a2be58f.0
sebagai versinya.
Desktop (harap lengkapi informasi berikut):
konteks tambahan
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)
Juga, bidang publishConfig.directory
di setiap paket package.json
tidak dihormati.
Aku akan melihat ini!
- Versi sedang diubah dari 9.0.0-beta.33 ke 9.0.1-canary.809.1.1a2be58f.0 padahal seharusnya 9.0.0-canary... sebagai gantinya.
Saya telah membuka #609 untuk menghilangkan hash ekstra di sana. Bagian .0
dari versi ini karena kita menandai --preid
. Kami membutuhkan ini untuk sisa versi sehingga tidak bisa benar-benar hilang.
@hipstersmoothie Oh, saya tidak mengeluh tentang itu. Saya hanya tidak ingin meluangkan waktu untuk mengetik hash. Kalimat itu sebenarnya menunjukkan bagaimana 9.0.1
padahal seharusnya masih 9.0.0
.
Aku mengerti. Dalam hal ini perilaku yang diharapkan. Versi kenari adalah versi simulasi "berikutnya". Sebagai contoh:
PR memiliki label major
=> Canary dengan perubahan tersebut berisi perubahan besar tersebut dan harus menjadi versi utama yang baru
Alasan mengapa ia pergi ke 9.0.1
adalah karena kita default ke patch
ketika tidak ada label yang ditemukan.
Oh oke. Tag latest
saat ini menunjuk ke 8.0.27
, jadi saya tidak berharap auto canary
menggunakan 9.0.1
. Pasti bingung dengan adanya 9.0.0-beta.33
. Apakah ada cara untuk memaksa versi tetap di 9.0.0
?
Cara mereka berperilaku sekarang adalah akan melihat "Rilis Terbaru" dan Anda versi lokal dan menggunakan yang lebih tinggi. Jadi dalam hal ini yang diselesaikan menjadi 9.0.0-beta.33
.
Apakah ada cara untuk memaksa versi tetap di 9.0.0?
Secara lokal jika saya menjalankan lerna dengan prerelease
alih-alih preminor
versinya tidak bertambah. Untuk mendapatkan prerelease
ke perintah canary, kita dapat menambahkan flag tambahan atau menggunakan label prerelease
, tetapi fitur tersebut tidak otomatis.
Gagal mempublikasikan ke npm, dengan mengatakan Anda tidak dapat menerbitkan lebih dari versi yang diterbitkan sebelumnya: 9.0.0-beta.33
Ini tampaknya menjadi masalah di sekitar package.json
s yang masuk ke folder dist
. Langkah prepare
dijalankan sebelum apa pun yang dilakukan otomatis sehingga versinya adalah apa pun yang ada di sana pada awalnya. Dalam hal ini "9.0.0-beta.33"
Ketika lerna menjalankannya, ia mengambil versi basi dari package.json
, yang berisi versi yang sudah diterbitkan, dan mencoba untuk menerbitkan lagi.
Secara lokal jika saya menjalankan lerna dengan
prerelease
alih-alihpreminor
versinya tidak bertambah. Untuk mendapatkanprerelease
ke perintah canary kita dapat menambahkan flag tambahan atau menggunakan labelprerelease
, tetapi fitur tersebut tidak otomatis.
Itu sudah cukup baik. Apakah Anda menganggap "menjalankan auto canary
secara lokal dari cabang yang membangun versi beta
/ next
" sebagai kasus tepi? Jika tidak, mungkin harus ada dukungan otomatis di sini. Juga, jika saya menjalankan auto canary
dari CI, apakah saya akan tetap menggunakan kasus tepi ini?
Ketika lerna menjalankannya, ia mengambil versi basi dari
package.json
, yang berisi versi yang sudah diterbitkan, dan mencoba untuk menerbitkan lagi.
Lerna mendukung publishConfig.directory
(lihat di sini ), tetapi mungkin integrasi Anda dengan Lerna entah bagaimana menghindari jalur kode itu.
Garis inilah yang menjadi masalah.
Karena Anda melakukan hal ini di mana Anda menyalin atas package.json, readme, dll ke dalam folder dist dan kemudian hanya mempublikasikan itu, kita perlu menjalankan prepare
naskah pada waktu yang sangat spesifik:
lerna version
- mengubah package.json ke versi canaryprepare
- paket terakhir dimasukkan ke folder distlerna publish
- menerbitkan folder dist paket dengan versi yang benarJadi untuk alur kerja ini Anda harus membiarkan skrip siklus hidup berjalan dan ignoreScripts
harus disetel ke false (atau tidak sama sekali).
Apakah Anda menganggap "menjalankan canary otomatis secara lokal dari cabang yang membangun versi beta/berikutnya" sebagai kasus tepi? Jika tidak, mungkin harus ada dukungan otomatis di sini.
dukungan beta/berikutnya benar-benar belum terpasang, tetapi saya akan kembali ke masalah ini ketika saya mencoba mengatasinya.
mungkin integrasi Anda dengan Lerna entah bagaimana menghindari jalur kode itu.
Kami tidak membuat asumsi tentang penggunaan lerna jadi ini seharusnya tidak menjadi masalah. Anda dapat melihat di sini bahwa kami hanya menelepon ke lerna
untuk melakukan semua pekerjaan berat.
@aleclarson Saya dapat menerbitkan kenari setelah menghapus ignoreScripts
. Saya pikir saya telah membahas semuanya dalam masalah ini, jika ada tolong tutup!
Oke manis! Saya memiliki solusi saat ini, jadi saya tidak akan memeriksanya dalam waktu dekat.
Saya pasti akan membuka kembali jika saya sempat mencoba ini lagi. ;)