Beginner တွေအတွက် ရိုးရှင်းတဲ့ development flow

အခုမှ Git ကိုသုံးပြီး သူများတွေနဲ့ project အတူတူရေးမယ့် beginner တွေအတွက် ရိုးရိုးရှင်းရှင်း ဒီ development flow ကနေ စသင့်တယ်။

main နဲ့ develop ဆိုပြီး long lived branch ၂ ခုပဲ ထားမယ်။ main branch က production ကိုပို့လို့ရတဲ့ stable code ဖြစ်ပြီး develop ကတော့ deploy လို့ရနေပြီပေမယ့် production အတွက် အာမ,မခံနိုင်သေးဘူးဆိုတဲ့ code မျိုး။ Developer တွေအနေနဲ့ feature အသစ်တွေ နောက်ပြီး bug နဲ့ issue fix တွေရေးတဲ့အခါ develop ကနေ branch ခွဲသွားရမယ်။

issue တခု ဥပမာ login button အလုပ်မလုပ်နေတာမျိုးပြင်ရမယ်ဆိုရင် develop ကနေ branch တခုခွဲ။ branch နာမည်ကို issue နာမည်ပါအောင်ထည့်။ လိုအပ်တဲ့ code တွေရေး။ (ဒီ issue branch မှာ) ရလာတဲ့ commit တွေကို remote ဆီ push ထားရမယ်။ ခုလို commit တွေ push တဲ့အချိန် issue branch တွေအတွက် ဆင်ထားတဲ့ CI pipeline ရှိရင် အဲဒါက အလုပ်လုပ်မှာပေါ့လေ။ issue branch က full commit တွေမဟုတ်သေးတဲ့အတွက် unit test စစ်တာ၊ code quality စစ်တာတွေပဲလုပ်သင့်တယ်။ container image ဆောက်တာတို့ Helm Chart ဆောက်တာတို့ မလိုသေးဘူး။

code quality ဒါမှမဟုတ် vulnerability စစ်လို့ ci issue တွေ ရှိလာရင် နောက် issue တွေထပ်ဖွင့်ချင်ဖွင့်လို့ရတယ်။ ဒါပေမယ့် ကိုယ်သုံးနေတဲ့ ticketing system ထဲကိုတော့ ci issue တွေယူမသွားသင့်ဘူး။ နောက် push မှာအခုဒီ ci issue တွေ resolve ဖြစ်သွားတယ်ဆိုရင်လည်း auto closed ပေးဖို့လုပ်ထားသင့်တယ်။

issue branch ပေါ် code ရေးနေတဲ့ တောက်လျှောက် main နဲ့ up to date ဖြစ်အောင်လုပ်နေရမယ်။ ရေးလို့ပြီးပြီ issue ကိုဖြေရှင်းလိုက်နိုင်ပြီလို့ ထင်ရင် integration branch နှစ်ခု develop (local) နဲ့ develop (remote) ကို sync မယ်။ ဒါပြီးရင် develop ကိုကိုယ့် issue branch နဲ့ merge လိုက်၊ ရလာတဲ့ develop ကို repository ဆီ push လိုက်ရင်ပြီးပါပြီ။

ဒီအချိန်က develop CI ဆင်ထားရင် pipeline အလုပ်လုပ်မယ့်အချိန်ပေါ့။ run စရာရှိတဲ့ test တွေ run မယ်။ container image နဲ့လိုအပ်တဲ့ artifact တွေ build မယ်။ အကြောင်းတခုခုရှိလို့ အဲဒီ pipeline fail သွားရင် developer ကိုကော်ဖီထသောက်ခွင့်တောင် မပေးဘူး။ ပြင်ပေရော့ပဲ။

ဒီ setup ကရိုးရှင်းလွန်းတယ်။ ဒါပေမယ့် တချိန်တည်းမှာပဲ အန္တရာယ်တွေကလည်း များတယ်။ integration branch မှာ တခုခုဖြစ်သွားရင် တခြား developer တွေရဲ့ issue fix တွေ integrate လို့မရတော့သလို နောက်ထပ် issue branch တွေလည်း ခွဲထုတ်လို့ရတော့မှာမဟုတ်လို့ team တခုလုံး block သွားတာနဲ့ အတူတူပဲ။ ဒါကိုဖြေရှင်းဖို့ integration ကို local မှာမဟုတ်ပဲ remote မှာ pull request ကတဆင့်သွားဖို့ လုပ်ထားနိုင်တယ်။ PR တက်လာရင် build ပြဿနာမရှိကြောင်း CI နဲ့ confirm ပြီးမှ develop branch နဲ့ merge လို့ရမယ်ပေါ့။

Deployment အတွက်က develop branch ကနေ တိုက်ရိုက် dev server ကို deploy လုပ်။ error မရှိရင် main ထဲ merge မယ်။ prod server ကို ဆက်မယ်။ error ရှိခဲ့ရင် dev server မှာတင် ရှေ့ main ကိုပြန် rollback မယ်။ ကံကောင်းလို့ production ပေါ်ရောက်မှ error တွေထပ်တွေ့ရင်တော့ main ကနေ branch ခွဲပြီး hotfix လုပ်ရမှာပေါ့။ ဒါပါပဲ။