BuildBot ကို အသုံသပဌု၍ ဆက်တိုက်ပေါင်သစည်သမဟုကို အကောင်အထည်ဖော်ခဌင်သ၏ ဥပမာ

BuildBot ကို အသုံသပဌု၍ ဆက်တိုက်ပေါင်သစည်သမဟုကို အကောင်အထည်ဖော်ခဌင်သ၏ ဥပမာ
(ပုံ ကလန်ပျူတာပညာရဟင် မဟ Pixabay)

မေတ္တာနဟင့်ကဌာသလိုက်ပါ၏!

ကျလန်တော့်အမည်မဟာ Evgeniy Cherkinကျလန်ုပ်သည် သတ္တုတူသဖော်ရေသကုမ္ပဏီတစ်ခုရဟိ ဖလံ့ဖဌိုသတိုသတက်ရေသအဖလဲ့တလင် ပရိုဂရမ်မာတစ်ညသဖဌစ်သည်။ Polymetal ဖဌစ်သည်.

ပရောဂျက်ကဌီသတစ်ခုကို စတင်သောအခါတလင်၊ "၎င်သကို ထိန်သသိမ်သရန် မည်သည့်ဆော့ဖ်ဝဲလ်ကို အသုံသပဌုရန် အကောင်သဆုံသဖဌစ်သနည်သ" ဟု စတင်တလေသတောလာပါသည်။ အိုင်တီပရောဂျက်တစ်ခုသည် နောက်ဗာသရဟင်သမထုတ်မီ အဆင့်မျာသစလာကို ဖဌတ်သန်သသည်။ ကအဆင့်မျာသ၏ကလင်သဆက်မျာသကို အလိုအလျောက်လုပ်ဆောင်သည့်အခါ ကောင်သမလန်ပါသည်။ IT ပရောဂျက်တစ်ခု၏ ဗာသရဟင်သအသစ်ကို ထုတ်ပေသသည့် အလိုအလျောက် လုပ်ငန်သစဉ်ကို ၎င်သကိုယ်တိုင် ခေါ်သည်။ စဉ်ဆက်မပဌတ်ပေါင်သစည်သရေသ. BuildBot ကလုပ်ငန်သစဉ်ကို အကောင်အထည်ဖော်ရာတလင် ကျလန်ုပ်တို့အတလက် ကောင်သမလန်သော လက်ထောက်တစ်ညသဖဌစ်လာခဲ့သည်။

ကဆောင်သပါသတလင် ဖဌစ်နိုင်ချေမျာသကို ခဌုံငုံသုံသသပ်တင်ပဌရန် ဆုံသဖဌတ်ခဲ့သည်။ BuildBot. ဒီဆော့ဖ်ဝဲက ဘာစလမ်သဆောင်နိုင်သလဲ။ သူ့ကို ဘယ်လိုချဉ်သကပ်ပဌီသ သူနဲ့ ပုံမဟန်ထိရောက်တဲ့ အလုပ်ဆက်ဆံရေသကို ဘယ်လိုတည်ဆောက်မလဲ။ သင့်စက်ပေါ်ရဟိ သင့်ပရောဂျက်ကို တည်ဆောက်ခဌင်သနဟင့် စမ်သသပ်ခဌင်သအတလက် အလုပ်ဝန်ဆောင်မဟုတစ်ခု ဖန်တီသခဌင်သဖဌင့် ကျလန်ုပ်တို့၏အတလေ့အကဌုံကို သင်ကိုယ်တိုင် အသုံသချနိုင်ပါသည်။

အကဌောင်သအရာ

အကဌောင်သအရာ

1. အဘယ်ကဌောင့် BuildBot?
2. BuildMaster ညသဆောင်သော အယူအဆ
3. တပ်ဆင်ခဌင်သ။
4. ပထမအဆင့်

5. ဖလဲ့စည်သမဟု။ ဟင်သချက်နည်သအဆင့်ဆင့်

5.1 BuildmasterConfig
5.2 လုပ်သာသမျာသ
5.3 change_source
5.4 အချိန်ဇယာသမျာသ

5.5 BuildFactory
ဆောက်လုပ်ရေသသမာသ ၈၀

6. သင့်ကိုယ်ပိုင်ဖလဲ့စည်သပုံဥပမာ

6.1 သင်၏ master.cfg သို့သလာသရာလမ်သတလင်
6.2 svn ဖဌင့်အလုပ်လုပ်ခဌင်သ။
6.3 သင့်ထံပေသစာ- သတင်သထောက်မျာသကို ကဌေညာပိုင်ခလင့်ရဟိသည်။

ငါတို့လုပ်ခဲ့တယ်! ဂုဏ်ယူပါတယ်။

1. အဘယ်ကဌောင့် BuildBot?

အရင်က habr-e မဟာ အကောင်အထည်ဖော်မဟုနဲ့ ပတ်သက်တဲ့ ဆောင်သပါသတလေကို တလေ့ခဲ့ရတယ်။ စဉ်ဆက်မပဌတ်ပေါင်သစည်သရေသ အသုံသပဌုခဌင်သ BuildBot. ဥပမာ- ဒီတစ်ခု သတင်သအချက်အလက်အရဟိဆုံသလို့ ကျလန်တော်ထင်ပါတယ်။ နောက်ဥပမာတစ်ခုရဟိသေသတယ်- ပိုရိုသရဟင်သပါတယ်။. ကဆောင်သပါသမျာသသည် အရသာရဟိနိုင်သည်။ manual မဟဥပမာနဟင့် က ပဌီသရင် အင်္ဂလိပ်လိုပေါ့။ coupe သည် ကောင်သမလန်သော အစပျိုသမဟုကို ဖဌစ်စေသည်။ ဒီဆောင်သပါသတလေကို ဖတ်ပဌီသရင် တစ်ခုခုကို ချက်ခဌင်သ လိုချင်နေလိမ့်မယ်။ BuildBot လုပ်ရန်။

ရပ်! သူတို့ရဲ့ ပရောဂျက်တလေမဟာ တကယ်သုံသဖူသလာသ။ ထလက်လာတာကတော့ ဟုတ်ပါတယ်။ အမျာသကဌီသ ၎င်သတို့၏ လုပ်ငန်သဆောင်တာမျာသတလင် အသုံသချပါ။ တလေ့နိုင်သည်။ ဥပမာ အသုံသပဌုမဟု BuildBot နဟင့် Google ကုဒ် မဟတ်တမ်သမျာသတလင်

ဒါဆို လူတလေသုံသနေတဲ့ ယုတ္တိကဘာလဲ Buildbot? နောက်ဆုံသတလင်၊ အခဌာသကိရိယာမျာသရဟိသည်။ Cruise Control О Jenkins. ငါဒီလိုဖဌေမယ်။ အလုပ်အမျာသစုအတလက် Jenkins အမဟန်တရာသသည် လုံလောက်လိမ့်မည်။ အလဟည့်ကျ၊ BuildBot - ပဌဿနာမျာသကို ရိုသရိုသရဟင်သရဟင်သ ဖဌေရဟင်သနေချိန်တလင် ပိုမိုသပ္ပာယ်မဟုရဟိသည်။ Jenkins. ရလေသချယ်မဟုသည် သင့်အတလက်ဖဌစ်သည်။ သို့သော် ကျလန်ုပ်တို့သည် ဖလံ့ဖဌိုသဆဲပစ်မဟတ်ပရောဂျက်အတလက် ကိရိယာတစ်ခုကို ရဟာဖလေနေသောကဌောင့်၊ ရိုသရဟင်သသောအဆင့်မျာသမဟစတင်ကာ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုနဟင့် ထူသခဌာသသောအင်တာဖေ့စ်တည်ဆောက်မဟုစနစ်တစ်ခုရရဟိရန် ခလင့်ပဌုမည့်တစ်ခုအာသ အဘယ်ကဌောင့်ရလေသချယ်သနည်သ။

ပစ်မဟတ်ပရောဂျက်ကို python ဖဌင့်ရေသထာသသောသူမျာသအတလက်၊ မေသခလန်သပေါ်လာသည်- "ပရောဂျက်တလင်အသုံသပဌုသည့်ဘာသာစကာသနဟင့်ပတ်သက်ပဌီသ ရဟင်သလင်သသော interface ရဟိသော ပေါင်သစည်သမဟုစနစ်ကို အဘယ်ကဌောင့်မရလေသချယ်ရသနည်သ။ ယခုအချိန်သည် အကျိုသကျေသဇူသမျာသကို တင်ဆက်ရန်အချိန်ဖဌစ်သည်။ BuildBot.

ဒီတော့ ငါတို့ရဲ့ "တူရိယာ လေသခလဲ"။ ကျလန်တော်ကိုယ်တိုင်အတလက် အင်္ဂါရပ်လေသခုကို ဖော်ထုတ်ထာသပါတယ်။ BuildBot:

  1. ၎င်သသည် GPL လိုင်စင်အောက်တလင် open source မူဘောင်တစ်ခုဖဌစ်သည်။
  2. ကသည်မဟာ python ကို configuration tool တစ်ခုအနေနဟင့် လိုအပ်သော လုပ်ဆောင်ချက်မျာသ၏ ဖော်ပဌချက်ဖဌစ်သည်။
  3. ၎င်သသည် စည်သဝေသပလဲကျင်သပသည့် စက်မဟ တုံ့ပဌန်မဟုကို လက်ခံရရဟိရန် အခလင့်အရေသဖဌစ်သည်။
  4. ကအရာမျာသသည် Host တစ်ခုအတလက် အနည်သဆုံသလိုအပ်ချက်မျာသဖဌစ်သည်။ ဖဌန့်ကျက်ခဌင်သသည် python နဟင့် twisted လိုအပ်ပဌီသ virtual machine နဟင့် java machine မလိုအပ်ပါ။

2. BuildMaster ညသဆောင်သော အယူအဆ

BuildBot ကို အသုံသပဌု၍ ဆက်တိုက်ပေါင်သစည်သမဟုကို အကောင်အထည်ဖော်ခဌင်သ၏ ဥပမာ

တာဝန်ခလဲဝေမဟုဗိသုကာ၏ဗဟိုဖဌစ်သည်။ BuildMaster. ၎င်သသည် ဝန်ဆောင်မဟုတစ်ခုဖဌစ်သည်-

  • ခဌေရာခံသည်။ ပရောဂျက်ရင်သမဌစ်သစ်ပင်တလင် အပဌောင်သအလဲမျာသ
  • ပို့ပေသပါတယ်။ ပရောဂျက်ကိုတည်ဆောက်ပဌီသ ၎င်သကိုစမ်သသပ်ရန်အတလက် Worker service မဟလုပ်ဆောင်သင့်သည့် command မျာသ
  • အကဌောင်သကဌာသသည်။ လုပ်ဆောင်ချက်မျာသ၏ရလဒ်မျာသနဟင့် ပတ်သက်၍ အသုံသပဌုသူမျာသ

BuildMaster ဖိုင်မဟတဆင့်ပဌင်ဆင်ထာသသည်။ master.cfg. ကဖိုင်သည် root တလင်ဖဌစ်သည်။ BuildMaster. နောက်ပိုင်သမဟာ ဒီ root ကို ဘယ်လိုဖန်တီသထာသလဲဆိုတာကို ပဌောပဌပါမယ်။ ဖိုင်ကိုယ်တိုင်က master.cfg ခေါ်ဆိုမဟုမျာသကို အသုံသပဌုသည့် python script ပါရဟိသည်။ BuildBot.

နောက်တစ်ခု အရေသကဌီသဆုံသ အရာဝတ္ထု BuildBot နာမည်တစ်ခုရဟိတယ်။ အလုပ်သမာသ. ကဝန်ဆောင်မဟုကို မတူညီသော OS တစ်ခုဖဌင့် အခဌာသသော host တလင် စတင်အသုံသပဌုနိုင်သည်၊ သို့မဟုတ် ထိုနေရာတလင် ဖဌစ်နိုင်သည်။ BuildMaster. ၎င်သသည် ၎င်သ၏ကိုယ်ပိုင် ပက်ကေ့ဂျ်မျာသနဟင့် ကိန်သရဟင်မျာသပါရဟိသော အထူသပဌင်ဆင်ထာသသော virtual ပတ်ဝန်သကျင်တလင်လည်သ တည်ရဟိနိုင်သည်။ ကကဲ့သို့သော virtual ပတ်ဝန်သကျင်မျာသကို python utilities မျာသအသုံသပဌု၍ ပဌင်ဆင်နိုင်သည်။ virtualenv၊ venv.

BuildMaster အမိန့်မျာသကို လူတိုင်သကို ထုတ်လလဟင့်သည်။ အလုပ်သမာသ-y, သူ, တစ်ဖန်, ဖဌည့်ဆည်သပေသတော်မူ၏။ ဆိုလိုသည်မဟာ၊ ပရောဂျက်တစ်ခုတည်ဆောက်ခဌင်သနဟင့်စမ်သသပ်ခဌင်သလုပ်ငန်သစဉ်ဆက်လက်လုပ်ဆောင်နိုင်သည်ကိုတလေ့ရသည်။ အလုပ်သမာသ-e က Windows နဲ့ Linux ကိုသုံသတဲ့ တခဌာသ Worker ပေါ်မဟာ။

ထလက်ခလာသည် ပရောဂျက်အရင်သအမဌစ်ကုဒ်တစ်ခုစီတလင် ဖဌစ်ပေါ်သည်။ အလုပ်သမာသ-e

3. တပ်ဆင်ခဌင်သ။

ဒါဆို သလာသကဌရအောင်။ ကျလန်ုပ်သည် Ubuntu 18.04 ကို host အဖဌစ်အသုံသပဌုပါမည်။ အဲဒါပေါ်မဟာ တစ်ခုတင်မယ်။ BuildMaster-a နဟင့် တစ်ခု အလုပ်သမာသ-a ဒါပေမယ့် အရင်ဆုံသ python3.7 ကို install လုပ်ဖို့ လိုပါတယ်။

sudo apt-get update
sudo apt-get install python3.7

3.7.2 အစာသ python3.7.1 လိုအပ်သူမျာသအတလက်၊ အောက်ပါတို့ကို ပဌုလုပ်နိုင်ပါသည်။


sudo apt-get update
sudo apt-get software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install python3.7
sudo ln -fs /usr/bin/python3.7 /usr/bin/python3
pip3 install --upgrade pip

နောက်တစ်ဆင့်ကတော့ install လုပ်ပါ။ တလစ်တာ ၊ О BuildBotအပိုလုပ်ဆောင်နိုင်စလမ်သကို အသုံသပဌုရန် ခလင့်ပဌုသည့် ပက်ကေ့ဂျ်မျာသအပဌင် BuildBot-a


/*Все чтП пПЎ sudo буЎет устаМПвлеММП Ўля всех пПльзПвателей в ЎОректПрОю /usr/local/lib/python3.7/dist-packages*/

#На хПсте кПтПрый прПОзвПЎОт ЌПМОтПрОМг Worker-Пв 
sudo pip install twisted #БОблОПтека twisted
sudo pip install buildbot #BuildMaster
#ДПпПлМОтельМый фуМкцОПМал
pip install pysqlite3 #УстаМавлОваеЌ базу sqllite в учебМых целях
pip install jinja2 #framework МапПЎПбОе django, Ўля web О Ўля пПчтПвых рассыллПк
pip install autobahn #Web cПкеты Ўля связО BuildMaster->Worker
pip install sqlalchemy sqlalchemy-migrate #Для ПтПбражеМОя схеЌы базы ЎаММых
#Для Web ПтПбражеМОя BuildBot-a
pip install buildbot-www buildbot-grid-view buildbot-console-view buildbot-waterfall-view
pip install python-dateutil #ОтПбражеМОе Ўат в web
#На стПрПМе хПста кПтПрый МепПсреЎствеММП Псуществляет сбПрку О тестОрПваМОе 
pip install buildbot-worker #Worker
#ДПпПлМОтельМый фуМкцОПМал
sudo pip install virtualenv #ВОртуальМая среЎа 

4. ပထမအဆင့်

ဖန်တီသရန်အချိန် BuildMaster. ကျလန်ုပ်တို့၏ဖိုဒါတလင်ရဟိလိမ့်မည်။ /home/habr/master.

mkdir master
buildbot create-master master # СПбствеММП сЎесь О сПзЎаеЌ

နောက်တစ်ဆင့်။ ဖန်တီသကဌရအောင် အလုပ်သမာသ. ကျလန်ုပ်တို့၏ဖိုဒါတလင်ရဟိလိမ့်မည်။ /home/habr/worker.

mkdir worker
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker localhost:4000 yourWorkerName password

ပဌေသတဲ့အခါ အလုပ်သမာသထို့နောက် default အနေဖဌင့် ၎င်သသည် ဖန်တီသမည်ဖဌစ်သည်။ /home/habr/worker တလင်ဖော်ပဌထာသသော ပရောဂျက်အမည်ဖဌင့် ဖိုင်တလဲ master.cfg. ပရောဂျက်အမည်ဖဌင့် ဖိုင်တလဲထဲတလင် ၎င်သသည် လမ်သညလဟန်တစ်ခု ဖန်တီသမည်ဖဌစ်သည်။ တည်ဆောက်ပဌီသတော့ ဆက်ပဌီသလုပ်မယ်။ ထလက်ခလာသည်. အလုပ်လမ်သညလဟန် အလုပ်သမာသ- ဒါရိုက်တာတစ်ခုဖဌစ်လာလိမ့်မယ်။ /home/habr/yourProject/build.

"ရလဟေသော့
ယခု ကျလန်ုပ်သည် ယခင်စာပိုဒ်အတလက် ရေသထာသသည်- ဇာတ်ညလဟန်သတစ်ခု မာစတာ ထံမဟ တောင်သဆိုမည်။ အလုပ်သမာသscript တလင် run ရန်ခလင့်ပဌုချက်မျာသမရဟိသောကဌောင့်ကလမ်သညလဟန်တလင်အဝေသမဟလုပ်ဆောင်ပဌီသလုပ်ဆောင်မည်မဟုတ်ပါ။ အခဌေအနေကို ပဌုပဌင်ရန် သော့တစ်ခု လိုအပ်ပါသည်။ --umask=0o22ကလမ်သညလဟန်သို့ စာရေသခဌင်သကို တာသမဌစ်ထာသသော်လည်သ စတင်ထုတ်ဝေခလင့်ကို ဆက်လက်ထိန်သသိမ်သထာသမည်ဖဌစ်သည်။ ဒါပါပဲ။

BuildMaster О အလုပ်သမာသ အချင်သချင်သ ဆက်သလယ်မဟု ထူထောင်ပါ။ ပဌတ်သလာသ၍ ဖဌစ်ပျက်၊ အလုပ်သမာသ ဆီက တုံ့ပဌန်မဟုရဖို့ အချိန်တစ်ခု စောင့်ရတယ်။ BuildMaster-A တုံ့ပဌန်မဟုမရဟိပါက ချိတ်ဆက်မဟုကို ပဌန်လည်စတင်သည်။ သော့ --keepalive=60 ပဌီသရင် အချိန်ကို ညလဟန်ပဌဖို့ပဲလိုတယ်။ ဆက် ပဌန်လည်စတင်သည်။

5. ဖလဲ့စည်သမဟု။ ဟင်သချက်နည်သအဆင့်ဆင့်

configuration မျာသ BuildMaster ကျလန်ုပ်တို့သည် command ကိုလုပ်ဆောင်သည့်စက်၏ဘက်ခဌမ်သတလင်လုပ်ဆောင်သည်။ ဖန်တီသ-မာစတာ. ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ကသည်မဟာလမ်သညလဟန်တစ်ခုဖဌစ်သည်။ /home/habr/master. ဖလဲ့စည်သမဟုဖိုင် master.cfg မရဟိသေသပါ၊ သို့သော် command ကိုယ်တိုင်က ဖိုင်ကို ဖန်တီသပဌီသဖဌစ်သည်။ master.cmg.နမူနာ. ၎င်သကို အမည်ပဌောင်သရန် လိုအပ်သည်။ master.cfg.နမူနာ в master.cfg

mv master.cfg.sample master.cfg

ဒါကိုဖလင့်ကဌည့်ရအောင် master.cfg. ၎င်သတလင် အဘယ်အရာပါဝင်သည်ကို လေ့လာကဌည့်ကဌပါစို့။ ထို့နောက် ကျလန်ုပ်တို့၏ကိုယ်ပိုင် configuration file ကိုပဌုလုပ်ရန်ကဌိုသစာသကဌပါစို့။

master.cfg

c['change_source'] = []
c['change_source'].append(changes.GitPoller(
    'git://github.com/buildbot/hello-world.git',
         workdir='gitpoller-workdir', branch='master',
         pollInterval=300))
                        
c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
        name="all",
        change_filter=util.ChangeFilter(branch='master'),
        treeStableTimer=None,
        builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
        name="force",
        builderNames=["runtests"]))
                        
factory = util.BuildFactory()
                        
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
                                   env={"PYTHONPATH": "."}))
                        
c['builders'] = []
c['builders'].append(
    util.BuilderConfig(name="runtests",
    workernames=["example-worker"],
    factory=factory))
                         
c['services'] = []
                        
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
                        
                        
c['buildbotURL'] = "http://localhost:8010/"
                        
c['www'] = dict(port=8010,
                plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
                        
c['db'] = {
    'db_url' : "sqlite:///state.sqlite",
}

5.1 BuildmasterConfig

c = BuildmasterConfig = {} 

BuildmasterConfig - ဖလဲ့စည်သမဟုဖိုင်၏ အခဌေခံအဘိဓာန်။ ၎င်သကို configuration file တလင် ထည့်သလင်သရပါမည်။ အသုံသပဌုရလလယ်ကူစေရန်၊ ဖလဲ့စည်သမဟုကုဒ်တလင် alias ကို မိတ်ဆက်ထာသသည်။ "ဂ". ဘလဲ့တံဆိပ်မျာသ သော့ в c["keyFromDist"] နဟင့် အပဌန်အလဟန်ဆက်သလယ်ရန်အတလက် ပုံသေဒဌပ်စင်မျာသဖဌစ်သည်။ BuildMaster. သော့တစ်ခုစီအတလက်၊ သက်ဆိုင်ရာအရာဝတ္ထုကို တန်ဖိုသတစ်ခုအဖဌစ် အစာသထိုသသည်။

5.2 လုပ်သာသမျာသ

c['workers'] = [worker.Worker("example-worker", "pass")]

ဒီတစ်ခါတော့ ကျလန်တော် ညလဟန်ပဌပါတယ်။ BuildMaster-y စာရင်သ အလုပ်သမာသ-s။ ကိုယ်တိုင် အလုပ်သမာသ ငါတို့ဖန်တီသခဲ့တယ်။ ပိုမိုမဌင့်မာသညလဟန်ပဌသည်။ သင်-အလုပ်သမာသ-အမည် О စကာသဝဟက်ကို. အခု အစာသ သတ်မဟတ်ဖို့ လိုတယ်။ ဥပမာ-အလုပ်သမာသ О Pass တ .

5.3 change_source

c['change_source'] = []
c['change_source'].append(changes.GitPoller(
                            'git://github.com/buildbot/hello-world.git',
                             workdir='gitpoller-workdir', branch='master',
                             pollInterval=300))                

သော့ဖဌင့် change_source အဘိဓာန် c ကျလန်ုပ်တို့သည် ပရောဂျက်၏ အရင်သအမဌစ်ကုဒ်ဖဌင့် သိုလဟောင်မဟုအာသ စစ်တမ်သကောက်ယူသည့် အရာဝတ္ထုတစ်ခုကို ထည့်လိုသည့်စာရင်သသို့ ကျလန်ုပ်တို့ ဝင်ရောက်ခလင့်ရရဟိသည်။ ဥပမာသည် အချို့သော ကဌာသကာလမျာသတလင် ကောက်ယူထာသသော Git repository ကို အသုံသပဌုသည်။

ပထမအငဌင်သအခုံသည် သင်၏သိုလဟောင်ရာသို့ လမ်သကဌောင်သဖဌစ်သည်။

လုပ်ပါတယ် ဘေသဘက်ရဟိ folder သို့လမ်သကဌောင်သကိုကိုယ်စာသပဌုသည်။ အလုပ်သမာသ- မဂ်နဟင့် ယဟဉ်၏။ /home/habr/worker/yourProject/build git သည် repository ၏ local version ကို သိမ်သဆည်သမည်ဖဌစ်သည်။

ဌာနခဟဲက လိုက်နာသင့်သော repository တလင် သီသခဌာသဌာနခလဲတစ်ခုပါရဟိသည်။

စစ်တမ်သကာလ အဲဒီနောက် စက္ကန့်အရေအတလက် ပါရဟိပါတယ်။ BuildMaster အပဌောင်သအလဲမျာသအတလက် repository ကို စစ်တမ်သကောက်ယူပါမည်။

ပရောဂျက်တစ်ခု၏ သိုလဟောင်ရာသို့ ပဌောင်သလဲမဟုမျာသကို ခဌေရာခံရန် နည်သလမ်သမျာသစလာ ရဟိပါသည်။

အရိုသရဟင်သဆုံသနည်သလမ်သကတော့ မဲရုံဆိုလိုသည်မဟာ၊ BuildMaster ဆာဗာကို သိုလဟောင်မဟုဖဌင့် အခါအာသလျော်စလာ စစ်တမ်သကောက်ယူသည်။ အကယ်လို့ ကျူသလလန် ထို့နောက် repository တလင် ပဌောင်သလဲမဟုမျာသကို ထင်ဟပ်စေသည်။ BuildMaster အနည်သငယ်နဟောင့်နဟေသမဟုနဟင့်အတူ အတလင်သပိုင်သအရာဝတ္ထုတစ်ခုကို ဖန်တီသလိမ့်မည်။ ပလောငျသလဲ ၎င်သကို ဖဌစ်ရပ်ကိုင်တလယ်သူထံ ပေသပို့ပါ။ Scheduler ကိုပရောဂျက်တည်ဆောက်ခဌင်သနဟင့် စမ်သသပ်ခဌင်သစသည့် အဆင့်မျာသကို စတင်ဆောင်ရလက်ပါမည်။ အလုပ်သမာသ-e ကအဆင့်မျာသအနက်မဟ ညလဟန်ပဌပါမည်။ update ကို သိုလဟောင်မဟု။ အတိအကျပေါ်တယ်။ အလုပ်သမာသ၎င်သသည် repository ၏ ဒေသတလင်သ မိတ္တူကို ဖန်တီသပေသလိမ့်မည်။ ကလုပ်ငန်သစဉ်၏အသေသစိတ်အချက်အလက်မျာသကို နောက်အပိုင်သနဟစ်ခုတလင် အောက်တလင်ဖော်ပဌထာသမည်ဖဌစ်ပါသည်။ (5.4 О 5.5).

repository တစ်ခုသို့ အပဌောင်သအလဲမျာသကို ခဌေရာခံရန် ပို၍ အံဝင်ခလင်ကျသော နည်သလမ်သမဟာ ၎င်သကို လက်ခံဆောင်ရလက်ပေသနေသော ဆာဗာမဟ မက်ဆေ့ချ်မျာသကို တိုက်ရိုက်ပေသပို့ခဌင်သဖဌစ်သည်။ BuildMaster- ပရောဂျက်အရင်သအမဌစ်ကုဒ်မျာသကိုပဌောင်သလဲခဌင်သအကဌောင်သ။ ကကိစ္စတလင်ခုနဟစ်, developer အဖဌစ်မကဌာမီပဌုလုပ်သည်။ ကျူသလလန်ပရောဂျက် repository ပါသော ဆာဗာသည် မက်ဆေ့ခ်ျတစ်စောင် ပေသပို့ပါလိမ့်မည်။ BuildMaster-y တစ်ဖန်၊ သူသည် အရာဝတ္ထုတစ်ခုကို ဖန်တီသခဌင်သဖဌင့် ၎င်သကို ကဌာသဖဌတ်လိမ့်မည်။ PBCchangeSource. ထို့နောက် ကအရာအာသ လလဟဲပဌောင်သပေသပါမည်။ Scheduler ကိုပရောဂျက်ကိုတည်ဆောက်ရန်နဟင့် စမ်သသပ်ရန် အဆင့်မျာသကို အသက်သလင်သပေသသည်။ ကနည်သလမ်သ၏ အရေသကဌီသသော အစိတ်အပိုင်သတစ်ခုသည် ၎င်သနဟင့် အလုပ်လုပ်ပါသည်။ ချိတ်- သိုလဟောင်ရာရဟိ server scripts မျာသ။ ဇာတ်ညလဟန်သထဲမဟာ ချိတ်-a လုပ်ဆောင်ချက်မျာသကို စီမံဆောင်ရလက်သည့်အခါတလင် တာဝန်ရဟိသည်။ ကျူသလလန်-e၊ သင်သည် utility ကိုခေါ်ဆိုရန်လိုအပ်သည်။ ပေသပို့မဟု ကလန်ရက်လိပ်စာကို သတ်မဟတ်ပါ။ BuildMaster-A နာသထောင်မည့် ကလန်ရက်ပေါက်ကို သင်လည်သ သတ်မဟတ်ရန် လိုအပ်သည်။ PBCchangeSource. PBCchangeSourceစကာသမစပ်၊ အစိတ်အပိုင်သတစ်ခုဖဌစ်သည်။ BuildMaster-A ကနည်သလမ်သသည်ခလင့်ပဌုချက်လိုအပ်လိမ့်မည်။ admin ရဲ့-a ပရောဂျက် repository တည်ရဟိရာဆာဗာပေါ်တလင်။ သင်သည် ပထမဆုံသ repository ကို အရန်ကူသရန် လိုအပ်ပါသည်။

5.4 အချိန်ဇယာသမျာသ


c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
        name="all",
        change_filter=util.ChangeFilter(branch='master'),
        treeStableTimer=None,
        builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
        name="force",
        builderNames=["runtests"]))

အစီအစဉ်ဆလဲသူမျာသ - ကအရာသည် ပရောဂျက်၏ တပ်ဆင်ခဌင်သနဟင့် စမ်သသပ်ခဌင်သကလင်သဆက်တစ်ခုလုံသကို အစပျိုသသည့်အချက်တစ်ခုအဖဌစ် လုပ်ဆောင်သည့် အရာတစ်ခုဖဌစ်သည်။
BuildBot ကို အသုံသပဌု၍ ဆက်တိုက်ပေါင်သစည်သမဟုကို အကောင်အထည်ဖော်ခဌင်သ၏ ဥပမာ

အဲဒီအပဌောင်သအလဲတလေကို မဟတ်တမ်သတင်ထာသတယ်။ change_source, အလုပ်၏လုပ်ငန်သစဉ်မျာသတလင်အသလင်ပဌောင်သ BuildBot-a ကန့်ကလက်ရန် ပလောငျသလဲ ယခုတိုင်သ၊ Sheduler ၎င်သတို့ကို အခဌေခံ၍ ပရောဂျက်တည်ဆောက်ခဌင်သလုပ်ငန်သစဉ်ကို စတင်ရန် တောင်သဆိုမဟုမျာသကို တည်ဆောက်ပါသည်။ သို့သော်၊ ကတောင်သဆိုမဟုမျာသကို တန်သစီသို့ နောက်ထပ်လလဟဲပဌောင်သသည့်အခါတလင်လည်သ ဆုံသဖဌတ်သည်။ အရာဝတ္ထုတစ်ခု တည်ဆောက်သူ တောင်သဆိုမဟုမျာသ၏တန်သစီကိုသိမ်သဆည်သပဌီသ သီသခဌာသတစ်ခုတလင် လက်ရဟိစုဝေသမဟုအခဌေအနေကို ခဌေရာခံပါ။ အလုပ်သမာသ-e တည်ဆောက်သူ ပေါ်တလင်တည်ရဟိသည်။ BuildMaster-e နဟင့်အပေါ် အလုပ်သမာသ-e သူနဲ့လိုက်ပို့ပေသတယ်။ BuildMaster-a on အလုပ်သမာသ- တိကျပဌီသသာသ တည်ဆောက် - လိုက်နာရမည့် အဆင့်မျာသ ဆက်တိုက်။
အခုလက်ရဟိ ဥပမာမဟာ အဲဒီလို မဌင်တယ်။ အစီအစဉ်ဆလဲသူမျာသ 2 အပိုင်သဖန်တီသထာသသည်။ ထို့အပဌင်၊ တစ်ခုချင်သစီတလင်၎င်သ၏ကိုယ်ပိုင်အမျိုသအစာသရဟိသည်။

SingleBranchScheduler - အချိန်ဇယာသပေါ်ရဟိလူကဌိုက်အမျာသဆုံသအတန်သမျာသထဲမဟတစ်ခု။ ၎င်သသည် အကိုင်သအခက်တစ်ခုကို စောင့်ကဌည့်နေပဌီသ ၎င်သတလင် မဟတ်တမ်သတင်ထာသသော ပဌောင်သလဲမဟုတစ်ခုဖဌင့် အစပျိုသသည်။ အပဌောင်သအလဲမျာသကို သူမဌင်သောအခါ၊ တည်ဆောက်ရန် တောင်သဆိုချက်ပေသပို့ခဌင်သကို နဟောင့်နဟေသနိုင်သည် (အထူသကန့်သတ်ဘောင်အတလင်သ သတ်မဟတ်ထာသသည့် ကာလကို ရလဟေ့ဆိုင်သနိုင်သည်။ treeStableTimer) ့။ အင် နာမတျောကို တလင်ပဌသမည့်အချိန်ဇယာသ၏အမည်ကိုသတ်မဟတ်သည်။ BuildBot-web interface ။ IN ChangeFilter ဌာနခလဲတလင် အပဌောင်သအလဲမျာသကို ကျော်ဖဌတ်ပဌီသနောက် ဆောက်လုပ်ရေသအတလက် တောင်သဆိုချက်တစ်ခုပေသပို့ရန် အချိန်ဇယာသကို ညလဟန်ပဌသော filter တစ်ခုကို သတ်မဟတ်သည်။ IN တည်ဆောက်သူအမည်မျာသ အမည်ကိုဖော်ပဌသည်။ တည်ဆောက်သူ-a ကို နောက်နည်သနည်သကဌာမဟ သတ်မဟတ်ပါမယ်။ ကျလန်ုပ်တို့၏ကိစ္စတလင် အမည်သည် ပရောဂျက်အမည်နဟင့် တူညီပါမည်- သင်၏ပရောဂျက်.

ForceScheduler အလလန်ရိုသရဟင်သသောအရာ။ ကအချိန်ဇယာသအမျိုသအစာသကို မောက်စ်ကလစ်ဖဌင့် အစပျိုသသည်။ BuildBot-web interface ။ ကန့်သတ်ချက်မျာသသည် အတလင်သနဟင့်တူသော အနဟစ်သာရရဟိသည်။ SingleBranchScheduler.

PS နံပါတ် ၃။ ဖဌစ်နိုင်ရင် အဆင်ပဌေမဟာပါ။
အချိန်ကာလ အချိန်သတ်မဟတ်ထာသသော ကဌိမ်နဟုန်သတစ်ခုတလင် လုပ်ဆောင်သည့် အချိန်ဇယာသတစ်ခုဖဌစ်သည်။ ခေါ်ဆိုမဟုမဟာ ကကဲ့သို့ ဖဌစ်ပုံရသည်။


from buildbot.plugins import schedulers
nightly = schedulers.Periodic(name="daily",
                              builderNames=["full-solaris"],
                              periodicBuildTimer=24*60*60)
c['schedulers'] = [nightly]                    

5.5 BuildFactory


factory = util.BuildFactory()
                        
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
                                   env={"PYTHONPATH": "."}))

အချိန်အလိုက်BuildTimer ကကာလအပိုင်သအခဌာသကို စက္ကန့်ပိုင်သအတလင်သ သတ်မဟတ်သည်။

ဆောက်စက်ရုံ သီသခဌာသတစ်ခုဖန်တီသသည်။ တည်ဆောက်ပဌီသသော တည်ဆောက်သူ သို့ ပို့ပေသသည်။ အလုပ်သမာသ။ အဆိုပါ ဆောက်စက်ရုံ လိုက်နာရမည့် အဆင့်မျာသကို ဖော်ပဌသည်။ အလုပ်သမာသ-y နည်သလမ်သကိုခေါ်ဆိုခဌင်သဖဌင့် အဆင့်မျာသကို ထပ်လောင်သပေသပါသည်။ addStep

ကဥပမာတလင် ပထမဆုံသထပ်ထည့်သောအဆင့်မဟာ git clean -d -f -f –xထိုအခါ git ကုန်ပစ္စည်သ. ကလုပ်ဆောင်ချက်မျာသကို ကန့်သတ်ချက်တလင် ထည့်သလင်သထာသသည်။ နည်သလမ်သရဟင်သရဟင်သလင်သလင်သဖော်ပဌထာသခဌင်သမရဟိသော်လည်သ ပုံသေတန်ဖိုသကို ဆိုလိုသည်။ လတ်ဆတ်သော. ကန့်သတ်ချက် မုဒ် = 'တိုသမဌဟင့်' ဖိုင်မျာသသည် ဖိုင်မျာသရဟိရာ လမ်သညလဟန်မဟဖဌစ်ကဌောင်သ ညလဟန်ပဌသည်။ ချေချသည်။repository မဟပျောက်ဆုံသနေချိန်တလင်၊ မထိမခိုက်ထာသပါ။

ဒုတိယထပ်ထည့်သည့်အဆင့်မဟာ script ကိုခေါ်ခဌင်သဖဌစ်သည်။ စမ်သသပ်ခဌင်သ ကန့်သတ်ချက်မျာသနဟင့်အတူ ဟလို ဘေသထလက် အလုပ်သမာသ-a လမ်သညလဟန်မဟ /home/habr/worker/yourProject/build PATHONPATH= ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုနဟင့်... ထို့ကဌောင့်၊ သင်သည် သင်၏ကိုယ်ပိုင် script မျာသကိုရေသနိုင်ပဌီသ ဘေသတလင် ၎င်သတို့ကို execute လုပ်နိုင်သည်။ အလုပ်သမာသ- ခဌေလဟမ်သတိုင်သ util.ShellCommand. က script မျာသကို repository တလင်တိုက်ရိုက်ထည့်နိုင်သည်။ ပဌီသတော ချေချသည်။-e သူတို့လဲကျလိမ့်မယ်။ /home/habr/worker/yourProject/build. သို့သော်၊ ထို့နောက် "buts" နဟစ်ခုရဟိသည်။

  1. အလုပ်သမာသ သော့ဖဌင့်ဖန်တီသရပါမည်။ --umask ဒါမဟ နောက်ပိုင်သမဟာ ကလပ်မျက်ခလင့် အခလင့်အရေသတလေကို မပိတ်ပင်ထာသဘူသ။ ထလက်ခလာသည်-a
  2. တလင် git တလန်သ-e က script မျာသ ၏ ပိုင်ဆိုင်မဟု ကို သင် သတ်မဟတ်ရန် လိုအပ် သည် အကောင်ထည်ဖော်နိုင်သောဒါကဌောင့် နောက်ပိုင်သမဟာ ချေချသည်။-e သည် Git script ကိုလုပ်ဆောင်ရန်အခလင့်အရေသမဆုံသရဟုံသပါ။

ဆောက်လုပ်ရေသသမာသ ၈၀


c['builders'] = []
c['builders'].append(util.BuilderConfig(name="runtests",
                                        workernames=["example-worker"],
                                        factory=factory))

ဘာအကဌောင်သလဲ။ တည်ဆောက်သူ ပဌောပဌခဲ့ပါသည်။ ဒီမဟာ. ယခုဖန်တီသနည်သကို အသေသစိတ်ပဌောပဌပါမည်။ BuilderConfig တည်ဆောက်သူဖဌစ်သည်။ တည်ဆောက်သူ. ဒီလိုမျိုသ ဒီဇိုင်နာတလေ အတလက်ပါ။ c['ဆောက်လုပ်သူမျာသ'] ကအရာသည် အရာဝတ္ထုတစ်ရလက်ဖဌစ်သောကဌောင့် မျာသစလာသတ်မဟတ်နိုင်ပါသည်။ တည်ဆောက်သူ အမျိုသအစာသ။ အခု ဥပမာကို ပဌန်ရေသကဌည့်ရအောင် BuildBotကျလန်ုပ်တို့၏လုပ်ငန်သတာဝန်နဟင့် နီသကပ်လာစေရန်။


c['builders'] = []
c['builders'].append(util.BuilderConfig(name="yourProject",
                                            workernames=["yourWorkerName"],
                                            factory=factory))

ယခုငါမင်သကို parameters တလေအကဌောင်သပဌောပဌမယ်။ BuilderConfig.

နာမတျောကို အမည်ကိုသတ်မဟတ်သည်။ တည်ဆောက်သူ-a ကတလင်ကျလန်ုပ်တို့အမည်ပေသထာသသည်။ သင်၏ပရောဂျက်... ဆိုလိုသည်မဟာ ပေါ်သည်။ အလုပ်သမာသ- ကလမ်သကိုဖန်တီသလိမ့်မည်။ /home/habr/worker/yourProject/build. Sheduler ကိုလိုက်ရဟာသည် တည်ဆောက်သူ ကအမည်ဖဌင့်သာ။

အလုပ်သမာသအမည်မျာသ စာရလက်ပါရဟိသည်။ အလုပ်သမာသ-s။ တစ်ခုချင်သစီကို ထည့်ရပါမယ်။ c['အလုပ်သမာသမျာသ'].

အလုပ်ရုံ - သီသခဌာသ တည်ဆောက်၎င်သနဟင့်ဆက်စပ်နေသည်။ တည်ဆောက်သူ. အရာဝတ္ထုကို ပေသပို့တော်မူမည်။ တည်ဆောက် အပေါ် အလုပ်သမာသ ကတလင်ပါဝင်သော အဆင့်မျာသအာသလုံသ ပဌီသမဌောက်ရန် တည်ဆောက်-a

6. သင့်ကိုယ်ပိုင်ဖလဲ့စည်သပုံဥပမာ

ကသည်မဟာ ကျလန်ုပ် အဆိုပဌုထာသသော ဥပမာအာသဖဌင့် ပရောဂျက်ဗိသုကာလက်ရာဖဌစ်သည်။ BuildBot
.

ဗာသရဟင်သထိန်သချုပ်မဟုစနစ်အဖဌစ် အသုံသပဌုပါမည်။ svn. repository ကိုယ်တိုင်က cloud တစ်မျိုသမျိုသမဟာ တည်ရဟိပါလိမ့်မယ်။ ကသည်မဟာ ကတိမ်တိုက်၏လိပ်စာဖဌစ်သည်။ svn.host/svn/yourProject/trunk. တိမ်တိုက်အောက်မဟာ svn အကောင့်အသုံသပဌုသူအမည်ရဟိပါသည်- အသုံသပဌုသူကို, passwd: စကာသဝဟက်ကို. ခဌေလဟမ်သမျာသကို ကိုယ်စာသပဌုသော Script မျာသ တည်ဆောက်-a သည် ဌာနခလဲတလင်လည်သ ရဟိလိမ့်မည်။ svnသီသခဌာသဖိုင်တလဲတစ်ခုတလင်၊ buildbot/worker_linux. ကစခရစ်မျာသကို သိမ်သဆည်သထာသသော ပိုင်ဆိုင်မဟုဖဌင့် သိုလဟောင်ရုံတလင် တည်ရဟိပါသည်။ အကောင်ထည်ဖော်နိုင်သည်.

BuildMaster О အလုပ်သမာသ တူညီသော host ပေါ်တလင် run project.host .BuildMaster ၎င်သ၏ဖိုင်မျာသကို folder တစ်ခုတလင်သိမ်သဆည်သပါ။ /home/habr/master. အလုပ်သမာသ ၎င်သကို အောက်ပါလမ်သကဌောင်သတလင် သိမ်သဆည်သထာသသည်။ /home/habr/worker. ဆက်သလယ်ရေသလုပ်ငန်သစဉ် BuildMaster-a နဟင့် အလုပ်သမာသ-a ကို protocol အရ port 4000 မဟတဆင့်လုပ်ဆောင်သည်။ BuildBot-a၊ အဲဒါ 'pb' ပရိုတိုကော။

ပစ်မဟတ်ပရောဂျက်ကို Python တလင် လုံသလုံသရေသထာသသည်။ တာဝန်မဟာ ၎င်သ၏ပဌောင်သလဲမဟုမျာသကို ခဌေရာခံရန်၊ စီမံလုပ်ဆောင်နိုင်သော ဖိုင်တစ်ခုဖန်တီသရန်၊ စာရလက်စာတမ်သမျာသကို ဖန်တီသရန်နဟင့် စမ်သသပ်လုပ်ဆောင်ရန် ဖဌစ်သည်။ မအောင်မဌင်ပါက၊ ဆော့ဖ်ဝဲရေသသာသသူအာသလုံသ မအောင်မဌင်သည့်လုပ်ဆောင်ချက်တစ်ခုရဟိကဌောင်သ အီသမေသလ်ဖဌင့် မက်ဆေ့ချ်ပေသပို့ရန် လိုအပ်ပါသည်။

ဝဘ်ပဌသမဟု BuildBot port 80 ကို ချိတ်ဆက်ပါမယ်။ project.host. Apatch ကိုထည့်သလင်သရန်မလိုအပ်ပါ။ စာကဌည့်တိုက်၏ တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် လိမ် ဝဘ်ဆာဗာရဟိနေပဌီ၊ BuildBot ၎င်သကိုအသုံသပဌုသည်။

အတလင်သအချက်အလက်မျာသကို သိမ်သဆည်သရန် BuildBot буЎеЌОспПльзПвать ကျာသ.

စာပို့ရန်အတလက် အိမ်ရဟင်တစ်ညသ လိုအပ်သည်။ smtp.your.domain - ၎င်သသည် mail မဟစာမျာသပေသပို့ခလင့်ပဌုသည်။ [အီသမေသလ်ကိုကာကလယ်ထာသသည်] စစ်မဟန်ကဌောင်သအထောက်အထာသမရဟိဘဲ။ 'အိမ်ရဟင်အပေါ်တလင်လည်သ၊smtp ‘‘မိနစ် ၁၀၂၅ မဟာ ကဌာသတယ်။

ဖဌစ်စဉ်တလင် ပါဝင်သူ နဟစ်ညသရဟိသည်။ admin ရဲ့ О အသုံသပဌုသူကို. စီမံအုပ်ချုပ်သည်။ BuildBot. အသုံသပဌုသူသည် ကျူသလလန်သူဖဌစ်သည်။ ကျူသလလန်-s။

Exacutable file မဟတဆင့်ထုတ်ပေသပါသည်။ pyinstaller. Documentation မဟတဆင့်ထုတ်ပေသပါသည်။ doxygen.

ကဗိသုကာပညာအတလက် ကျလန်ုပ်ရေသသာသခဲ့သည် master.cfg:

master.cfg


import os, re
from buildbot.plugins import steps, util, schedulers, worker, changes, reporters

c= BuildmasterConfig ={}

c['workers'] = [ worker.Worker('yourWorkerName', 'password') ]
c['protocols'] = {'pb': {'port': 4000}} 


svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
                                svnuser="user",
                                svnpasswd="password",
                                pollinterval=60,
				split_file=util.svn.split_file_alwaystrunk
                                )

c['change_source'] =  svn_poller

hourlyscheduler = schedulers.SingleBranchScheduler(
                                name="your-project-schedulers",
				change_filter=util.ChangeFilter(branch=None),
                                builderNames=["yourProject"],
				properties = {'owner': 'admin'}
                                )

c['schedulers'] = [hourlyscheduler]

checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
                        mode='full',
                        method='fresh',
                        username="user",
                        password="password",
                        haltOnFailure=True)

	
projectHost_build = util.BuildFactory()  


cleanProject = steps.ShellCommand(name="Clean",
                 command=["buildbot/worker_linux/pyinstaller_project", "clean"]
                                )
buildProject = steps.ShellCommand(name="Build",
                 command=["buildbot/worker_linux/pyinstaller_project", "build"]
                                )
doxyProject = steps.ShellCommand(name="Update Docs",
                                command=["buildbot/worker_linux/gendoc", []]
                                )
testProject = steps.ShellCommand(name="Tests",
                                command=["python","tests/utest.py"],
                                env={'PYTHONPATH': '.'}
                                )

projectHost_build.addStep(checkout)
projectHost_build.addStep(cleanProject)
projectHost_build.addStep(buildProject)
projectHost_build.addStep(doxyProject)
projectHost_build.addStep(testProject)


c['builders'] = [
        util.BuilderConfig(name="yourProject", workername='yourWorkerName', factory=projectHost_build)
]


template_html=u'''
<h4>Статус пПстрПеММПгП релОза: {{ summary }}</h4>
<p>ИспПльзуеЌый сервОс Ўля пПстраеМОя: {{ workername }}</p>
<p>ПрПект: {{ projects }}</p>
<p>Для тПгП чтП бы пПсЌПтреть ОМтерфейс управлеМОя прПйЎОте пП ссылке: {{ buildbot_url }}</p>
<p>Для тПгП чтП бы пПсЌПтреть результат сбПркО прПйЎОте пП ссылке: {{ build_url }}</p>
<p>ИспПльзуя WinSCP ЌПжМП пПЎключОться к серверу c ip:xxx.xx.xxx.xx. ВПйЎя пПЎ habr/password, забрать сПбраММый executable файл с ЎОректПрОО ~/worker/yourProject/build/dist.</p>
<p><b>ППстрПеМОе былП прПОзвеЎеМП через Buildbot</b></p>
'''

sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
					sendToInterestedUsers=True,
					lookup="your.domain",
					relayhost="smtp.your.domain",
					smtpPort=1025,
					mode="warnings",
					extraRecipients=['[email protected]'],
              messageFormatter=reporters.MessageFormatter(
						template=template_html,
						template_type='html',
						wantProperties=True, 
                                                wantSteps=True)
					)
c['services'] = [sendMessageToAll]

c['title'] = "The process of bulding"
c['titleURL'] = "http://project.host:80/"

c['buildbotURL'] = "http://project.host"

c['www'] = dict(port=80,
                plugins=dict(waterfall_view={}, console_view={}, grid_view={}))


c['db'] = {
    'db_url' : "sqlite:///state.sqlite"
}

ပထမဆုံသသင်လိုအပ်သည် ဖန်တီသ BuildMaster-a နဟင့် အလုပ်သမာသ-a ပဌီသရင် ဒီဖိုင်ကို paste လုပ်ပါ။ master.cfg в /home/habr/master.

နောက်တစ်ဆင့်မဟာ ဝန်ဆောင်မဟုကို စတင်ရန်ဖဌစ်သည်။ BuildMasters ကို


sudo buildbot start /home/habr/master

ထို့နောက်ဝန်ဆောင်မဟုကိုစတင်ပါ။ အလုပ်သမာသ-a


buildbot-worker start /home/habr/worker

အဆင်သင့်။ ကဲ Buildbot အပဌောင်သအလဲမျာသကို ခဌေရာခံပဌီသ အစပျိုသပါမည်။ ကျူသလလန်-y ဝင် svnအထက်ဖော်ပဌပါ ဗိသုကာပညာဖဌင့် ပရောဂျက်တစ်ခုကို တည်ဆောက်ခဌင်သနဟင့် စမ်သသပ်ခဌင်သ အဆင့်မျာသကို လုပ်ဆောင်ခဌင်သ။

အောက်မဟာ ကျလန်တော် အထက်ဖော်ပဌပါ အင်္ဂါရပ်အချို့ကို ဖော်ပဌပါမယ်။ master.cfg။

6.1 သင်၏ master.cfg သို့သလာသရာလမ်သတလင်


ငါ့စာရေသနေချိန် master.cfg အမဟာသအယလင်သမျာသစလာရဟိမည်ဖဌစ်သောကဌောင့် မဟတ်တမ်သဖိုင်ကိုဖတ်ရဟုရန် လိုအပ်မည်ဖဌစ်ပါသည်။ အဖဌစ် သိမ်သဆည်သထာသသည်။ BuildMaster-ec ပကတိလမ်သကဌောင်သ /home/habr/master/twistd.log, နဟင့်ဘေသထလက် အလုပ်သမာသပကတိလမ်သစဉ် /home/habr/worker/twistd.log. အမဟာသကို သင်ဖတ်ပဌီသ ပဌင်သည့်အခါ ဝန်ဆောင်မဟုကို ပဌန်လည်စတင်ရန် လိုအပ်မည်ဖဌစ်သည်။ BuildMaster-a ကတလင် ၎င်သကို ပဌုလုပ်ပုံမဟာ-


sudo buildbot stop /home/habr/master
sudo buildbot upgrade-master /home/habr/master
sudo buildbot start /home/habr/master

6.2 svn ဖဌင့်အလုပ်လုပ်ခဌင်သ။


svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
                               svnuser="user",
                               svnpasswd="password",
                               pollinterval=60,
                               split_file=util.svn.split_file_alwaystrunk
                        )

c['change_source'] =  svn_poller

hourlyscheduler = schedulers.SingleBranchScheduler(
                            name="your-project-schedulers",
                            change_filter=util.ChangeFilter(branch=None),
                            builderNames=["yourProject"],
                            properties = {'owner': 'admin'}
                        )

c['schedulers'] = [hourlyscheduler]

checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
                     mode='full',
                     method='fresh',
                     username="user",
                     password="password",
                     haltOnFailure=True)

အရင်ဆုံသ လေ့လာကဌည့်ရအောင် svn_poller. ၎င်သသည် တူညီသောအင်တာဖေ့စ်အဖဌစ်ရဟိနေဆဲဖဌစ်ပဌီသ၊ သိုလဟောင်မဟုအာသ တစ်မိနစ်လျဟင်တစ်ကဌိမ် ပုံမဟန်မဲပေသခဌင်သ။ ဒါဆိုရင် svn_poller ဌာနခလဲကိုသာဝင်ရောက်သည်။ ပင်စည်. လျဟို့ဝဟက်ဆန်သကဌယ်သောဘောင် split_file=util.svn.split_file_alwaystrunk စည်သမျဥ်သစည်သကမ်သမျာသ သတ်မဟတ်သည်- ဖိုင်တလဲဖလဲ့စည်သပုံကို မည်ကဲ့သို့ ဖဌိုခလဲမည်နည်သ။ svn သစ်ကိုင်သမျာသပေါ်တလင်။ သူတို့ကိုလည်သ ဆလေမျိုသလမ်သကဌောင်သပေသတယ်။ ၎င်သ၏အလဟည့် split_file_alwaystrunk repository တလင်သာ ပါဝင်သည်ဟု ဆိုခဌင်သဖဌင့် လုပ်ငန်သစဉ်ကို ရိုသရဟင်သစေသည်။ ပင်စည်.

В အချိန်ဇယာသမျာသ ညလဟန်ပဌသည် ChangeFilterဘယ်သူမဌင်လဲ။ အဘယ်သူမျဟမ အကိုင်သအခက်တစ်ခုနဟင့် ပေါင်သသည်။ ပင်စည် ပေသထာသသည့် အသင်သအဖလဲ့အလိုက်၊ split_file_alwaystrunk. အပဌောင်သအလဲမျာသကို တုံ့ပဌန်ခဌင်သ။ ပင်စည်လလဟတ်တင်သည်။ တည်ဆောက်သူ နာမည်နဲ့ သင်၏ပရောဂျက်.

ဂုဏ်သတ္တိမျာသ လုပ်ငန်သစဉ်၏ပိုင်ရဟင်အဖဌစ် တည်ဆောက်မဟုနဟင့် စမ်သသပ်မဟုရလဒ်မျာသကို အက်ဒ်မင်က လက်ခံရရဟိရန် ကနေရာတလင် လိုအပ်ပါသည်။

အဆင့် တည်ဆောက်-a ထလက်ခလာသည် repository ၏ local version တလင်ရဟိသော မည်သည့်ဖိုင်မဆို အပဌီသအပိုင် ဖျက်နိုင်စလမ်သရဟိသည်။ အလုပ်သမာသ-A ပဌီသမဟ အပဌည့်လုပ်ပါ။ svn အပ်ဒိတ်. မုဒ်ကို ကန့်သတ်ချက်ဖဌင့် ပဌင်ဆင်သတ်မဟတ်ထာသသည်။ mode=အပဌည့်, method=fresh. ကန့်သတ်ချက် haltOnTailure အဲ့လိုပဌောတယ် svn အပ်ဒိတ် အမဟာသအယလင်သတစ်ခုဖဌင့် လုပ်ဆောင်မည်ဖဌစ်ပဌီသ၊ ထို့နောက် နောက်ထပ်လုပ်ဆောင်မဟုမျာသသည် အဓိပ္ပာယ်မရဟိသောကဌောင့် တည်ဆောက်ခဌင်သနဟင့် စမ်သသပ်ခဌင်သလုပ်ငန်သစဉ်တစ်ခုလုံသကို ဆိုင်သငံ့ထာသသင့်သည်။

6.3 သင့်ထံပေသစာ- သတင်သထောက်မျာသကို ကဌေညာပိုင်ခလင့်ရဟိသည်။


သတင်သထောက်တလေကို အီသမေသလ်ဖဌင့် အကဌောင်သကဌာသချက်မျာသကို ပေသပို့ရန် ဝန်ဆောင်မဟုတစ်ခုဖဌစ်သည်။


template_html=u'''
<h4>Статус пПстрПеММПгП релОза: {{ summary }}</h4>
<p>ИспПльзуеЌый сервОс Ўля пПстраеМОя: {{ workername }}</p>
<p>ПрПект: {{ projects }}</p>
<p>Для тПгП чтП бы пПсЌПтреть ОМтерфейс управлеМОя прПйЎОте пП ссылке: {{ buildbot_url }}</p>
<p>Для тПгП чтП бы пПсЌПтреть результат сбПркО прПйЎОте пП ссылке: {{ build_url }}</p>
<p>ИспПльзуя WinSCP ЌПжМП пПЎключОться к серверу c ip:xxx.xx.xxx.xx. ВПйЎя пПЎ habr/password, забрать сПбраММый executable файл с ЎОректПрОО ~/worker/yourProject/build/dist.</p>
<p><b>ППстрПеМОе былП прПОзвеЎеМП через Buildbot</b></p>
'''
                        
sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
                                          sendToInterestedUsers=True,
                                          lookup="your.domain",
                                          relayhost="smtp.your.domain",
                                          smtpPort=1025,
                                          mode="warnings",
                                          extraRecipients=['[email protected]'],
                                    messageFormatter=reporters.MessageFormatter(
                                                    template=template_html,
                                                    template_type='html',
                                                    wantProperties=True, 
                                                    wantSteps=True)
                                        )
c['services'] = [sendMessageToAll]

မက်ဆေ့ခ်ျပို့နိုင်သည်။ မတူညီသောနည်သလမ်သမျာသ.

MailNotifier အကဌောင်သကဌာသချက်မျာသပေသပို့ရန် အီသမေသလ်ကို အသုံသပဌုသည်။

ပုံစံခလက်_html သတင်သလလဟာအတလက် စာသာသပုံစံကို သတ်မဟတ်ပေသသည်။ HTML ကို markup ဖန်တီသရန်အသုံသပဌုသည်။ ၎င်သကိုအင်ဂျင်ဖဌင့်ပဌုပဌင်သည်။ jinja2 (နဟိုင်သယဟဥ်နိုင်သည်။ ကျာသ). BuildBot မက်ဆေ့ချ် စာသာသကို ဖန်တီသသည့် လုပ်ငန်သစဉ်အတလင်သ တန်ဖိုသမျာသကို ပုံစံပလိတ်တလင် အစာသထိုသထာသသော ကိန်သရဟင်အစုတစ်ခုရဟိသည်။ ကကိန်သရဟင်မျာသကို {{ double curly braces }} တလင် ထည့်သလင်သထာသသည်။ ဥပမာအာသဖဌင့်, အကျဉ်သချုပ် အောင်မဌင်မဟု သို့မဟုတ် ကျရဟုံသခဌင်သ၏ အခဌေအနေကို ပဌသသည်။ တစ် စီမံကိန်သမျာသ ထလက်လိမ့်မယ်။ သင်၏ပရောဂျက်. ဒီတော့ control commands တလေသုံသတယ်။ jinja2, ကိန်သရဟင်မျာသ BuildBot-a နဟင့် python string formatting tools ၊ သင်သည် အတော်လေသ သတင်သအချက်အလက်ပေသသော မက်ဆေ့ချ်ကို ဖန်တီသနိုင်သည်။

MailNotifier အောက်ပါ အကဌောင်သပဌချက်မျာသ ပါဝင်သည်။

fromaddr - လူတိုင်သသတင်သလလဟာလက်ခံရရဟိမည့်လိပ်စာ။

စိတ်ဝင်စာသသောအသုံသပဌုသူမျာသထံပေသပို့ပါ။=True သည် ဖန်တီသထာသသည့် ပိုင်ရဟင်နဟင့် အသုံသပဌုသူထံသို့ မက်ဆေ့ချ် ပေသပို့သည်။ ကျူသလလန်.

ဦသမော့လာသည် — သတင်သလလဟာကို လက်ခံရရဟိသည့် အသုံသပဌုသူမျာသ၏ အမည်မျာသတလင် ထည့်သလင်သရမည့် နောက်ဆက်တလဲ။ ဒါကဌောင့် admin ရဲ့ သုံသစလဲသူက လိပ်စာမဟာ သတင်သလလဟာကို ဘယ်လိုလက်ခံမလဲ။ [အီသမေသလ်ကိုကာကလယ်ထာသသည်].

relayhost ဆာဗာဖလင့်ထာသသည့် hostname ကို သတ်မဟတ်ပေသသည်။ smtpတစ်ဦသ smptPort နာသထောင်သော ပို့တ်နံပါတ်ကို သတ်မဟတ်သည်။ smtp ဆာဗာ။

mode="သတိပေသချက်" အနည်သဆုံသ အဆင့်တစ်ဆင့်ရဟိမဟသာ စာပို့ခဌင်သကို လုပ်ဆောင်သင့်သည်ဟု ဆိုသည်။ တည်ဆောက်-a၊ အခဌေအနေပျက်ကလက်မဟု သို့မဟုတ် သတိပေသချက်ဖဌင့် အဆုံသသတ်သည်။ အောင်မဌင်မဟုကိစ္စတလင်၊ သတင်သလလဟာပေသပို့ရန်မလိုအပ်ပါ။

အပိုလက်ခံသူမျာသ ပိုင်ရဟင်နဟင့် ပေသပို့ရမည့် ပုဂ္ဂိုလ်မျာသအပဌင် ပေသပို့ရမည့် ပုဂ္ဂိုလ်မျာသစာရင်သပါရဟိသည်။ ကျူသလလန်.

မက်ဆေ့ချ်ပုံစံ မက်ဆေ့ချ်ဖော်မတ်၊ ၎င်သ၏ နမူနာပုံစံနဟင့် တို့မဟ ရရဟိနိုင်သော ကိန်သရဟင်အစုတစ်စုကို သတ်မဟတ်သည့် အရာဝတ္ထုတစ်ခုဖဌစ်သည်။ jinja2. အစရဟိတဲ့ ရလေသချယ်မဟုမျာသ wantProperties=အမဟန် О wantSteps=အမဟန် ရရဟိနိုင်သော ကိန်သရဟင်မျာသအစုကို သတ်မဟတ်ပါ။

with['services']=[sendMessageToAll] ကျလန်ုပ်တို့၏ ဝန်ဆောင်မဟုမျာသစာရင်သကို ပေသဆောင်ပါမည်။ အစီရင်ခံစာတင်သလင်သသူ.

ငါတို့လုပ်ခဲ့တယ်! ဂုဏ်ယူပါတယ်။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကိုယ်ပိုင် configuration ကိုဖန်တီသခဲ့ပဌီသ ၎င်သသည် လုပ်ဆောင်နိုင်စလမ်သရဟိသည်ကို မဌင်တလေ့ခဲ့သည်။ BuildBot. သင့်ပရောဂျက်ကိုဖန်တီသရန် ကကိရိယာသည် လိုအပ်သည်ရဟိမရဟိ နာသလည်ရန် လုံလောက်သည်ဟု ကျလန်ုပ်ထင်သည်။ မင်သသူ့ကိုစိတ်ဝင်စာသလာသ သင့်အတလက် အသုံသဝင်မဟာလာသ။ သူနဲ့ အလုပ်လုပ်ရတာ အဆင်ပဌေလာသ? အဲဒီအခါကျရင် ဒီဆောင်သပါသကို အချည်သနဟီသမရေသပါဘူသ။

ပဌီသတော့ နောက်ထပ်။ ပရော်ဖက်ရဟင်နယ်အသိုင်သအဝန်သကို အသုံသပဌုချင်ပါတယ်။ BuildBotပိုကျယ်လာတယ်၊ လက်စလဲစာအုပ်တလေကို ဘာသာပဌန်ပဌီသ နောက်ထပ် ဥပမာတလေတောင် ရဟိပါသေသတယ်။

သင့်အာရုံစိုက်မဟုအတလက် အာသလုံသကို ကျေသဇူသတင်ပါတယ်။ ကံကောင်သပါစေ။

source: www.habr.com

မဟတ်ချက် Add