Memandangkan buildbot ialah sistem teragih, adalah logik untuk mencipta hos binaan yang berasingan untuk setiap seni bina dan sistem pengendalian. Dalam kes kami, ini ialah bekas LXC (dalam kes Linux) dan qemu (dalam kes Windows):
vm-srv-build1 - centos 7, akan ada master buildbot dan salah seorang pekerja
vm-srv-build2 - debian 10, untuk membina pakej DEB
vm-srv-build3 - windows 10, untuk pemasangan, anda tahu untuk apa
Kami akan kumpulkan GUI Rac β antara muka grafik untuk 1C rac untuk menguruskan sekumpulan pelayan. Untuk Linux, alat standard untuk setiap OS akan digunakan; untuk membina fail exe untuk Windows daripada skrip tcl, gunakan freewrap.
Pemasangan
GNU / Linux
Terdapat dokumentasi yang mencukupi di Internet untuk pemasangan 1,2. Ya, dan ia tidak menyebabkan sebarang masalah khas:
Untuk tuan:
Sudah tentu, adalah lebih tepat untuk mengumpul pakej untuk setiap OS, tetapi ini di luar skop artikel. Kami juga akan meninggalkan perihalan menyediakan bekas untuk kerja, saya hanya akan ambil perhatian bahawa saya menggunakan ProxMox VE. Dan anda juga perlu memasang pakej untuk setiap paksi yang diperlukan untuk pemasangan (centos: rpmdevtools, dll.; debian: build-essential, dh-make, pbuilder, dll.)
Projek binaan dan perkhidmatan buildbot akan dilancarkan sebagai pengguna yang tidak mempunyai hak istimewa, jadi anda perlu membuat satu pada semua hos yang mengambil bahagian dalam proses:
adduser buildbot
Seterusnya, kami akan mengkonfigurasi pelancaran automatik perkhidmatan, masing-masing, pada setiap hos (bekas):
Selepas ini, anda boleh membuat infrastruktur direktori untuk "pekerja" (pada semua hos), untuk melakukan ini, daftar di bawah pengguna buildbot dan jalankan arahan berikut:
Pada hos pertama 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
Pada hos kedua 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
Pada hos pekerja, perkhidmatan buildbot-worker boleh dimulakan
systemctl start buildbot-worker
MS Windows
Sebagai "pekerja" untuk pemasangan di bawah Windows, mesin maya dengan keluaran terbaru Win10 akan digunakan.
Untuk bekerja anda perlukan:
Selepas semua perkara di atas dipasang, anda boleh memasang buildbot itu sendiri:
pip install buildbot-worker
Mari buat direktori kerja
md c:worker
Dan mari kita lancarkan
buildbot-worker start c:worker
Jika semuanya berfungsi (lihat log c:workertwistd.log), maka anda boleh mendaftarkan "pekerja" kami sebagai perkhidmatan dengan menambahkan item dengan direktori kerja pada pendaftaran (perintah dilaksanakan dalam powershell yang dijalankan sebagai pentadbir):
Itu sahaja dengan "pekerja", anda tidak perlu menyentuh mereka lebih jauh, semua kawalan datang dari tuan.
Persediaan wizard
Sebagai permulaan, mari kita cipta infrastruktur untuk induk (pada hos utama), untuk melakukan ini, daftar di bawah pengguna buildbot dan jalankan arahan berikut:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Untuk pakej siap sedia, buat direktori binaan
mkdir /home/buildbot/builds
Fail master.cfg telah dibuat dalam direktori /home/buildbot/master/. Fail ini ialah kod python dan mengandungi penerangan tentang semua mekanisme sistem; kami akan bekerjasama dengannya pada masa hadapan.
Untuk mengautomasikan pemasangan pakej versi yang berbeza, supaya tidak perlu menyelidiki kod fail master.cfg, dalam skrip utama program rac_gui.tcl, baris dengan versi dan keluaran semasa telah ditambahkan dalam pengepala :
Dan berdasarkan baris ini, buildbot akan menomborkan pakej. Untuk mengekstrak data, gunakan panggilan grep konsol. Dalam buildbot anda tidak boleh menentukan pembolehubah untuk "pekerja" (sekurang-kurangnya, saya tidak menemui caranya). Inilah kegunaan sifat. Itu. Dalam proses pemasangan, kami menambah langkah untuk menentukan versi dan keluaran dan, sewajarnya, menetapkan sifat versi dan keluaran. Properties boleh ditetapkan dalam pelbagai cara, dalam kes ini dengan memanggil arahan konsol:
Untuk menetapkan nombor keluaran dan versi yang betul, gunakan panggilan sed standard, i.e. arahan menggantikan nilai di dalam fail spec dengan yang diperlukan
Kami menyalin pakej siap dipasang dan arkib dengan sumber kepada tuan. Tetapi anda boleh segera menyalin fail daripada fail kerja anda ke repositori atau tapak web anda.
Itu sahaja dengan RPM. Sekarang mari kita mula menerangkan algoritma untuk membina pakej DEB. Memandangkan proses untuk membina pakej untuk sistem yang berbeza adalah bebas antara satu sama lain, banyak langkah akan diulang.
Untuk pakej RPM, beberapa prosedur berikut dilakukan oleh rpm itu sendiri semasa pemasangan dan diterangkan di dalam spesifikasi; untuk Debian, anda perlu melakukannya di sini:
Simpan fail dan anda boleh cuba memulakan perkhidmatan wizard:
systemctl restart buildbot-master
Dalam log kami akan menyemak sama ada semuanya teratur dengan konfigurasi dan semuanya berfungsi seperti biasa. Semua pekerja kami kini harus menyambung, yang dengan senang hati akan dilaporkan dalam 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
Ini melengkapkan proses persediaan. Anda boleh melihat status semasa melalui antara muka web. Di mana anda juga boleh melihat ralat binaan, memulakan proses beku jika berlaku kesilapan, dsb.
Sejurus selepas pelancaran, pekerja keras kami boleh dilihat melalui menu βBuildsβ -> βWorkersβ
Selepas proses binaan pertama selesai (iaitu perubahan pada repositori Git), status proses akan muncul pada halaman pertama.
Jika anda mengklik pada baris yang dikehendaki dengan tetikus, halaman akan dibuka dengan keadaan semasa proses ini, di mana anda boleh melihat apa yang berlaku, apa ralat, dsb.
Keseluruhan konfigurasi wizard boleh didapati di sini