Auto: Mengadopsi otomatis dalam proyek yang ada menabrak beberapa versi (bagaimana cara membatalkan kesalahan?)

Dibuat pada 25 Jan 2020  ·  19Komentar  ·  Sumber: intuit/auto

Pertama, proyek ini hebat! Ini _so_ jauh lebih baik daripada yang saya mulai bertahun-tahun yang lalu dengan https://github.com/ericclemons/github-semantic-version . 😍

Jelaskan bugnya

Saya sedang berupaya untuk beralih dari rilis manual (dengan https://github.com/marketplace/actions/release-draft ) ke otomatis di https://github.com/ericclemons/codelift/pull/58.

Dengan GitHub akhirnya berfungsi (menggunakan lerna release.sh di https://intuit.github.io/auto/pages/getting-started.html#enabling-skip-release-label), PR saya berubah dari v0.5.0 hingga v9.2.1 (https://github.com/ericclemons/codelift/releases/tag/v9.2.1).

Untuk Mereproduksi

  1. Miliki proyek dengan tag yang ada.
  2. Jalankan skrip lerna yang disediakan di https://intuit.github.io/auto/pages/getting-started.html#enabling -skip-release-label dalam GitHub Action (https://intuit.github.io/auto/pages /build-platforms/github-actions.html).
  3. Rilis canary tidak dipotong, melainkan yang asli.

Perilaku yang diharapkan

  1. Versi akan bertambah dari apa yang ada di lerna.json , atau version dalam package.json .
  2. Ada cara menjalankan dry-run "pertama kali" sehingga migrasi auto dapat divalidasi dengan aman sebelum tag/rilis/paket asli dipublikasikan.

    ❯ yarn auto shipit --dry-run
    yarn run v1.19.2
    $ /Users/eric/Projects/ericclemmons/codelift/node_modules/.bin/auto shipit --dry-run
    ⚠  warning   Published canary identifier would be: "-canary.f1bc352"
    ✨  Done in 4.37s.
    

    Tetapi di GitHub Action, yarn auto shipit mengembalikan:

    $ auto shipit
    ⚠  warning   NPM: No "NPM_TOKEN" found in environment
    ✔  success   Wrote authentication token string to /home/runner/.npmrc
    ⚠  warning   lerna notice cli v3.20.2
    lerna success found 2 packages
    
    Error: Running command 'npx' with args [lerna, publish, 9.2.2-canary.58.f1bc352.0, --dist-tag, canary, --force-publish, --yes, --no-git-reset, --no-git-tag-version, --exact] failed
    
    
    Changes:
     - codelift: 0.5.0 => 9.2.2-canary.58.f1bc352.0
    

Desktop (harap lengkapi informasi berikut):

  • OS: macOS
  • Peramban: Firefox
  • Versi: 72

Konteks tambahan

"auto": "^9.3.1",
bug

Semua 19 komentar

auto release --dry-run sedikit lebih bermanfaat daripada shipit :

~/Projects/ericclemmons/codelift 58-release
❯ yarn auto release --dry-run
yarn run v1.19.2
$ /Users/eric/Projects/ericclemmons/codelift/node_modules/.bin/auto release --dry-run
ℹ  info      Last used release: v0.5.0
⚠  warning   lerna notice cli v3.20.2
lerna success found 1 package

ℹ  info      Using release notes:
...
ℹ  info      Would have released (unless ran with "shipit"): v9.2.1

Sekarang untuk mencari tahu bagaimana caranya menjadi v9.2.1 sehingga saya dapat memperbarui PR yang sesuai atau mengonfigurasi sesuatu yang berbeda ...

Kemajuan ! Menghapus tag buruk & menghapus catatan rilis tampaknya memperbaiki referensi di GitHub Actions (meskipun lokal --dry-run masih melihat v9.2.1):

  1. git tag -d v9.2.1
  2. git push --delete v9.2.1
  3. (Jalankan kembali GitHub Action) https://github.com/ericclemons/codelift/pull/58/checks?check_run_id=408281672
 - codelift: 0.5.0 => 0.5.1-canary.58.45c171c.0

Sekarang untuk mencari tahu mengapa lokal (atau jarak jauh!) _ever_ muncul dengan v9.2.1 dari v0.5.0

Ini luar biasa bahwa Anda menggunakan auto ! Saya akan mencoba men-debug ini dengan Anda.

@hipstersmoothie Jangan khawatir tentang menggali terlalu banyak sekarang, saya masih meretas di https://github.com/ericclemons/codelift/pull/58 sampai saya menabrak dinding bata atau keluar dari sisi lain :D

Ini pasti bug di pihak kami. Itu karena kami menemukan contoh Anda, temukan yang dengan versi tertinggi, yang kebetulan next , dan gunakan itu untuk menemukan versi terbaru, yang kebetulan v9.2.0 , yang kemudian mendapat patch diterapkan untuk mendapatkan v9.2.1 .

Menghapus version dari contoh pribadi saya package.json memberikan hasil yang berbeda:

yarn auto release --dry-run
yarn run v1.19.2
$ /Users/eric/Projects/ericclemmons/codelift/node_modules/.bin/auto release --dry-run
ℹ  info      Last used release: v0.5.0
ℹ  info      Using release notes:
...
ℹ  info      Would have released (unless ran with "shipit"): v0.5.0
✨  Done in 5.88s.

Perhatikan itu tidak bertambah sama sekali

Semakin dekat! Akan menghapus plugin released dan terus melanjutkan:

$ auto shipit
✖  error     None of the plugins that you are using implement the `canary` command!

"canary" releases are versions that are used solely to test changes. They make sense on some platforms (ex: npm) but not all!

Ups, aku bodoh. Saya melewatkan plugins menimpa npm (saya berasumsi itu akan tetap sebagai default karena ini adalah ketergantungan)

https://github.com/hipstersmoothie/auto-config-hipstersmoothie/blob/4dc2b725491fa196ac4723fae141f578e79c5382/package.json#L22 -L26

Perhatikan itu tidak bertambah sama sekali

Ini hanya pesan yang agak buruk. PR masuk untuk membuat apa yang terjadi lebih jelas

Sukses pertama!!! 🎉

https://github.com/ericclemons/codelift/pull/58/checks?check_run_id=408308903

Saya tidak keberatan untuk tetap membuka ini, tetapi kita dapat memutuskan untuk membahas hal-hal berikut secara terpisah:

  • Validasi sebelum rilis:

    • Pembaruan dokumentasi untuk menekankan --dry-run sebagai bagian dari bagian Memulai. auto release --dry-run telah menjadi cara yang paling dapat diandalkan bagi saya untuk memvalidasi kredensial, plugin, dll. Saya senang untuk mengirimkan PR ini jika Anda tertarik!
  • Perilaku 0.5.0 ke 9.2.1 :

    • Ini mungkin masalah dokumentasi juga: auto release --dry-run akan menyelamatkan penerbitan prematur, tetapi mungkin jawaban yang lebih baik adalah menambahkan ke Pemecahan Masalah "Hapus version dari paket apa pun dengan "private": true "?
  • Bagaimana cara kerja canary dengan beberapa PR terbuka?

    • Untuk proyek besar seperti https://github.com/aws-amplify/amplify-js/ , memiliki setiap komit dalam PR tersedia sebagai paket sangat besar ! Tetapi dengan beberapa PR dalam penerbangan, saya tidak akan menginstruksikan pengguna untuk menginstal @canary , tetapi mungkin @PR-123 . Ini juga bisa menjadi masalah dokumentasi/visibilitas di mana GitHub Action/Check dapat kembali dengan komentar atau indikasi cara menginstal yang terbaru (mis. https://zeit.co/github#features)

"Hapus versi dari paket apa pun dengan "pribadi": true"

Selesai di #894

Saya senang untuk mengirimkan PR ini jika Anda tertarik!

Silakan kirim pr! Sangat berharga untuk memiliki sudut pandang yang berbeda.

Saya juga tidak akan menginstruksikan pengguna untuk memasang tag kenari. Menerbitkan ke tag itu lebih hanya untuk menerbitkan di bawah sesuatu selain yang terbaru. Ini bertindak sebagai menangkap semua. Memiliki tag seperti PR-123 bagus dan otomatis mungkin bisa melakukannya, kita hanya perlu membersihkan tag setelah pengiriman selesai. Ini mungkin akan sedikit lebih ramah pengguna juga.

Ini juga bisa menjadi masalah dokumentasi/visibilitas di mana Tindakan/Pemeriksaan GitHub dapat kembali dengan komentar atau indikasi cara menginstal yang terbaru

Anda mungkin tidak menyadarinya tetapi ini sudah terjadi. Periksa PR Anda

https://github.com/ericclemons/codelift/pull/58#issue -367063354

Perhatian besar: Tindakan GitHub tidak memberikan rahasia ke fork sama sekali! Jadi PR bercabang tidak akan mendapatkan rilis kenari untuk diterbitkan.

@ericclemons Anda harus menjalankan yarn install --frozen-lockfile di lingkungan CI.

https://github.com/ericclemons/codelift/runs/408316662

Juga [email protected] harus memiliki pengalaman --dry-run baik

Publikasi PR dengan versi canary: 0.5.1-canary.58.fea0a94.0

Oh, sial! Itu sangat halus sehingga saya tidak menyadarinya!

Apa pendapat Anda tentang PR agar sedikit lebih visual?


Publikasi PR dengan versi canary: 0.5.1-canary.58.fea0a94.0

Saya selalu sedih untuk lebih banyak emoji!

Terima kasih atas perhatiannya malam ini @hipstersmoothie. Ini telah bekerja dengan baik sejauh ini!

Seperti, saya benar-benar terkejut seberapa baik kerjanya! Ini bukan masalah yang mudah untuk dipecahkan

Pada topik monorepos, saya mencari alternatif untuk https://github.com/aws-amplify/amplify-js/ :

  • Anda benar: dengan beberapa PR dalam penerbangan canary menjadi bertentangan. Solusi terbaik yang ada dalam pikiran saat ini adalah memiliki paket prune GitHub Action yang berisi PR-123 jika PR-123 tidak terbuka. (Memiliki tag seperti PR-123 untuk selalu merujuk yang terbaru juga berguna IMO)

  • Amplify menggunakan versi independent : bagaimana cara kerjanya dengan auto ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat