Buildbot taqsimlangan tizim bo'lganligi sababli, har bir arxitektura va operatsion tizim uchun alohida qurish xostini yaratish mantiqan to'g'ri keladi. Bizning holatda, bu LXC konteynerlari (Linux uchun) va qemu (Windows uchun):
vm-srv-build1 - centos 7, u erda buildbot ustasi va ishchilardan biri bo'ladi
vm-srv-build2 - debian 10, DEB paketlarini yaratish uchun
vm-srv-build3 - Windows 10, yig'ish uchun, nima uchun bilasiz
Biz yig'amiz Rac GUI β serverlar klasterini boshqarish uchun 1C rac uchun grafik interfeys. Linux uchun har bir OT uchun standart vositalardan foydalaniladi; Windows uchun tcl skriptidan exe faylini yaratish uchun foydalaning. erkin o'rash.
sozlama
GNU / Linux
O'rnatish uchun Internetda etarli hujjatlar mavjud 1,2. Ha, va bu hech qanday maxsus muammolarni keltirib chiqarmaydi:
Usta uchun:
Albatta, har bir OS uchun paketlarni yig'ish to'g'riroq bo'lar edi, ammo bu maqola doirasidan tashqarida. Ish uchun konteynerlarni o'rnatish tavsifini ham o'tkazib yuboramiz, men faqat ProxMox VE dan foydalanayotganimni ta'kidlayman. Shuningdek, yig'ish uchun zarur bo'lgan har bir o'q uchun paketlarni o'rnatishingiz kerak bo'ladi (centos: rpmdevtools va boshqalar; debian: build-essential, dh-make, pbuilder va boshqalar).
Loyihalarni yaratish va buildbot xizmatlari imtiyozsiz foydalanuvchi sifatida ishga tushiriladi, shuning uchun jarayonda ishtirok etuvchi barcha xostlarda bittasini yaratishingiz kerak:
adduser buildbot
Keyinchalik, har bir xostda (konteynerda) mos ravishda xizmatlarning avtomatik ishga tushirilishini sozlaymiz:
Shundan so'ng siz "ishchilar" uchun (barcha xostlarda) katalog infratuzilmasini yaratishingiz mumkin, buning uchun buildbot foydalanuvchisi ostida ro'yxatdan o'ting va quyidagi buyruqlarni bajaring:
Birinchi vm-srv-build1 xostida:
su - buildbot
mkdir /home/buildbot/worker
cd ~
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker vm-srv-build1:4000 CentOS 123456
Ikkinchi xost vm-srv-build2 da:
su - buildbot
mkdir /home/buildbot/worker
cd ~
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker vm-srv-build1:4000 Debian-10 123456
Ishchi xostlarida buildbot-worker xizmati ishga tushirilishi mumkin
systemctl start buildbot-worker
MS Windows
Windows ostida yig'ish uchun "ishchi" sifatida Win10-ning so'nggi versiyasiga ega virtual mashinadan foydalaniladi.
Ishlash uchun sizga kerak bo'ladi:
Yuqoridagilarning barchasi o'rnatilgandan so'ng, siz buildbotni o'zingiz o'rnatishingiz mumkin:
pip install buildbot-worker
Keling, ishchi katalog yarataylik
md c:worker
Va ishga tushamiz
buildbot-worker start c:worker
Agar hamma narsa ishlayotgan bo'lsa (c:workertwistd.log jurnaliga qarang), u holda registrga ishchi katalogga ega elementni qo'shish orqali "ishchi" ni xizmat sifatida ro'yxatdan o'tkazishingiz mumkin (buyruqlar administrator sifatida ishlaydigan powershell-da bajariladi):
Hammasi "ishchilar" bilan, ularga qo'shimcha tegmaslik kerak, barcha nazorat ustadan keladi.
Sehrgarni sozlash
Boshlash uchun, keling, master uchun infratuzilmani yarataylik (asosiy hostda), buning uchun buildbot foydalanuvchisi ostida ro'yxatdan o'ting va quyidagi buyruqlarni bajaring:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Tayyor paketlar uchun Builds katalogini yarating
mkdir /home/buildbot/builds
/home/buildbot/master/ katalogida master.cfg fayli yaratilgan. Ushbu fayl python kodi bo'lib, tizimning barcha mexanizmlari tavsifini o'z ichiga oladi, biz kelajakda u bilan ishlaymiz.
Master.cfg faylining kodini o'rganmaslik uchun turli versiyalardagi paketlarni yig'ishni avtomatlashtirish uchun rac_gui.tcl dasturining asosiy skriptida joriy versiya va nashrga ega satrlar sarlavhaga qo'shilgan. :
Va bu qatorlarga asoslanib, buildbot paketlarni raqamlaydi. Ma'lumotlarni olish uchun konsol grep chaqiruvidan foydalaning. Buildbot-da siz "ishchilar" uchun o'zgaruvchilarni aniqlay olmaysiz (hech bo'lmaganda qanday qilib topa olmadim). Buning uchun xususiyatlar ishlatiladi. Bular. Yig'ish jarayonida biz versiya va nashrni aniqlash uchun qadamlar qo'shamiz va shunga mos ravishda versiya va nashr xususiyatlarini o'rnatamiz. Xususiyatlar turli yo'llar bilan o'rnatilishi mumkin, bu holda konsol buyrug'ini chaqirish orqali:
Bu erda shuni ta'kidlash kerakki, xost paketlarni qo'lda yig'ish uchun ham ishlatilganligi sababli, yig'ish standart yo'llar bo'ylab amalga oshiriladi.
To'g'ri nashr va versiya raqamlarini o'rnatish uchun standart sed qo'ng'iroqdan foydalaning, ya'ni. buyruq spetsifikatsiya fayli ichidagi qiymatlarni keraklilari bilan almashtiradi
Biz tayyor yig'ilgan paketni va manbalar bilan arxivni ustaga ko'chiramiz. Lekin siz darhol ish faylingizdagi fayllarni omboringizga yoki veb-saytingizga nusxalashingiz mumkin.
RPM bilan hammasi shu. Endi DEB paketini qurish algoritmini tavsiflashni boshlaymiz. Turli tizimlar uchun paketlarni yaratish jarayonlari bir-biridan mustaqil bo'lgani uchun ko'p bosqichlar takrorlanadi.
RPM to'plami uchun quyidagi protseduralarning ba'zilari montaj paytida rpmning o'zi tomonidan amalga oshiriladi va spetsifikatsiya ichida tavsiflanadi; Debian uchun buni bu erda bajarishingiz kerak:
Faylni saqlang va siz sehrgar xizmatini ishga tushirishga urinib ko'rishingiz mumkin:
systemctl restart buildbot-master
Jurnalda biz konfiguratsiya bilan hamma narsa tartibda ekanligini va hamma narsa odatdagidek ishlayotganini tekshiramiz. Endi barcha ishchilarimiz ulanishi kerak, bu haqda »»'/home/buildbot/master/twistd.log»»' jurnalida mamnuniyat bilan xabar qilinadi:
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
Bu sozlash jarayonini yakunlaydi. Joriy holatni veb-interfeys orqali ko'rishingiz mumkin. Qurilish xatolarini ko'rishingiz mumkin, agar biror narsa noto'g'ri bo'lsa, muzlatilgan jarayonni oching va hokazo.
Ishga tushirilgandan so'ng, bizning mehnatkashlarimizni "Qurilishlar" -> "Ishchilar" menyusi orqali ko'rish mumkin.
Birinchi qurish jarayoni tugagandan so'ng (ya'ni, Git omboriga o'zgartirishlar), jarayonlarning holati birinchi sahifada paydo bo'ladi.
Agar siz sichqoncha bilan kerakli qatorni bossangiz, ushbu jarayonning hozirgi holati bilan sahifa ochiladi, unda nima sodir bo'layotganini, qanday xatolarni va hokazolarni ko'rishingiz mumkin.
Sehrgarning to'liq konfiguratsiyasini bu erda topish mumkin