Jenkins Complete Guide
အစမှ စတင်သော ခရီးတစ်ခု
ဒီ Topic ကို ဖတ်နေတယ်ဆိုရင်၊ မင်းဟာ Software Development လောကထဲမှာ CI/CD (Continuous Integration/Continuous Deployment) ဆိုတဲ့ အရာတွေကို လေ့လာချင်နေသူ တစ်ယောက်ဖြစ်နိုင်တယ်။ ဒါမှမဟုတ် Jenkins ဆိုတဲ့ နာမည်ကို ကြားဖူးပြီး “ဒါက ဘာလဲ၊ ဘာလို့ လူတွေ သုံးနေကြတာလဲ” ဆိုတာကို သိချင်နေတာလည်း ဖြစ်နိုင်တယ်။ ဘာပဲဖြစ်ဖြစ်၊ ဒီကနေ မင်းကို အစကနေ စပြီး လက်တွေ့သုံးလို့ရတဲ့ အဆင့်ထိ ခေါ်သွားပေးမှာပါ။ အခုကစပြီး အခြေခံဆုံး အချက်တွေကနေ စလိုက်ရအောင်။
Jenkins ဆိုတာ ဘာလဲ?
Jenkins ဆိုတာ အလိုအလျောက် လုပ်ဆောင်ပေးနိုင်တဲ့ Open-Source ကိရိယာ (Tool) တစ်ခုပါ။ သူ့ရဲ့ အဓိကအလုပ်က Software တည်ဆောက်တာ (Build)၊ စမ်းသပ်တာ (Test) နဲ့ အသုံးပြုဖို့ ထုတ်လုပ်ပေးတာ (Deploy) ဆိုတဲ့ အဆင့်တွေကို အလိုအလျောက် လုပ်ပေးနိုင်ဖို့ပါပဲ။ ရိုးရိုးရှင်းရှင်းပြောရရင် Jenkins က Developer တွေရဲ့ ဘဝကို ပိုလွယ်အောင် ကူညီပေးတဲ့ လက်ထောက်တစ်ယောက်လိုပါ။
ဥပမာ:
မင်းဟာ အိမ်မှာ မုန့်ဖုတ်နေတယ်ဆိုပါစို့။ မင်းကိုယ်တိုင် မုန့်စိမ်းနယ်တာ၊ ဖုတ်တာ၊ အအေးခံတာတွေ အကုန်လုပ်နေရမယ်ဆိုရင် အချိန်လည်းကုန်၊ ပင်ပန်းလည်းပန်းမယ်။ ဒါပေမယ့် မင်းမှာ အလိုအလျောက် မုန့်စိမ်းနယ်ပေးတဲ့ စက်၊ ဖုတ်ပြီးရင် အအေးခံပေးတဲ့ စနစ်တစ်ခုရှိရင် မင်းအတွက် ပိုမြန်သလို ပိုထိရောက်မှာပေါ့။ Jenkins က Software လောကထဲမှာ အဲဒီလိုမျိုး အလိုအလျောက်လုပ်ပေးတဲ့ စနစ်တစ်ခုပါပဲ။
CI/CD ဆိုတာ ဘာလဲ? Jenkins ဘာလို့ DevOps မှာ အသုံးများလဲ?
CI/CD ဆိုတာဘာလဲ?
CI/CD ဆိုတာ နှစ်ပိုင်းခွဲလို့ရတယ်: Continuous Integration (CI) နဲ့ Continuous Deployment (CD)။
- Continuous Integration (CI):
ဒါက Developer တွေ သူတို့ရေးထားတဲ့ Code အသစ်တွေကို တစ်နေရာထဲမှာ ပေါင်းစည်းပြီး၊ အလိုအလျောက် စမ်းသပ်တာကို ဆိုလိုတယ်။ ဥပမာ၊ မင်းနဲ့ မင်းသူငယ်ချင်း နှစ်ယောက် တူတူ Project တစ်ခုလုပ်နေတယ်ဆိုပါစို့။ မင်းက တစ်ပိုင်းရေးပြီး၊ သူက တစ်ပိုင်းရေးပြီး၊ နောက်ဆုံး အကုန်ပေါင်းလိုက်တဲ့အခါ အဆင်မပြေတာတွေ ဖြစ်နိုင်တယ်။ CI က ဒီလိုမဖြစ်အောင် နေ့တိုင်း Code တွေကို ပေါင်းပြီး အလိုအလျောက် စစ်ဆေးပေးတာပါ။ - Continuous Deployment (CD):
CI ကနေ တဆင့် အဆင်ပြေတဲ့ Code တွေကို အသုံးပြုဖို့ (Deploy) အဆင့်ထိ အလိုအလျောက် လုပ်ပေးတာကို CD လို့ခေါ်တယ်။ ဆိုလိုတာက မင်းရဲ့ အလုပ်လုပ်တဲ့ Software ကို အသုံးပြုသူတွေ လက်ထဲ မြန်မြန်ဆန်ဆန် ရောက်အောင် လုပ်ပေးတာပဲ။
Jenkins ဘာလို့ DevOps မှာ အသုံးများလဲ?
DevOps ဆိုတာ Development (ဖန်တီးရေးသားတာ) နဲ့ Operations (လည်ပတ်တာ) ကို ပေါင်းစပ်ပြီး ပိုမြန်၊ ပိုထိရောက်အောင် လုပ်တဲ့ ချဉ်းကပ်မှုတစ်ခုပါ။ Jenkins က ဒီလိုအလုပ်မှာ အဓိက အခန်းကဏ္ဍကနေ ပါဝင်တယ် ဘာကြောင့်လဲဆိုတော့:
- အလိုအလျောက်လုပ်ဆောင်မှု: Build၊ Test၊ Deploy အဆင့်တွေကို အလိုအလျောက် လုပ်ပေးနိုင်တယ်။
- ပြောင်းလွယ်ပြင်လွယ်ရှိမှု: Plugins တွေ အများကြီးနဲ့ ချိတ်ဆက်လို့ရတော့ မတူညီတဲ့ Project တွေမှာ အသုံးပြုလို့ရတယ်။
- အသိုင်းအဝိုင်းရဲ့ ပံ့ပိုးမှု: Open-Source ဖြစ်တာကြောင့် အသုံးပြုသူတွေ အများကြီးရှိပြီး၊ ပြဿနာရှိရင် အဖြေရှာရလွယ်တယ်။
Jenkins vs Other CI/CD Tools
CI/CD Tool တွေ အများကြီးရှိတယ်။ GitHub Actions၊ GitLab CI/CD၊ CircleCI တို့လို နာမည်ကြီးတွေနဲ့ Jenkins ကို နှိုင်းယှဉ်ကြည့်ရအောင်။
- Jenkins:
- အားသာချက်: Open-Source၊ Plugins တွေ အများကြီးနဲ့ စိတ်ကြိုက်ပြင်လို့ရတယ်၊ အသိုင်းအဝိုင်းကြီးမားတယ်။
- အားနည်းချက်: စတင်အသုံးပြုဖို့ အစကနေ တည်ဆောက်ရတာ အနည်းငယ် ရှုပ်ထွေးနိုင်တယ်။
- GitHub Actions:
- အားသာချက်: GitHub နဲ့ တိုက်ရိုက်ချိတ်ဆက်ထားတော့၊ GitHub သုံးနေတဲ့သူတွေအတွက် အလွန်အဆင်ပြေတယ်။
- အားနည်းချက်: GitHub အပြင်ထွက်ပြီး သုံးဖို့ ကန့်သတ်ချက်ရှိနိုင်တယ်။
- GitLab CI/CD:
- အားသာချက်: GitLab ထဲမှာပဲ အကုန်လုံးပါပြီး၊ ရိုးရှင်းတဲ့ Configuration နဲ့ စလို့ရတယ်။
- အားနည်းချက်: GitLab မသုံးရင် သီးသန့် အသုံးပြုဖို့ ခက်တယ်။
- CircleCI:
- အားသာချက်: Cloud ကို အဓိကထား အသုံးပြုလို့ရတော့ စတင်အသုံးပြုရတာ လွယ်ကူတယ်။
- အားနည်းချက်: အခပေးစနစ်ဖြစ်တာကြောင့် ကုန်ကျစရိတ် ပိုများနိုင်တယ်။
ဘယ်ဟာက အကောင်းဆုံးလဲ?
ဒါက မင်းရဲ့ Project လိုအပ်ချက်ပေါ်မှာ မူတည်တယ်။ Jenkins က ပြောင်းလွယ်ပြင်လွယ်နဲ့ စိတ်ကြိုက်လုပ်လို့ရတာကြောင့် အသုံးများနေတုန်းပဲ။
Jenkins Architecture (Master-Agent Architecture)
Jenkins ရဲ့ အလုပ်လုပ်ပုံကို နားလည်ဖို့ Master-Agent Architecture ကို သိထားဖို့ လိုတယ်။
- Master:
- Master က Jenkins ရဲ့ ဦးနှောက်လို့ ပြောလို့ရတယ်။
- သူက အလုပ်တွေကို စီမံခန့်ခွဲပြီး၊ Agent တွေကို ညွှန်ကြားတယ်။
- ဥပမာ၊ မင်းက စားသောက်ဆိုင်မှာ Manager ဆိုပါစို့။ မင်းက မီနူးချက်ဖို့ စာရင်းကို စီစဉ်ပြီး အလုပ်သမားတွေကို ခွဲဝေပေးတယ်။ Master က အဲဒီလိုပဲ။
- Agent (သို့မဟုတ် Slave):
- Agent တွေက Master ရဲ့ ညွှန်ကြားချက်အတိုင်း အလုပ်လုပ်တယ်။
- Build လုပ်တာ၊ Test လုပ်တာတွေကို Agent တွေက လုပ်ဆောင်ပေးတယ်။
- ဥပမာ၊ စားသောက်ဆိုင်ထဲက ချက်ပြုတ်သမားတွေလိုပဲ။
ဘာကြောင့် ဒီလို ခွဲထားတာလဲ?
အကယ်၍ အလုပ်တွေ အကုန်လုံးကို Master တစ်ခုတည်းမှာ လုပ်မယ်ဆိုရင် အလုပ်များလာတဲ့အခါ နှေးကွေးသွားနိုင်တယ်။ Agent တွေကို ခွဲထားတာက အလုပ်တွေကို အပိုင်းပိုင်းခွဲပြီး ပိုမြန်အောင် လုပ်ပေးနိုင်ဖို့ပါ။
နောက် Post တွေမှာ ထပ်တွေ့ ပါမယ်။
Shar Thu
T4B Co., Ltd.
