Wiwit buildbot minangka sistem sing disebarake, mula logis kanggo nggawe host mbangun sing kapisah kanggo saben arsitektur lan sistem operasi. Ing kasus kita, iki bakal dadi wadah LXC (ing kasus Linux) lan qemu (ing kasus Windows):
vm-srv-build1 - centos 7, bakal ana master buildbot lan salah sawijining buruh
vm-srv-build2 - debian 10, kanggo mbangun paket DEB
vm-srv-build3 - windows 10, kanggo perakitan, sampeyan ngerti apa
Kita bakal ngumpulake Rac GUI - antarmuka grafis kanggo 1C rac kanggo ngatur kluster server. Kanggo Linux, alat standar kanggo saben OS bakal digunakake; kanggo mbangun file exe kanggo Windows saka skrip tcl, gunakake freewrap.
Instalasi
GNU / Linux
Ana cukup dokumentasi ing Internet kanggo instalasi 1,2. Ya, lan ora nyebabake masalah khusus:
Kanggo master:
Mesthi, bakal luwih bener kanggo ngumpulake paket kanggo saben OS, nanging iki ngluwihi ruang lingkup artikel kasebut. Kita uga bakal ngilangi katrangan babagan nyiyapake kontaner kanggo karya, aku mung bakal ngelingake yen aku nggunakake ProxMox VE. Lan sampeyan uga kudu nginstal paket kanggo saben sumbu sing dibutuhake kanggo perakitan (centos: rpmdevtools, etc.; debian: build-essential, dh-make, pbuilder, etc.)
Mbangun proyek lan layanan buildbot bakal diluncurake minangka pangguna sing ora duwe hak istimewa, dadi sampeyan kudu nggawe siji ing kabeh host sing melu proses kasebut:
adduser buildbot
Sabanjure, kita bakal ngatur peluncuran layanan otomatis, masing-masing, ing saben host (wadhah):
Sawise iki, sampeyan bisa nggawe infrastruktur direktori kanggo "buruh" (ing kabeh host), kanggo nindakake iki, ndhaftar ing pangguna buildbot lan jalanake perintah ing ngisor iki:
Ing host pisanan 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
Ing host kapindho 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
Ing host buruh, layanan buildbot-worker bisa diwiwiti
systemctl start buildbot-worker
MS Windows
Minangka "pekerja" kanggo perakitan ing Windows, mesin virtual kanthi rilis paling anyar saka Win10 bakal digunakake.
Kanggo karya sampeyan kudu:
Sawise kabeh diinstal ing ndhuwur, sampeyan bisa nginstal buildbot dhewe:
pip install buildbot-worker
Ayo nggawe direktori kerja
md c:worker
Lan ayo diluncurake
buildbot-worker start c:worker
Yen kabeh bisa digunakake (pirsani log c:workertwistd.log), sampeyan bisa ndhaptar "pegawe" kita minangka layanan kanthi nambahake item karo direktori kerja menyang registri (perintah dieksekusi ing powershell sing mlaku minangka administrator):
Sing kabeh karo "buruh", sampeyan ora kudu ndemek wong luwih, kabeh kontrol teka saka master.
Persiyapan Wisaya
Kanggo miwiti, ayo nggawe infrastruktur kanggo master (ing host utama), kanggo nindakake iki, ndhaptar ing pangguna buildbot lan jalanake perintah ing ngisor iki:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Kanggo paket sing wis siap, gawe direktori mbangun
mkdir /home/buildbot/builds
File master.cfg digawe ing direktori /home/buildbot/master/. Berkas iki minangka kode python lan ngemot katrangan babagan kabeh mekanisme sistem; kita bakal bisa nggarap ing mangsa ngarep.
Kanggo ngotomatisasi pangumpulan paket saka macem-macem versi, supaya ora kudu nyelidiki kode file master.cfg, ing skrip utama program rac_gui.tcl, baris karo versi saiki lan rilis ditambahake ing header. :
Lan adhedhasar garis kasebut, buildbot bakal menehi nomer paket. Kanggo ngekstrak data, gunakake telpon console grep. Ing buildbot sampeyan ora bisa nemtokake variabel kanggo "pekerja" (paling ora, aku durung nemokake carane). Iki minangka properti sing digunakake. Sing. Ing proses perakitan, kita nambah langkah-langkah kanggo nemtokake versi lan rilis lan, kanthi mangkono, nyetel sifat versi lan rilis. Properti bisa disetel kanthi macem-macem cara, ing kasus iki kanthi nelpon printah console:
Kita nyalin paket sing wis rampung lan arsip kanthi sumber menyang master. Nanging sampeyan bisa langsung nyalin file saka file karya menyang repositori utawa situs web.
Kanggo paket RPM, sawetara prosedur ing ngisor iki ditindakake dening rpm dhewe sajrone perakitan lan diterangake ing spek kasebut; kanggo Debian, sampeyan kudu nindakake ing kene:
Simpen file lan sampeyan bisa nyoba miwiti layanan tuntunan:
systemctl restart buildbot-master
Ing log, kita bakal mriksa manawa kabeh wis cocog karo konfigurasi lan kabeh bisa digunakake kanthi normal. Kabeh buruh kita saiki kudu nyambung, sing bakal dilaporake ing 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
Iki ngrampungake proses persiyapan. Sampeyan bisa ndeleng status saiki liwat antarmuka web. Ing ngendi sampeyan uga bisa ndeleng kesalahan mbangun, nyepak proses beku yen ana sing salah, lsp.
Sanalika sawise diluncurake, para pekerja keras bisa dideleng liwat menu "Builds" -> "Workers"
Sawise proses mbangun pisanan rampung (yaiku owah-owahan menyang repositori Git), status proses bakal katon ing kaca pisanan.
Yen sampeyan ngeklik garis sing dikarepake nganggo mouse, kaca bakal mbukak kanthi kahanan saiki proses iki, ing ngendi sampeyan bisa ndeleng apa sing kedadeyan, kesalahan apa, lsp.
Kabeh konfigurasi tuntunan bisa ditemokake ing kene