Branching Strategy Management like Spotify @ Cong Fandi | 2022-10-29T05:00:00+07:00 | 4 minutes read | Update at 2022-10-27T05:00:00+07:00

Halo guys, kali ini The Ngoding akan membahas hal yang lumayan penting, dalam hal ini kita tidak dalam

rangka menggurui dan mencari benar atau salah ya.

Existing Branch Management

Terkait Branch Management ini sebenarnya bukan bahasan baru ya, hanya saja saya ingin berbagi tentang branch yang kami anut di kantor kami saat ini dan rasanya perlu banget untuk aku share ya.

Sebelumnya saya main branch strategy dengan tahap seperti ini guys,

Feature => Dev Branch => Staging Branch => Main

  • Developer akan membuat feature baru diambil dari branch Dev
  • Developer akan PR(Pull request) ke branch Dev
  • Team QA Test semua scenario di Dev Branch
  • Team QA Bikin PR ke Staging Branch
  • Team QA Test lagi as Prod di Staging
  • Team QA PR ke Main Branch dan release feature baru

Pada saat kita demokan ke CTO kantor yang saat menjabat sebagai Senior Engineer di Spotify kita ditanya kenap begitu banyak step untuk hanya sekedar mua release feature ?

Disini saya sebagai lead dari enginerr sedikit bingung juga ya, karena sepengetahuan saya yang tentunya sanag minim ini sudah flow yang bagus yaa. dimana main branch akan bersih dari codingan codingan kotor yang ga penting.

Setelah bertanya seperti itu, akhirnya kita sepakat mengadakan satu event dengan CTO kantor membahas branching strategi ini, tentunya kami team dev sudah menyiapkan semua pertanyaan yang kami butuhkan.

New Branch Management

Feature => Main

Yes, saya ga salah ketik ko guys, memang di spotify itu ga ada branch aneh2 hahahha, mereka hanya make 1 branch aja Main Branch. Tentu kalian bertanya-tanya kan ya ko bisa dan bagaimana ? saya coba jelaskan satu satu ya guysss.

  1. Semua team Dev ambil dari main branch
  2. Team QA akan langsung checkout ke branch yang di PR testing disana
  3. Approve dan DONE!!..

lah ko cuman 3 Step ? iya guys cuman 3 step, dari yang sebelumnya 3 step sekarang jadi 3, lah terus gimana cara release featurenya ? Apa nanti ga kotor kodingannya ? kalau ternyata ada bug di production gimana ? kalau mau revert gimana ? kalau mau balik ke versi sebelumnya gimana ? kalau mau hot fixing gimana ? kalau mau bugfixing gimana ? dan pertanyaan pertanyaan lainnya. tpai coba saya bahas satu satu ya guysss

Pertanyaan-pertayaan

  1. Gimana cara releasenya ?

    Kami biasanya kalau mau release menggunakan tagging guys, contoh taggingnya gini

    v1.0.0 => untuk yang release ke production v1.0.0-01.pre => untuk yang masih pre release/testingnya di non production tapi udah masuk ke appstore/playstore

    untuk yang pre relase kita niru punya flutter ya guys penamaan tagingnya.

  2. Apa nanti ga kotor kodingannya kalau semuanya masuk ke main branch ?

    Ini yang jadi pertanyaan pertamaku guys, terus kalian tahu jawabannya ?

    Yes, jawabannya adalah Tester dan Version Control. ko gitu ? gini guys… sebelum masuk ke main pasti ada tester dulu, misal ga ada langsung main PR aja, ya kita pake Version Controll ko, artinya masih bisa di revert atau dibalikin ke main sebelum ada PR yang kotor atau PR nya bisa dicabut/delete dari main branch.

  3. Kalau ternyata ada BUG di production gimana ?

    Ini juga jadi consenku guys, kalau bugnya itu ga nynggung yang lain atau feature lain kita biasanya benerin di next release, jadinya bugfixing.

  4. Kalau mau revert PR gimana ?

    ada beberapa cara ya guys, tapi di kantorku kalau mau revert ke codingan sebelumnya dilihat dari dampaknya.

    kalau emang itu harus di cabut dulu codinganya ya kita balik ke versi sebelumnya dengan cara checkout ke versi sebelumnya, tapi kalau ga fatal biasanya kita checkout lagi ke PRNya terus benerin dan PR lagi atas branch yang sama ya.

  5. kalau mau balik ke versi sebelumnya gimana ?

    git checkout v1.0.0

    udah gitu aja guys, terus tinggal buat deh release dari versi ini, ini juga bisa dilakukan di BE maupun FE dan applikasi ya guys. oh iya, katakan v1.0.0 ini adalah versi lama ya.

  6. Kalau mau hotfixing gimana ?

    kalau mau hotfixing, kita checkout dulu ke tag existing ya guys, terus bikin brach dari versinya terus kita push lagi atau bikin versi baru

    Misal existing versi 1.0.0, kita buat versi release baru 1.0.0-hotfixing

  7. kalau mau bugfixing gimana ?

    Kalau dikita bugfixing ambil dari main atau balik ke branchnya, terus bugfixing aja dari sana dan PR lagi guys.

  8. silhakan tanyakan flow kalian, mungkin bisa dijawan juga yaa…

    Oke segitu dulu ya guys, saya tunggu pertanyaan kalian, dan mohon maaf kalau ada salah kata atau salah tulis, semoga bermanfaat ya guys, terima kasih.


✨”Jika Kamu tidak sanggup menahan lelahnya belajar maka kamu harus sanggup menahan perihnya kebodohan” ✨Imam Syafi’i

© 2018 - 2022 The Ngoding

Powered by Hugo with theme Dream.

avatar

The NgodingSebuah cita-cita hanyalah mimpi jika tidak tahu cara mewujudkannya