Buildbot sistema banatua denez, logikoa litzateke arkitektura eta sistema eragile bakoitzerako eraikuntza ostalari bat sortzea. Gure kasuan, hauek izango dira LXC edukiontziak (Linux-en kasuan) eta qemu (Windows-en kasuan):
vm-srv-build1 - centos 7, buildbot maisua eta langileetako bat egongo dira
vm-srv-build2 - debian 10, DEB paketeak eraikitzeko
vm-srv-build3 - Windows 10, muntatzeko, badakizu zertarako
bilduko dugu Rac GUI β 1C rac-erako interfaze grafikoa zerbitzari multzo bat kudeatzeko. Linux-erako, sistema eragile bakoitzerako tresna estandarrak erabiliko dira; Windows-erako exe fitxategi bat eraikitzeko tcl script batetik, erabili aske biltzea.
Instalazio-
GNU / Linux
Interneten nahikoa dokumentazio dago instalatzeko 1,2. Bai, eta ez du arazo berezirik sortzen:
Maisuarentzat:
Noski, zuzenagoa izango litzateke sistema eragile bakoitzerako paketeak biltzea, baina hau artikuluaren esparrutik kanpo dago. Lanerako edukiontziak ezartzearen deskribapena ere baztertuko dugu, ProxMox VE erabiltzen dudala bakarrik ohartuko naiz. Eta muntatzeko behar diren ardatz bakoitzeko paketeak ere instalatu beharko dituzu (centos: rpmdevtools, etab.; debian: build-essential, dh-make, pbuilder, etab.)
Eraikitzeko proiektuak eta buildbot zerbitzuak pribilegiorik gabeko erabiltzaile gisa abiaraziko dira, beraz, prozesuan parte hartzen duten ostalari guztietan bat sortu behar duzu:
adduser buildbot
Ondoren, zerbitzuen abiarazte automatikoa konfiguratuko dugu, hurrenez hurren, ostalari bakoitzean (edukiontzietan):
Horren ondoren, "langile"entzako direktorio-azpiegitura bat sor dezakezu (ostalari guztietan), horretarako, erregistratu buildbot erabiltzailearekin eta exekutatu komando hauek:
vm-srv-build1 lehen ostalarian:
su - buildbot
mkdir /home/buildbot/worker
cd ~
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker vm-srv-build1:4000 CentOS 123456
Bigarren ostalariaren vm-srv-build2-n:
su - buildbot
mkdir /home/buildbot/worker
cd ~
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker vm-srv-build1:4000 Debian-10 123456
Langileen ostalarietan, buildbot-worker zerbitzua abiarazi daiteke
systemctl start buildbot-worker
MS Windows
Windows-en muntatzeko "langile" gisa, Win10-ren azken bertsioa duen makina birtual bat erabiliko da.
Lan egiteko:
Aurreko guztia instalatu ondoren, buildbot bera instala dezakezu:
pip install buildbot-worker
Sor dezagun laneko direktorio bat
md c:worker
Eta abiarazi gaitezen
buildbot-worker start c:worker
Dena funtzionatzen badu (ikus log c:workertwistd.log), orduan gure "langilea" zerbitzu gisa erregistratu dezakezu erregistroan laneko direktorioa duen elementu bat gehituz (komandoak administratzaile gisa exekutatzen ari den powershell-en exekutatzen dira):
Hori guztia "langileekin", ez duzu gehiago ukitu beharrik, kontrol guztia maisuarengandik dator.
Morroiaren konfigurazioa
Hasteko, sor dezagun maisuaren azpiegitura (ostalari nagusian), horretarako, erregistratu buildbot erabiltzailearekin eta exekutatu komando hauek:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Prestatutako paketeetarako, sortu builds direktorioa
mkdir /home/buildbot/builds
master.cfg fitxategi bat sortu da /home/buildbot/master/ direktorioan. Fitxategi hau python kodea da eta sistemaren mekanismo guztien deskribapena dauka; aurrerantzean lan egingo dugu.
Bertsio ezberdinetako paketeen muntaketa automatizatzeko, master.cfg fitxategiaren kodean sakondu beharrik ez izateko, rac_gui.tcl programaren script nagusian, goiburuan uneko bertsioa eta bertsioa duten lerroak gehitu ziren. :
Eta lerro hauetan oinarrituta, buildbot-ek paketeak zenbakituko ditu. Datuak ateratzeko, erabili kontsola grep deia. Buildbot-en ezin dituzu "langileen" aldagaiak definitu (gutxienez, ez dut nola aurkitu). Honetarako erabiltzen dira propietateak. Horiek. Muntaketa prozesuan, bertsioa eta kaleratzea zehazteko urratsak gehitzen ditugu eta, horren arabera, bertsioa eta bertsioaren propietateak ezartzen ditugu. Propietateak hainbat modutan ezar daitezke, kasu honetan kontsolaren komandoa deituz:
Bertsio- eta bertsio-zenbaki egokiak ezartzeko, erabili sed dei estandar bat, hau da. komandoak zehaztapen fitxategiaren barruan dauden balioak ordezkatzen ditu beharrezkoekin
Amaitutako paketea eta iturriekin artxiboa kopiatzen dizkiogu maisuari. Baina berehala kopiatu ditzakezu zure laneko fitxategiko fitxategiak zure biltegira edo webgunera.
Hori da RPMrekin. Orain has gaitezen DEB pakete bat eraikitzeko algoritmoa deskribatzen. Sistema ezberdinetarako paketeak eraikitzeko prozesuak elkarrengandik independenteak direnez, urrats asko errepikatuko dira.
RPM pakete baterako, prozedura hauetako batzuk rpm-k berak egiten ditu muntaian zehar eta zehaztapenen barruan deskribatzen dira; Debian-erako, hemen egin behar duzu:
Gorde fitxategia eta morroi zerbitzua abiarazten saia zaitezke:
systemctl restart buildbot-master
Erregistroan egiaztatuko dugu dena ondo dagoela konfigurazioarekin eta dena normal funtzionatzen duela. Gure langile guztiak konektatu beharko lirateke orain, eta hori pozik agertuko da »»'/home/buildbot/master/twistd.log»»' erregistroan:
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
Honek konfigurazio-prozesua amaitzen du. Uneko egoera web interfazearen bidez ikus dezakezu. Eraikitze-erroreak ere ikus ditzakezun, izoztutako prozesu bat abiarazi zerbait gaizki joan bada, etab.
Abian jarri eta berehala, gure langile gogorrak "Eraiketak" -> "Langileak" menuan ikus daitezke.
Lehenengo eraikuntza-prozesua amaitu ondoren (hau da, Git biltegian aldaketak), prozesuen egoera lehenengo orrian agertuko da.
Saguarekin nahi den lerroan klik eginez gero, orrialde bat irekiko da prozesu honen egungo egoerarekin, non zer gertatzen den, zer akats, etab.