Kwa kuwa buildbot ni mfumo uliosambazwa, itakuwa busara kuunda mwenyeji tofauti wa ujenzi kwa kila usanifu na mfumo wa uendeshaji. Kwa upande wetu, hizi zitakuwa vyombo vya LXC (kwa upande wa Linux) na qemu (kwa upande wa Windows):
vm-srv-build1 - centos 7, kutakuwa na boti ya ujenzi na mmoja wa wafanyikazi
vm-srv-build2 - debian 10, kwa ajili ya kujenga vifurushi vya DEB
vm-srv-build3 - windows 10, kwa kusanyiko, unajua ni kwa nini
Tutakusanya Rac GUI - kiolesura cha picha cha mbio za 1C za kudhibiti kundi la seva. Kwa Linux, zana za kawaida kwa kila OS zitatumika; kuunda faili ya exe ya Windows kutoka kwa hati ya tcl, tumia freewrap.
Ufungaji
GNU / Linux
Kuna nyaraka za kutosha kwenye mtandao kwa ajili ya ufungaji 1,2. Ndio, na haisababishi shida yoyote maalum:
Kwa bwana:
Bila shaka, itakuwa sahihi zaidi kukusanya vifurushi kwa kila OS, lakini hii ni zaidi ya upeo wa makala. Pia tutaacha maelezo ya kusanidi vyombo kwa ajili ya kazi, nitatambua tu kwamba ninatumia ProxMox VE. Na pia utahitaji kusakinisha vifurushi kwa kila mhimili unaohitajika kwa kusanyiko (centos: rpmdevtools, n.k.; debian: build-essential, dh-make, pbuilder, n.k.)
Miradi ya ujenzi na huduma za ujenzi itazinduliwa kama mtumiaji asiye na haki, kwa hivyo unahitaji kuunda moja kwa wapangishi wote wanaoshiriki katika mchakato:
adduser buildbot
Ifuatayo, tutasanidi uzinduzi wa kiotomatiki wa huduma, mtawaliwa, kwa kila mwenyeji (vyombo):
Baada ya hayo, unaweza kuunda miundombinu ya saraka kwa "wafanyakazi" (kwa majeshi yote), ili kufanya hivyo, jiandikishe chini ya mtumiaji wa kujenga na uendesha amri zifuatazo:
Kwenye mwenyeji wa kwanza vm-srv-build1:
su - buildbot
mkdir /home/buildbot/worker
cd ~
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker vm-srv-build1:4000 CentOS 123456
Kwenye mwenyeji wa pili vm-srv-build2:
su - buildbot
mkdir /home/buildbot/worker
cd ~
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker vm-srv-build1:4000 Debian-10 123456
Kwa wapangishi wa wafanyikazi, huduma ya mfanyakazi wa ujenzi inaweza kuanza
systemctl start buildbot-worker
Windows Windows
Kama "mfanyikazi" wa kusanyiko chini ya Windows, mashine pepe iliyo na toleo jipya la Win10 itatumika.
Ili kufanya kazi utahitaji:
Baada ya yote hapo juu kusanikishwa, unaweza kusakinisha kiboti yenyewe:
pip install buildbot-worker
Wacha tuunda saraka ya kufanya kazi
md c:worker
Na tuzindue
buildbot-worker start c:worker
Ikiwa kila kitu kitafanya kazi (tazama logi c:workertwistd.log), basi unaweza kusajili "mfanyikazi" wetu kama huduma kwa kuongeza kipengee kilicho na saraka ya kufanya kazi kwenye sajili (amri hutekelezwa kwa nguvu inayoendesha kama msimamizi):
Hiyo yote ni pamoja na "wafanyakazi", si lazima kuwagusa zaidi, udhibiti wote unatoka kwa bwana.
Mpangilio wa mchawi
Kuanza, hebu tuunde miundombinu ya bwana (kwenye mwenyeji mkuu), ili kufanya hivyo, jiandikishe chini ya mtumiaji wa ujenzi na uendesha amri zifuatazo:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Kwa vifurushi vilivyotengenezwa tayari, tengeneza saraka ya kujenga
mkdir /home/buildbot/builds
Faili ya master.cfg iliundwa kwenye saraka /home/buildbot/master/. Faili hii ni msimbo wa python na ina maelezo ya mifumo yote ya mfumo; tutafanya kazi nayo katika siku zijazo.
Ili kufanya mkusanyiko wa vifurushi vya matoleo tofauti kiotomatiki, ili usilazimike kuingia kwenye msimbo wa faili ya master.cfg, katika hati kuu ya programu ya rac_gui.tcl, mistari iliyo na toleo la sasa na kutolewa iliongezwa kwenye kichwa. :
Na kwa kuzingatia mistari hii, buildbot itahesabu vifurushi. Ili kutoa data, tumia console grep call. Katika buildbot huwezi kufafanua vijiti vya "wafanyakazi" (angalau, sijapata jinsi). Hii ndio sifa zinazotumiwa. Wale. Katika mchakato wa mkusanyiko, tunaongeza hatua za kuamua toleo na kutolewa na, ipasavyo, kuweka toleo na mali ya kutolewa. Sifa zinaweza kuwekwa kwa njia tofauti, katika kesi hii kwa kupiga amri ya koni:
Ili kuweka nambari sahihi za toleo na toleo, tumia simu ya kawaida ya sed, i.e. amri inachukua nafasi ya maadili ndani ya faili maalum na zile zinazohitajika
Tunakili kifurushi kilichokamilika kilichokusanywa na kumbukumbu iliyo na vyanzo kwa bwana. Lakini unaweza kunakili faili mara moja kutoka kwa faili yako ya kazi hadi kwenye hazina yako au tovuti.
Hiyo ni kwa RPM. Sasa hebu tuanze kuelezea algorithm ya kujenga kifurushi cha DEB. Kwa kuwa michakato ya ujenzi wa vifurushi vya mifumo tofauti ni huru kwa kila mmoja, hatua nyingi zitarudiwa.
Kwa kifurushi cha RPM, baadhi ya taratibu zifuatazo hufanywa na rpm yenyewe wakati wa kusanyiko na zimeelezewa ndani ya maalum; kwa Debian, lazima uifanye hapa:
Hifadhi faili na unaweza kujaribu kuanza huduma ya mchawi:
systemctl restart buildbot-master
Kwenye logi tutaangalia kuwa kila kitu kiko sawa na usanidi na kila kitu kinafanya kazi kama kawaida. Wafanyakazi wetu wote wanapaswa sasa kuunganishwa, ambayo itaripotiwa kwa furaha katika kumbukumbu »»'/home/buildbot/master/twistd.log»»':
2019-07-24 16:50:35+0300 [-] Loading buildbot.tac...
2019-07-24 16:50:35+0300 [-] Loaded.
2019-07-24 16:50:35+0300 [-] twistd 19.2.1 (/usr/bin/python3.6 3.6.8) starting up.
2019-07-24 16:50:35+0300 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2019-07-24 16:50:35+0300 [-] Starting BuildMaster -- buildbot.version: 2.3.1
2019-07-24 16:50:35+0300 [-] Loading configuration from '/home/buildbot/master/master.cfg'
2019-07-24 16:50:36+0300 [-] /usr/local/lib/python3.6/site-packages/buildbot/config.py:90: buildbot.config.ConfigWarning: [0.9.0 and later] `buildbotNetUsageData` is not configured and defaults to basic.
This parameter helps the buildbot development team to understand the installation base.
No personal information is collected.
Only installation software version info and plugin usage is sent.
You can `opt-out` by setting this variable to None.
Or `opt-in` for more information by setting it to "full".
2019-07-24 16:50:36+0300 [-] Setting up database with URL 'sqlite:/state.sqlite'
2019-07-24 16:50:36+0300 [-] setting database journal mode to 'wal'
2019-07-24 16:50:36+0300 [-] adding 1 new services, removing 0
2019-07-24 16:50:36+0300 [-] adding 1 new change_sources, removing 0
2019-07-24 16:50:36+0300 [-] gitpoller: using workdir '/home/buildbot/master/gitpoller-work'
2019-07-24 16:50:36+0300 [-] adding 3 new builders, removing 0
2019-07-24 16:50:36+0300 [-] adding 1 new schedulers, removing 0
2019-07-24 16:50:36+0300 [-] initializing www plugin 'waterfall_view'
2019-07-24 16:50:36+0300 [-] initializing www plugin 'console_view'
2019-07-24 16:50:36+0300 [-] initializing www plugin 'grid_view'
2019-07-24 16:50:36+0300 [-] NOTE: www plugin 'sitenav' is installed but not configured
2019-07-24 16:50:36+0300 [-] initializing www plugin 'waterfall_view'
2019-07-24 16:50:36+0300 [-] initializing www plugin 'console_view'
2019-07-24 16:50:36+0300 [-] initializing www plugin 'grid_view'
2019-07-24 16:50:36+0300 [-] NOTE: www plugin 'sitenav' is installed but not configured
2019-07-24 16:50:36+0300 [-] BuildbotSite starting on 80
2019-07-24 16:50:36+0300 [-] Starting factory <buildbot.www.service.BuildbotSite object at 0x7fe31c2657b8>
2019-07-24 16:50:36+0300 [-] adding 3 new workers, removing 0
2019-07-24 16:50:36+0300 [-] PBServerFactory starting on 4000
2019-07-24 16:50:36+0300 [-] Starting factory <twisted.spread.pb.PBServerFactory object at 0x7fe31c147470>
2019-07-24 16:50:37+0300 [-] BuildMaster is running
2019-07-24 16:50:37+0300 [-] buildbotNetUsageData: sending {'installid': 'b6193b126b96689351d2fe95787c5a03fc0879f9', 'versions': {'Python': '3.6.8', 'Buildbot': '2.3.1', 'Twisted': '19.2.1'}, 'platform': {'platform': 'Linux-4.15.18-10- pve-x86_64-with-centos-7.6.1810-Core', 'system': 'Linux', 'machine': 'x86_64', 'processor': 'x86_64', 'python_implementation': 'CPython', 'version': '#1 SMP PVE 4.15.18-32', 'distro': 'centos:7'}, 'plugins': {'buildbot/worker/base/Worker': 3, 'buildbot/config/BuilderConfig': 3, 'buildbot/schedulers/basic/SingleBranchScheduler': 1, 'buildbot/reporters/mail/MailNotifier': 1, 'buildbot/changes/gitpoller/GitPoller': 1, 'buildbot/steps/worker/MakeDirectory': 1, 'buildbot/steps/source/git/Git': 3, 'buildbot/steps/shell/ShellCommand': 9, 'buildbot/steps/package/rpm/rpmbuild/RpmBuild': 1}, 'db': 'sqlite', 'mq': 'simple', 'www_plugins': ['waterfall_view', 'console_view', 'grid_view']}
2019-07-24 16:50:37+0300 [Broker,0,127.0.0.1] worker 'CentOS' attaching from IPv4Address(type='TCP', host='127.0.0.1', port=37332)
2019-07-24 16:50:37+0300 [Broker,0,127.0.0.1] Got workerinfo from 'CentOS'
2019-07-24 16:50:37+0300 [-] bot attached
2019-07-24 16:50:37+0300 [Broker,0,127.0.0.1] Worker CentOS attached to Rac-GUI-RPM-builder
2019-07-24 16:50:37+0300 [-] buildbotNetUsageData: buildbot.net said: ok
2019-07-24 16:50:39+0300 [Broker,1,192.168.55.15] worker 'Windows-10' attaching from IPv4Address(type='TCP', host='192.168.5.145', port=49831)
2019-07-24 16:50:39+0300 [Broker,1,192.168.55.15] Got workerinfo from 'Windows-10'
2019-07-24 16:50:40+0300 [-] bot attached
2019-07-24 16:50:40+0300 [Broker,1,192.168.55.15] Worker Windows-10 attached to Rac-GUI-WIN-builder
2019-07-24 16:50:41+0300 [Broker,2,192.168.55.99] worker 'Debian-10' attaching from IPv4Address(type='TCP', host='192.168.5.9', port=44430)
2019-07-24 16:50:41+0300 [Broker,2,192.168.55.99] Got workerinfo from 'Debian-10'
2019-07-24 16:50:41+0300 [-] bot attached
2019-07-24 16:50:41+0300 [Broker,2,192.168.55.99] Worker Debian-10 attached to Rac-GUI-DEB-builder
Hii inakamilisha mchakato wa usanidi. Unaweza kutazama hali ya sasa kupitia kiolesura cha wavuti. Ambapo unaweza pia kuona makosa ya muundo, piga mchakato uliogandishwa ikiwa kitu kilienda vibaya, nk.
Mara tu baada ya uzinduzi, wafanyikazi wetu wa bidii wanaweza kutazamwa kupitia menyu "Jenga" -> "Wafanyakazi"
Baada ya mchakato wa kwanza wa ujenzi kukamilika (yaani mabadiliko kwenye hazina ya Git), hali ya michakato itaonekana kwenye ukurasa wa kwanza.
Ikiwa unabonyeza mstari uliotaka na panya, ukurasa utafungua na hali ya sasa ya mchakato huu, ambapo unaweza kuona kinachotokea, ni makosa gani, nk.