စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

Continuous Deployment သည် ဆော့ဖ်ဝဲလ်တွင် အမျိုးမျိုးသော လုပ်ဆောင်ချက်များကို လျင်မြန်၊ ဘေးကင်းကာ ထိရောက်စွာ အကောင်အထည်ဖော်ရန် အသုံးပြုသည့် ဆော့ဖ်ဝဲဖွံ့ဖြိုးတိုးတက်ရေးတွင် အထူးချဉ်းကပ်မှုတစ်ခုဖြစ်သည်။

အဓိက စိတ်ကူးမှာ developer မှ ကုန်ချောထုတ်ကုန်ကို အသုံးပြုသူထံ လျင်မြန်စွာ ပေးပို့နိုင်စေမည့် ယုံကြည်စိတ်ချရသော အလိုအလျောက် လုပ်ငန်းစဉ်ကို ဖန်တီးရန်ဖြစ်သည်။ တစ်ချိန်တည်းမှာပင်၊ ထုတ်လုပ်မှုအတွက် စဉ်ဆက်မပြတ် အပြောင်းအလဲများ ပြုလုပ်ထားသည် - ၎င်းကို စဉ်ဆက်မပြတ် ပေးပို့ပိုက်လိုင်း (CD Pipeline) ဟုခေါ်သည်။

Skillbox မှ အကြံပြုထားသည်- လက်တွေ့သင်တန်း "မိုဘိုင်း Developer PRO".

ငါတို့မင်းကိုသတိပေးတယ် "Habr" ၏စာဖတ်သူအားလုံးအတွက် - "Habr" ပရိုမိုးရှင်းကုဒ်ကို အသုံးပြု၍ မည်သည့် Skillbox သင်တန်းတွင်စာရင်းသွင်းသည့်အခါ 10 ရူဘယ်လျှော့စျေး။

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

စီးဆင်းမှုကို ထိန်းချုပ်ရန်၊ အခကြေးငွေနှင့် လုံးဝအခမဲ့ အပါအဝင် ကျယ်ပြန့်သောကိရိယာများကို သင်သုံးနိုင်သည်။ ဤဆောင်းပါးသည် ပရိုဂရမ်မာတိုင်းအတွက် အသုံးဝင်နိုင်သည့် developer များကြားတွင် ရေပန်းအစားဆုံး ဖြေရှင်းချက် သုံးခုကို ဖော်ပြထားပါသည်။

Jenkins

အပြည့်အဝ ကိုယ်တိုင်ပါရှိသော open source အလိုအလျောက်စနစ် ဆာဗာ။ တည်ဆောက်ခြင်း၊ စမ်းသပ်ခြင်း၊ ပို့ဆောင်ခြင်း သို့မဟုတ် ဆော့ဖ်ဝဲလ်ဖြန့်ကျက်ခြင်းနှင့် သက်ဆိုင်သည့် အလုပ်အမျိုးအစားအားလုံးကို အလိုအလျောက်လုပ်ဆောင်ရန် ၎င်းသည် အလုပ်လုပ်ရကျိုးနပ်သည်။

အနည်းဆုံး PC လိုအပ်ချက်များ

  • 256 MB RAM ၊ ဖိုင်နေရာ 1 GB ။

အကောင်းဆုံး-

  • 1 GB RAM ၊ 50 GB ဟာ့ဒ်ဒရိုက်။

အလုပ်လုပ်ရန်၊ Java Runtime Environment (JRE) ဗားရှင်း 8 တွင် အပိုဆော့ဖ်ဝဲ လိုအပ်ပါသည်။

ဗိသုကာပညာ (ဖြန့်ဝေထားသော ကွန်ပြူတာ) သည် ဤကဲ့သို့ ဖြစ်သည်-
စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

Jenkins Server သည် GUI hosting အတွက် တာဝန်ရှိသည့်အပြင် တည်ဆောက်မှုတစ်ခုလုံးကို စုစည်းခြင်းနှင့် လုပ်ဆောင်ခြင်းအတွက် တာဝန်ယူသည့် တပ်ဆင်မှုတစ်ခုဖြစ်သည်။

Jenkins Node/Slave/Build Server - Master (master node) ကိုယ်စား တည်ဆောက်ခြင်းလုပ်ငန်းကို လုပ်ဆောင်ရန် configure လုပ်နိုင်သော စက်ပစ္စည်းများ။

Linux အတွက် ထည့်သွင်းခြင်း။

ပထမဦးစွာ သင်သည် Jenkins repository ကို စနစ်သို့ ထည့်ရန် လိုအပ်သည်-

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo' deb pkg.jenkins.io/debian-stable ဒွိ/' | sudo tee -a /etc/apt/sources.list.d/je

ပက်ကေ့ဂျ်သိုလှောင်မှုကို အပ်ဒိတ်လုပ်ပါ-

sudo apt update ကို

Jenkins ကို ထည့်သွင်းပါ-

sudo apt jenkins ကို install လုပ်ပါ။

၎င်းပြီးနောက်၊ Jenkins သည် မူရင်း port 8080 မှတစ်ဆင့် စနစ်တွင် ရနိုင်မည်ဖြစ်သည်။

လုပ်ဆောင်နိုင်စွမ်းကို စစ်ဆေးရန်၊ browser တွင် လိပ်စာကိုဖွင့်ရန် လိုအပ်သည်။ localhost:8080။ ထို့နောက် စနစ်သည် root အသုံးပြုသူအတွက် ကနဦး စကားဝှက်ကို ထည့်သွင်းရန် သင့်အား သတိပေးမည်ဖြစ်သည်။ ဤစကားဝှက်သည် ဖိုင် /var/lib/jenkins/secrets/initialAdminPassword တွင် တည်ရှိသည်။

ယခု အားလုံးအဆင်သင့်ဖြစ်ပါပြီ၊ သင်သည် CI/CD စီးဆင်းမှုများကို စတင်နိုင်ပါပြီ။ workbench ၏ ဂရပ်ဖစ် အင်တာဖေ့စ်သည် ဤကဲ့သို့ ဖြစ်သည်-

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

Jenkins အားသာချက်များ

  • Master/Slave ဗိသုကာမှ ပံ့ပိုးပေးသော အတိုင်းအတာ၊
  • REST XML/JSON API ရရှိနိုင်မှု၊
  • plugins များ၏ကျေးဇူးကြောင့် extensions အများအပြားကိုချိတ်ဆက်နိုင်မှု၊
  • တက်ကြွပြီး အဆက်မပြတ် တိုးတက်နေသော အသိုင်းအဝိုင်း။

cons:

  • ခွဲခြမ်းစိတ်ဖြာမှုပိတ်ဆို့ခြင်း မရှိပါ။
  • အလွန်အသုံးပြုရလွယ်ကူသော interface မဟုတ်ပါ။

TeamCity

JetBrains မှ စီးပွားဖြစ်ဖွံ့ဖြိုးတိုးတက်မှု။ ဆာဗာသည် ရိုးရှင်းသော စနစ်ထည့်သွင်းမှုနှင့် အလွန်ကောင်းမွန်သော အင်တာဖေ့စ်တို့ဖြင့် ကောင်းမွန်သည်။ ပုံသေဖွဲ့စည်းပုံတွင် လုပ်ဆောင်ချက်များ အများအပြားရှိပြီး ရရှိနိုင်သော ပလပ်အင်များ အရေအတွက်သည် အဆက်မပြတ် တိုးလာနေသည်။

Java Runtime Environment (JRE) ဗားရှင်း 8 လိုအပ်သည်။

ဆာဗာ ဟာ့ဒ်ဝဲ လိုအပ်ချက်များသည် အရေးမကြီးပါ။

  • RAM - 3,2 GB;
  • ပရိုဆက်ဆာ - dual-core, 3,2 GHz;
  • 1 Gb/s စွမ်းရည်ရှိသော ဆက်သွယ်ရေးလမ်းကြောင်း။

ဆာဗာသည် သင့်အား မြင့်မားသောစွမ်းဆောင်ရည်ကို ရရှိရန် ခွင့်ပြုသည်-

  • တည်ဆောက်မှုပုံစံ ၃၀၀ ပါသော ပရောဂျက် ၆၀၊
  • တည်ဆောက်မှုမှတ်တမ်းအတွက် 2 MB ခွဲဝေပေးခြင်း၊
  • 50 တည်ဆောက်အေးဂျင့်;
  • ဝဘ်ဗားရှင်းတွင် အသုံးပြုသူ 50 နှင့် IDE တွင် အသုံးပြုသူ 30 တို့နှင့် တွဲလုပ်နိုင်ခြင်း၊
  • ပြင်ပ VCS ချိတ်ဆက်မှု 100၊ များသောအားဖြင့် Perforce နှင့် အဖျက်အမှောင့်များ။ ပျမ်းမျှပြောင်းလဲမှုအချိန်သည် 120 စက္ကန့်ဖြစ်သည်။
  • တစ်နေ့လျှင် ပြုပြင်မွမ်းမံမှု ၁၅၀ ကျော်၊
  • ဆာဗာတစ်ခုပေါ်တွင်ဒေတာဘေ့စ်နှင့်အတူအလုပ်လုပ်;
  • JVM ဆာဗာ လုပ်ငန်းစဉ် ဆက်တင်များ- -Xmx1100m -XX:MaxPermSize=120m။

ကိုယ်စားလှယ်လိုအပ်ချက်များသည် လည်ပတ်နေသော စည်းဝေးပွဲများအပေါ် အခြေခံထားသည်။ ဆာဗာ၏ အဓိကတာဝန်မှာ ချိတ်ဆက်ထားသော အေးဂျင့်များအားလုံးကို စောင့်ကြည့်ရန်နှင့် လိုက်ဖက်ညီသော လိုအပ်ချက်များအပေါ် အခြေခံ၍ ဤအေးဂျင့်များသို့ တန်းစီထားသော စည်းဝေးပွဲများကို ဖြန့်ဝေရန်ဖြစ်ပြီး ရလဒ်များကို အစီရင်ခံခြင်း။ အေးဂျင့်များသည် ပလပ်ဖောင်းအမျိုးမျိုးနှင့် လည်ပတ်မှုစနစ်များအပြင် ကြိုတင်ပြင်ဆင်ထားသော ပတ်ဝန်းကျင်တစ်ခုဖြင့် လာပါသည်။

တည်ဆောက်မှုရလဒ်များဆိုင်ရာ အချက်အလက်အားလုံးကို ဒေတာဘေ့စ်တွင် သိမ်းဆည်းထားသည်။ အဓိကအားဖြင့် ၎င်းသည် မှတ်တမ်းနှင့် အခြားအလားတူဒေတာ၊ VCS အပြောင်းအလဲများ၊ အေးဂျင့်များ၊ တန်းစီစောင့်ဆိုင်းမှုများ၊ အသုံးပြုသူအကောင့်များနှင့် ခွင့်ပြုချက်များဖြစ်သည်။ ဒေတာဘေ့စ်တွင် တည်ဆောက်မှုမှတ်တမ်းများနှင့် ရှေးဟောင်းပစ္စည်းများသာ မပါဝင်ပါ။

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

Linux အတွက် ထည့်သွင်းခြင်း။

Tomcat ဆာဗာကွန်တိန်နာဖြင့် TeamCity ကို ကိုယ်တိုင်ထည့်သွင်းရန်၊ TeamCity မှတ်တမ်းကို အသုံးပြုသင့်သည်- TeamCity .tar.gz။ ဒေါင်းလုဒ်လုပ်ပါ။ ဤနေရာမှ သင်ရနိုင်သည်။.

tar -xfz TeamCity.tar.gz

/bin/runAll။ sh [စတင်|ရပ်တန့်]

သင်စစချင်းတွင်၊ စုစည်းမှုဒေတာကို သိမ်းဆည်းမည့် ဒေတာဘေ့စ်အမျိုးအစားကို သင်ရွေးချယ်ရန် လိုအပ်သည်။

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

ပုံသေဖွဲ့စည်းပုံသည် ဖွင့်သည်။ localhost:8111/ တူညီသော PC ပေါ်တွင် မှတ်ပုံတင်ထားသော တည်ဆောက်အေးဂျင့်တစ်ခုနှင့်။

TeamCity ၏ အားသာချက်များ

  • ရိုးရှင်းသောတပ်ဆင်မှု;
  • user-ဖော်ရွေ interface ကို;
  • Built-in လုပ်ဆောင်ချက်အများအပြား;
  • ပံ့ပိုးမှုဝန်ဆောင်မှု;
  • RESTful API ရှိပါသည်။
  • ကောင်းမွန်သောစာရွက်စာတမ်းများ;
  • လုံခြုံရေးကောင်းတယ်။

cons:

  • ကန့်သတ်ပေါင်းစည်းမှု၊
  • ၎င်းသည် အခပေးကိရိယာတစ်ခုဖြစ်သည်။
  • သေးငယ်သောအသိုက်အဝန်းတစ်ခု (သို့သော်ကြီးထွားလာသည်)။

GoCD

ထည့်သွင်းခြင်းနှင့် လည်ပတ်ခြင်းအတွက် Java Runtime Environment (JRE) ဗားရှင်း 8 လိုအပ်သည့် ပွင့်လင်းအရင်းအမြစ်ပရောဂျက်တစ်ခု။

System ကိုလိုအပ်ချက်များကို:

  • RAM - 1 GB အနိမ့်ဆုံး၊ ပိုကောင်းသည်။
  • ပရိုဆက်ဆာ - dual-core၊ core ကြိမ်နှုန်း 2 GHz;
  • hard drive - အနည်းဆုံး နေရာလွတ် 1 GB။

အေးဂျင့်-

  • RAM - အနည်းဆုံး 128 MB၊ ပိုကောင်းတယ်။
  • ပရိုဆက်ဆာ - အနည်းဆုံး 2 GHz ။

ဆာဗာသည် အေးဂျင့်များ၏ လုပ်ဆောင်ချက်ကို သေချာစေပြီး အသုံးပြုသူအတွက် အဆင်ပြေသော မျက်နှာပြင်ကို ပံ့ပိုးပေးသည်-

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

အဆင့်များ/အလုပ်များ/အလုပ်များ-

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

Linux အတွက် ထည့်သွင်းခြင်း။

ပဲ့တင်သံ "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

ဆံပင်ကောက်ကောက် download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
add-apt-repository ppa:openjdk-r/ppa

apt-get update ကို

apt-get install -y openjdk-8-jre

apt-get go-server ကို install လုပ်ပါ။

apt-get install go-agent

/etc/init.d/go-server [start|stop|status|restart]

/etc/init.d/go-agent [start|stop|status|restart]

ပုံမှန်အားဖြင့် GoCd သည် ဖွင့်သည်။ localhost: 8153 ။

GoCd ၏အားသာချက်များ

  • ပွင့်လင်းအရင်းအမြစ်;
  • ရိုးရှင်းသောတပ်ဆင်မှုနှင့်ဖွဲ့စည်းမှု;
  • ကောင်းမွန်သောစာရွက်စာတမ်းများ;

  • ကောင်းမွန်သောအသုံးပြုသူအင်တာဖေ့စ်-

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

  • မြင်ကွင်းတစ်ခုတည်းတွင် GoCD ဖြန့်ကျက်မှုလမ်းကြောင်းကို အဆင့်ဆင့်ပြသနိုင်သည်-

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

  • ပိုက်လိုင်းတည်ဆောက်ပုံ၏ အကောင်းဆုံးပြသမှု။

စဉ်ဆက်မပြတ် ဖြန့်ကျက်စုစည်းခြင်း (Continuous Deployment) အတွက် နာမည်ကြီး ကိရိယာ ၃ ခု

  • GoCD သည် Docker၊ AWS အပါအဝင် ရေပန်းအစားဆုံး cloud ပတ်ဝန်းကျင်များတွင် CD အလုပ်အသွားအလာကို အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်သည်။
  • အဆိုပါကိရိယာသည် ကတိကဝတ်မှ ဖြန့်ကျက်ခြင်းသို့ အချိန်နှင့်တပြေးညီ ပြောင်းလဲမှုတိုင်းကို ခြေရာခံသည့် ပိုက်လိုင်းရှိ ပြဿနာများကို ပြုပြင်နိုင်စေသည်။

cons:

  • အနည်းဆုံး အေးဂျင့်တစ်ဦး လိုအပ်ပါသည်။
  • ပြီးသွားသော အလုပ်များအားလုံးကို ပြသရန် ကွန်ဆိုးလ် မရှိပါ။
  • command တစ်ခုစီကို execute လုပ်ရန်၊ pipeline configuration အတွက် အလုပ်တစ်ခု ဖန်တီးရန် လိုအပ်ပါသည်။
  • ပလပ်အင်ကို ထည့်သွင်းရန် .jar ဖိုင်ကို ရွှေ့ရန် လိုအပ်သည်။ /plugins/ပြင်ပနှင့် ဆာဗာကို ပြန်လည်စတင်ပါ။
  • အတော်လေးသေးငယ်တဲ့အသိုင်းအဝိုင်း။

နိဂုံးအဖြစ်

ဤအရာများသည် ကိရိယာသုံးမျိုးသာဖြစ်ပြီး၊ အမှန်တကယ်တွင် နောက်ထပ်များစွာရှိသေးသည်။ ရွေးချယ်ရန်ခက်ခဲသောကြောင့်၊ သင်သည်နောက်ထပ်ရှုထောင့်များကိုသေချာစွာအာရုံစိုက်ရန်လိုအပ်သည်။

tool ၏ open source code သည် ၎င်းကိုနားလည်နိုင်စေသည့်အပြင် အင်္ဂါရပ်အသစ်များကို ပိုမိုမြန်ဆန်စွာထည့်သွင်းနိုင်သည်။ ဒါပေမယ့် တစ်ခုခုအဆင်မပြေရင် သင်ကိုယ်တိုင်နဲ့ အသိုင်းအဝိုင်းရဲ့အကူအညီကိုပဲ အားကိုးရပါမယ်။ အခကြေးငွေပေးသော ကိရိယာများသည် တစ်ခါတစ်ရံတွင် ဝေဖန်ပိုင်းခြားနိုင်သည့် ပံ့ပိုးမှုပေးသည်။

လုံခြုံရေးသည် သင့်အတွက် ထိပ်တန်းဦးစားပေးဖြစ်ပါက၊ ၎င်းသည် ဒေသခံကိရိယာတစ်ခုဖြင့် လုပ်ဆောင်ရကျိုးနပ်သည်။ မဟုတ်ပါက SaaS ဖြေရှင်းချက်ကို ရွေးချယ်ခြင်းသည် ကောင်းသောရွေးချယ်မှုဖြစ်သည်။

နောက်ဆုံးအနေနှင့်၊ အမှန်တကယ်ထိရောက်သော စဉ်ဆက်မပြတ် ဖြန့်ကျက်မှုလုပ်ငန်းစဉ်ကို သေချာစေရန်အတွက်၊ ရရှိနိုင်သောကိရိယာများ၏ အကွာအဝေးကို ကျဉ်းမြောင်းသွားစေမည့် သီးခြားသတ်မှတ်ချက်များကို သင်ဖန်တီးရန် လိုအပ်ပါသည်။

Skillbox မှ အကြံပြုထားသည်-

source: www.habr.com

မှတ်ချက် Add