Mengerti mengapa s?
master -> kode yang diuji dev terbaru dan terhebatTidak ada batang permanen lainnya.
feature/<feature_name>fix/<bug_title>release/v-<version.major>.<version.minor>auto-backmerge/<pr_number> digunakan untuk meningkatkan PR untuk menguasai untuk setiap perubahan yang didorong untuk melepaskan cabang YYMM.DD.NN
NN ➡️ nomor tambalan
Mis: 2301.25.00 , 2302.01.04
master? on-rge-master.yml pada setiap gabungan untuk menguasai kami memperbarui versi lengkap. Mayor, versi minor akan dimodifikasi jika versi yang ada pada tanggal sebelumnya, jika tidak, hanya nomor tambalan yang akan ditingkatkan.
Contoh :
Versi yang ada: 2301.25.02
Jika komit baru didorong pada 25 Januari 2023, versi menjadi 2301.25.03
Jika komit baru didorong pada tanggal 26 Januari 2023, versi menjadi 2301.26.00
release/**? On-Merge-Release.yml
release* Pada setiap komit, kami memperbarui nomor patch pada release* Cabang
release/** ke master ? On-Merge-Release.yml Setiap dorongan untuk release* akan memicu PR yang sesuai untuk master melalui cabang auto-backmerge/<pr_number> .
PR akan digabungkan secara otomatis jika tidak ada konflik
? persiapkan-release.yml Buat cabang rilis dari master terbaru, dengan versi yang tepat di nama cabang.
Tindakan
? create-tag-release.yml Tag komit terbaru di cabang rilis dengan tag versi yang tepat dan catatan rilis
Tindakan
%% {init: {'gitgraph': {'MainBranchName': 'master', 'showCommitlabel': true}}} %%
gitgraph
ID Komit: "? 2301.25.00"
Perbaikan cabang/frame-bug
ID Komit: "Perbaiki Logika"
ID komit: "Perbaiki UI"
master checkout
Fitur Cabang/DM
ID komit: "Tambahkan DB"
ID Komit: "Tambahkan Soket"
master checkout
Gabungkan ID Fix/Frames-Bug: "Pr: Frames Bug"
ID Komit: "? 2301.25.01"
Fitur Checkout/DM
Gabungkan ID Master: "Tarik Master"
ID KOMIT: "Tambahkan UI"
master checkout
Gabungan Fitur/ID DM: "PR: Fitur DM"
ID Komit: "? 2301.25.02"
master terbaru (tindakanmaster dan lanjutkan ke langkah 2 %% {init: {'gitgraph': {'MainBranchName': 'master', 'showCommitlabel': true}}} %%
gitgraph
ID Komit: "? 2301.25.02"
Rilis Cabang/V-2301.25
master checkout
ID Komit: "PR: Fitur Baru" Jenis: Sorotan
ID komit: "? 2301.26.00"
Rilis Checkout/V-2301.25
Cabang Perbaikan/Rilis-Bug
ID Komit: "Perbaiki Bug"
Rilis Checkout/V-2301.25
Gabungkan ID Fix/Release-Bug: "Pr: Release Bug"
Rilis Checkout/V-2301.25
Cabang Auto-Backmerge/Release-Bug
Gabungkan ID Master: "Perbarui Cabang"
Rilis Checkout/V-2301.25
ID Komit: "? 2301.25.03" Tag: "V-2301.25.03"
master checkout
Gabungkan ID Auto-Backmerge/Release-Bug: "Backmerge"
master checkout
ID Komit: "? 2301.26.01"
Tindakan
Setelah kita? Pada semua tes, lakukan hal di atas untuk menandai komit terbaru dari cabang rilis dan membuat rilis GitHub dengan catatan rilis otomatis. Dan unggah artefak ke toko aplikasi
Memperbaiki masalah dalam pembangunan produksi saat ini ( v-2301.16.01 )
v-2301.16.01 > Cabang: release/v-2301.16 )Sisanya sama dengan aliran pelepasan normal
%% {init: {'gitgraph': {'MainBranchName': 'Release/V-2301.16', 'ShowCommitLabel': true}}} %%
gitgraph
ID Komit: "2301.16.04" Tag: "V-2301.16.04"
Persimpangan/crash cabang
ID KOMIT: "Perbaiki Kecelakaan"
Rilis Checkout/V-2301.16
Gabungkan Hotfix/Crash ID: "PR Crash"
ID Komit: "? 2301.16.05"
Persimpangan/bug cabang
ID Komit: "Perbaiki Bug"
Rilis Checkout/V-2301.16
Gabungkan Persimpangan Hot/Bug: "PR Bug"
ID komit: "? 2301.16.06" Tag: "V-2301.16.06"
Sejarah linier diinginkan karena berbagai alasan. Semua mendidih ke kesederhanaan lagi.
Hanya membiarkan labu bergabung dengan satu bagasi adalah cara paling sederhana untuk mencapai sejarah linier. Tidak ada yang harus berpikir, hal yang benar terjadi secara otomatis.
Juga secara umum, orang memiliki disiplin yang lebih baik sehubungan dengan judul-judul PR daripada melakukan pesan, sehingga log perubahan Anda juga terlihat bagus.
Tidak seperti aplikasi server, proses rilis aplikasi seluler cenderung panjang. Adalah umum untuk memakan waktu 2 minggu atau lebih jika kami memasukkan peluncuran bertahap hingga 10%> 20%> 50%> 100% saat mengamati stabilitas dan metrik di sepanjang jalan.
Sementara itu, kontributor tidak boleh memiliki ambiguitas apakah aman untuk bergabung untuk menguasai sekarang.
Setelah rilis dibuat dan komit itu ditandai, mereka tidak memiliki tujuan apa pun. Itu sebabnya kami menghapusnya setelah rilis.
Gantt
Pengembangan dan rilis aplikasi judul
DateFormat yyyy-mm-dd
TickInterval 3day
Bagian Dev 1
Fitur 2: A, 2022-01-13, 15D
Gabungkan ke Master: Crit, Milestone, Setelah A, 0D
Bagian Dev 2
Fitur 1: B, 2022-01-12, 2D
Gabungkan ke Master: Milestone, setelah B, 0D
Peningkatan Perpustakaan ⬆️: L, 2022-01-16, 1D
Gabungkan ke Master: Crit, Milestone, Setelah L, 0D
Perbaiki fitur 1 ?: B2, setelah R1, 2D
Gabungkan untuk Rilis: Milestone, After B2, 0D
Peningkatan Kerangka Kerja ⬆️: F, 2022-01-22, 1D
Gabungkan ke Master: Crit, Milestone, After F, 0D
Rilis Bagian
Siapkan Rilis 2201.14: Tonggak sejarah, setelah B, 0D
Fitur Pengujian 1: R1, Setelah B, 4D
Fitur Pengujian 1: R2, Setelah B2, 1D
Rollout 2201.14.1 10% - 100%: R3, setelah R2, 7D
Persiapkan Rilis 2201.31: Milestone, 2022-01-31, 0D
Menggabungkan ke master? aman dan didorong bahkan ketika rilis sedang berlangsung
Ini adalah skema versi berbasis tanggal yang juga
semver untuk versi mana lebih besar dari yang lain2301.16.00 > 2212.31.07 )Dan yang terbaik dari semua menghindari pertanyaan - kapan kami merilis versi ini? selamanya, dari siapa pun di seluruh tim
Bahkan jika menjawab pertanyaan di atas tidak penting bagi tim Anda, itu sama -sama bagus, jika tidak lebih baik dari semver . Yang, sebagian besar tim menggunakan secara default. Versi Semantic ( semver ) masuk akal untuk perpustakaan. Konsumen perpustakaan Anda ingin tahu kapan ada perubahan dan kapan tidak ada. Dan manajer paket memanfaatkan konvensi ini untuk meningkatkan ketergantungan dengan aman. Pengguna aplikasi / toko aplikasi seluler tidak memiliki harapan seperti itu dari versi aplikasi. Mereka nyaris tidak peduli.
Tim saya telah menggunakan skema versi berbasis tanggal selama lebih dari setahun dan itu bagus!