Tungod kay ang buildbot usa ka sistema nga gipang-apod-apod, makatarunganon nga maghimo usa ka lahi nga host sa pagtukod alang sa matag arkitektura ug operating system. Sa among kaso, kini mahimong mga sudlanan sa LXC (sa kaso sa Linux) ug qemu (sa kaso sa Windows):
vm-srv-build1 - centos 7, naay buildbot master ug usa sa mga trabahante
vm-srv-build2 - debian 10, alang sa pagtukod sa mga pakete sa DEB
vm-srv-build3 - windows 10, alang sa asembliya, nahibal-an nimo kung unsa
Magkolekta kami Rac GUI - usa ka graphical interface alang sa 1C rac alang sa pagdumala sa usa ka pungpong sa mga server. Alang sa Linux, gamiton ang standard nga mga himan alang sa matag OS; sa paghimo og exe file para sa Windows gikan sa tcl script, gamita freewrap.
Pag-instalar
GNU / Linux
Adunay igo nga dokumentasyon sa Internet alang sa pag-instalar 1,2. Oo, ug dili kini hinungdan sa bisan unsang espesyal nga mga problema:
Para sa master:
Siyempre, mas husto ang pagkolekta sa mga pakete alang sa matag OS, apan kini labaw pa sa sakup sa artikulo. Isalikway usab namo ang paghulagway sa pag-set up sa mga sudlanan alang sa trabaho, mamatikdan lang nako nga gigamit nako ang ProxMox VE. Ug kinahanglan usab nimo nga i-install ang mga pakete alang sa matag axis nga gikinahanglan alang sa asembliya (centos: rpmdevtools, ug uban pa; debian: build-essential, dh-make, pbuilder, etc.)
Ang mga proyekto sa paghimo ug mga serbisyo sa buildbot ilunsad ingon usa ka dili pribilihiyo nga tiggamit, mao nga kinahanglan nimo nga maghimo usa sa tanan nga mga host nga nag-apil sa proseso:
adduser buildbot
Sunod, among i-configure ang awtomatikong paglansad sa mga serbisyo, matag usa, sa matag usa sa mga host (mga sulud):
Tungod kay ang tanan nga mga script (sa among kaso) nahimutang sa / usr / local /, kinahanglan nimo nga ibutang ang agianan ngadto kanila sa mga variable sa palibot:
Pagkahuman niini, mahimo ka maghimo usa ka imprastraktura sa direktoryo alang sa "mga trabahante" (sa tanan nga mga host), aron mahimo kini, pagrehistro sa ilawom sa user sa buildbot ug pagdagan ang mga musunud nga mando:
Sa unang host 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
Sa ikaduhang host 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
Sa mga host sa trabahante, ang serbisyo sa buildbot-worker mahimong masugdan
systemctl start buildbot-worker
MS Windows
Isip usa ka "trabahador" alang sa asembliya ubos sa Windows, usa ka virtual machine nga adunay pinakabag-o nga pagpagawas sa Win10 ang gamiton.
Aron magtrabaho kinahanglan nimo:
Human ma-install ang tanan sa ibabaw, mahimo nimong i-install ang buildbot mismo:
pip install buildbot-worker
Magbuhat ta ug working directory
md c:worker
Ug maglansad ta
buildbot-worker start c:worker
Kung ang tanan molihok (tan-awa ang log c:workertwistd.log), nan mahimo nimong irehistro ang among "mamumuo" ingon usa ka serbisyo pinaagi sa pagdugang usa ka butang nga adunay direktoryo nga nagtrabaho sa rehistro (ang mga mando gipatuman sa powershell nga nagdagan ingon administrador):
Kana ang tanan sa "mga mamumuo", dili nimo kinahanglan nga hikapon pa sila, ang tanan nga kontrol gikan sa agalon.
Pag-setup sa wizard
Sa pagsugod, maghimo kita og imprastraktura para sa master (sa main host), aron mahimo kini, magparehistro ubos sa user sa buildbot ug padagana ang mosunod nga mga sugo:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Alang sa andam nga mga pakete, paghimo usa ka direktoryo sa pagtukod
mkdir /home/buildbot/builds
Nahimo ang master.cfg file sa /home/buildbot/master/ directory. Ang kini nga file usa ka code sa python ug adunay usa ka paghulagway sa tanan nga mga mekanismo sa sistema; buhaton namon kini sa umaabot.
Aron ma-automate ang asembliya sa mga pakete sa lain-laing mga bersyon, aron dili kinahanglan nga masusi ang code sa master.cfg file, sa main script sa rac_gui.tcl nga programa, ang mga linya nga adunay kasamtangan nga bersyon ug pagpagawas gidugang sa header :
Ug base sa kini nga mga linya, ang buildbot mag-numero sa mga pakete. Aron makuha ang datos, gamita ang console grep call. Sa buildbot dili nimo mahibal-an ang mga variable alang sa "mga trabahante" (labing menos, wala nako nakit-an kung giunsa). Kini ang gigamit nga mga kabtangan. Mga. Sa proseso sa asembliya, gidugang namon ang mga lakang aron mahibal-an ang bersyon ug pagpagawas ug, sumala niana, itakda ang bersyon ug pagpagawas sa mga kabtangan. Ang mga kabtangan mahimong itakda sa lainlaing mga paagi, sa kini nga kaso pinaagi sa pagtawag sa mando sa console:
Angay nga matikdan dinhi nga tungod kay ang host gigamit usab alang sa manwal nga pag-assemble sa mga pakete, ang asembliya mahitabo subay sa standard nga mga agianan.
Aron itakda ang husto nga pagpagawas ug mga numero sa bersyon, gamita ang usa ka standard sed call, i.e. gipulihan sa mando ang mga kantidad sa sulod sa spec file sa mga gikinahanglan
Gikopya namo ang nahuman nga gitigum nga pakete ug ang archive nga adunay mga tinubdan ngadto sa agalon. Apan mahimo nimong kopyahon dayon ang mga file gikan sa imong file sa trabaho sa imong repository o website.
Atong sugdan ang proseso sa pagkopya sa mga nakolekta nga pakete ngadto sa pag-host pinaagi sa FTP sa agalon. Alang niini nga katuyoan kini gigamit script sa tcl.
Mao na sa RPM. Karon magsugod kita sa paghulagway sa algorithm alang sa pagtukod sa usa ka DEB package. Tungod kay ang mga proseso alang sa pagtukod og mga pakete alang sa lainlaing mga sistema independente sa usag usa, daghang mga lakang ang sublion.
Alang sa usa ka RPM nga pakete, ang pipila sa mga mosunod nga mga pamaagi gihimo sa rpm mismo sa panahon sa asembliya ug gihulagway sa sulod sa spec; alang sa Debian, kinahanglan nimo kini buhaton dinhi:
I-save ang file ug mahimo nimong sulayan pagsugod ang serbisyo sa wizard:
systemctl restart buildbot-master
Sa log atong susihon nga ang tanan naa sa config ug ang tanan nagtrabaho sama sa normal. Ang tanan namong mga trabahante kinahanglan na nga magkonektar, nga malipayong i-report sa log »»'/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
Nakompleto niini ang proseso sa pag-setup. Mahimo nimong tan-awon ang kasamtangan nga status pinaagi sa web interface. Kung asa nimo makita ang mga sayup sa pagtukod, pagpatid sa usa ka nagyelo nga proseso kung adunay sayup, ug uban pa.
Diha-diha dayon pagkahuman sa paglansad, ang among mga kugihan nga mamumuo mahimong matan-aw pinaagi sa menu nga "Mga Pagtukod" -> "Mga Trabaho"
Human makompleto ang unang proseso sa pagtukod (ie mga kausaban sa Git repository), ang status sa mga proseso makita sa unang panid.
Kung imong i-klik ang gusto nga linya gamit ang mouse, usa ka panid ang magbukas sa karon nga kahimtang sa kini nga proseso, diin makita nimo kung unsa ang nahitabo, kung unsa ang mga sayup, ug uban pa.