Aangesien buildbot 'n verspreide stelsel is, sal dit logies wees om 'n aparte bougasheer vir elke argitektuur en bedryfstelsel te maak. In ons geval sal dit LXC-houers wees (in die geval van Linux) en qemu (in die geval van vensters):
vm-srv-build1 - centos 7, daar sal 'n buildbot-meester (meester) en een van die werkers (werker) wees
vm-srv-build2 - debian 10, vir die bou van DEB-pakkette
vm-srv-build3 - Windows 10, vir montering, jy self verstaan ββwat
Ons sal versamel Rac GUI - grafiese gesig na 1C rac vir die bestuur van 'n groep bedieners. Onder Linux sal standaardgereedskap vir elke bedryfstelsel gebruik word; om 'n exe-lΓͺer onder Windows vanaf 'n tcl-skrip te bou, gebruik freewrap.
installasie
GNU / Linux
Vir installasie is daar genoeg dokumentasie op die netwerk 1,2. Ja, en dit veroorsaak geen spesiale probleme nie:
Vir meester:
Natuurlik sal dit meer korrek wees om pakkette vir elke bedryfstelsel te bou, maar dit is nie binne die bestek van die artikel nie. Ons sal ook die beskrywing van die opstel van houers vir werk weglaat, ek sal net daarop let dat ek ProxMox VE gebruik. En jy sal ook pakkette moet installeer vir elke as wat nodig is vir die bou (centos: rpmdevtools, ens; debian: build-essential, dh-make, pbuilder, ens.)
Projekbou en buildbot-dienste sal as 'n onbevoorregte gebruiker loop, so jy moet dit skep op alle gashere wat by die proses betrokke is:
adduser buildbot
Vervolgens sal ons die outomatiese begin van dienste onderskeidelik op elk van die gashere (houers) instel:
Daarna kan u 'n gidsinfrastruktuur vir "werkers" (op alle gashere) skep, hiervoor registreer u onder die buildbot-gebruiker en voer die volgende opdragte uit:
Op die eerste gasheer 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
Op die tweede gasheer 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
Op werkersgashere kan die buildbot-worker-diens begin word
systemctl start buildbot-worker
MS Windows
As 'n "werker" om onder vensters te bou, sal 'n virtuele masjien met die nuutste weergawe van Win10 gebruik word.
Vir werk benodig jy:
Nadat al die bogenoemde geΓ―nstalleer is, kan u die buildbot self installeer:
pip install buildbot-worker
Skep 'n werkende gids
md c:worker
En kom ons hardloop
buildbot-worker start c:worker
As alles werk (sien die c: workertwistd.log log), dan kan jy ons "werker" as 'n diens registreer deur 'n item met die werkgids by die register te voeg (opdragte word uitgevoer in powershell wat as administrateur loop):
Met die "werkers" is dit al, jy kan hulle nie verder raak nie, alle beheer kom van die meester af.
Wizard-opstelling
Om mee te begin, kom ons skep die infrastruktuur vir die meester (op die hoofgasheer), hiervoor registreer ons onder die buildbot-gebruiker en voer die volgende opdragte uit:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Skep 'n bougids vir klaargemaakte pakkette
mkdir /home/buildbot/builds
'n Master.cfg-lΓͺer is in die /home/buildbot/master/-gids geskep. Hierdie lΓͺer is 'n luislangkode en bevat 'n beskrywing van al die meganismes van die stelsel, en ons sal in die toekoms daarmee werk.
Om die samestelling van pakkette van verskillende weergawes te outomatiseer, om nie in die kode van die master.cfg-lΓͺer te hoef in te klim nie, in die hoofskrip van die rac_gui.tcl-program in die kopskrif, is lyne met die huidige weergawe en vrystelling bygevoeg:
Daar moet hier kennis geneem word dat, aangesien die gasheer ook gebruik word vir die handsamestelling van pakkette, die samestelling langs die standaard paaie sal plaasvind.
Om die korrekte vrystelling- en weergawenommers te stel, word 'n standaard sed-oproep gebruik, m.a.w. die opdrag vervang die waardes binne die spesifikasielΓͺer met die nodige
Ons kopieer die voltooide saamgestelde pakket en die argief met die bronkodes na die meester. Maar u kan lΓͺers onmiddellik vanaf die werkende een na u bewaarplek of na die webwerf kopieer.
Dit is die einde van RPM. Kom ons begin nou om die algoritme vir die bou van 'n DEB-pakket te beskryf. Aangesien die prosesse van die bou van pakkette vir verskillende stelsels onafhanklik van mekaar is, sal baie stappe herhaal word.
Vir 'n RPM-pakket word sommige van die volgende prosedures deur rpm self gedoen wanneer dit gebou word en word binne die spesifikasie beskryf, vir debian moet jy dit hier doen:
Ons stoor die lΓͺer en jy kan probeer om die towenaardiens te begin:
systemctl restart buildbot-master
In die log sal ons kyk dat alles in orde is met die konfigurasie en dat alles normaal werk. Al ons werkers behoort nou te koppel, wat gelukkig in die »»'/home/buildbot/master/twistd.log»»'-logboek aangemeld sal word:
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
Dit voltooi die opstelproses. U kan die huidige toestand deur die web-morde sien. Waar jy ook boufoute kan sien, 'n gevriesde proses kan skop as iets verkeerd geloop het, ens.
Onmiddellik na die bekendstelling van ons harde werkers, kan jy deur die spyskaart "Builds" -> "Werkers" sien
Nadat die eerste bouproses gedoen is (d.w.s. veranderinge in die Git-bewaarplek), sal die status van die prosesse op die eerste bladsy verskyn.
As jy met die muis op die verlangde reΓ«l klik, sal 'n bladsy oopmaak met die huidige stand van hierdie proses, waar jy kan sien wat gebeur, watter foute, ens.