Auto: "auto canary" di monorepo dengan versi beta gagal

Dibuat pada 27 Sep 2019  ·  14Komentar  ·  Sumber: intuit/auto

Jelaskan bugnya

Saat menjalankan auto canary di Lerna monorepo, beberapa masalah muncul.

  1. 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.

  2. Dikatakan Error: Running command 'npx' failed tepat di awal

  3. 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):

  • OS: macOS v10.14.5
  • Peramban: T/A
  • Versi: v7.6.0

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)
bug

Semua 14 komentar

Juga, bidang publishConfig.directory di setiap paket package.json tidak dihormati.

Aku akan melihat ini!

  1. 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-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.

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:

  1. lerna version - mengubah package.json ke versi canary
  2. prepare - paket terakhir dimasukkan ke folder dist
  3. lerna publish - menerbitkan folder dist paket dengan versi yang benar

Jadi 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. ;)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat