مون کي سيٽ اپ ڪرڻ جي ضرورت هئي سافٽ ويئر پيڪيجز کي گڏ ڪرڻ ۽ پهچائڻ جي گٽ مخزن کان سائيٽ تي. ۽ جڏهن مون ڏٺو، ايترو گهڻو اڳ نه، هتي هبري تي هڪ آرٽيڪل تي buildbot (آخر ۾ لنڪ)، مون ان کي ڪوشش ڪرڻ ۽ ان کي لاڳو ڪرڻ جو فيصلو ڪيو.
جيئن ته buildbot هڪ ورهايل نظام آهي، اهو منطقي هوندو ته هر فن تعمير ۽ آپريٽنگ سسٽم لاءِ الڳ بلڊ هوسٽ ٺاهيو وڃي. اسان جي صورت ۾، اهي LXC ڪنٽينر هوندا (لينڪس جي صورت ۾) ۽ qemu (ونڊوز جي صورت ۾):
يقينن، اهو وڌيڪ صحيح هوندو ته هر OS لاء پيڪيجز گڏ ڪرڻ، پر اهو مضمون جي دائري کان ٻاهر آهي. اسان ڪم لاءِ ڪنٽينرز قائم ڪرڻ جي وضاحت کي به ختم ڪنداسين، مان صرف نوٽ ڪندس ته مان ProxMox VE استعمال ڪريان ٿو. ۽ توهان کي به ضرورت پوندي ته هر محور لاءِ پيڪيجز انسٽال ڪرڻ گهرجن اسيمبليءَ لاءِ (centos: rpmdevtools, etc.؛ debian: build-essential, dh-make, pbuilder, etc.)
پراجيڪٽ ٺاهيو ۽ بلڊ بوٽ سروسز هڪ غير مراعات يافته صارف جي طور تي شروع ڪيون وينديون، تنهنڪري توهان کي پروسيس ۾ حصو وٺندڙ سڀني ميزبانن تي هڪ ٺاهڻ جي ضرورت آهي:
adduser buildbot
اڳيون، اسان ترتيب ڏينداسين خدمتن جي خودڪار لانچ، ترتيب سان، هر ميزبان تي (ڪنٽينرز):
مختلف ورزن جي پيڪيجز جي اسيمبليءَ کي خودڪار ڪرڻ لاءِ، جيئن ته master.cfg فائل جي ڪوڊ ۾ داخل ٿيڻ جي ضرورت نه پوي، rac_gui.tcl پروگرام جي مکيه اسڪرپٽ ۾، هيڊر ۾ موجوده ورزن ۽ رليز جون لائينون شامل ڪيون ويون. :
۽ انهن لائينن جي بنياد تي، buildbot پيڪيجز کي نمبر ڏيندو. ڊيٽا کي ڪڍڻ لاء، استعمال ڪريو ڪنسول گريپ ڪال. buildbot ۾ توهان صرف "مزدور" لاء متغير بيان نٿا ڪري سگهو (گهٽ ۾ گهٽ، مون کي نه مليو آهي ڪيئن). اھو اھو آھي جيڪو ملڪيت لاء استعمال ڪيو ويندو آھي. اهي. اسيمبليء جي عمل ۾، اسان ورزن کي طئي ڪرڻ ۽ ڇڏڻ لاء قدم شامل ڪيو ۽، مطابق، نسخو مقرر ڪريو ۽ ملڪيت جاري ڪريو. خاصيتون مختلف طريقن سان سيٽ ڪري سگھجن ٿيون، ھن صورت ۾ ڪنسول حڪم کي ڪال ڪندي:
# Добавим определение версии из основного файла
rac_gui_build_RPM.addStep(
steps.SetPropertyFromCommand(
command="grep version ../rac-gui/rac_gui.tcl | grep -oE 'b[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}b'", property="version"
)
)
# Добавим определение релиза из основного файла
rac_gui_build_RPM.addStep(
steps.SetPropertyFromCommand(
command="grep release ../rac-gui/rac_gui.tcl | grep -oE 'b[0-9]{1,3}b'", property="release"
)
)
توھان util.Interpolate() کي ڪال ڪندي نتيجن جي قيمتن کي متبادل ڪري سگھو ٿا.
اسان مڪمل ٿيل گڏ ڪيل پيڪيج کي نقل ڪريون ٿا ۽ آرڪائيو ذريعن سان ماسٽر ڏانهن. پر توهان فوري طور تي فائلون ڪاپي ڪري سگهو ٿا توهان جي ڪم فائل مان توهان جي مخزن يا ويب سائيٽ ڏانهن.
# Скопируем файл на мастер
rac_gui_build_RPM.addStep(
steps.FileUpload(
workersrc=util.Interpolate("/home/buildbot/rpmbuild/RPMS/noarch/rac-gui-%(prop:version)s-%(prop:release)s.noarch.rpm"),
masterdest=util.Interpolate("/home/buildbot/builds/rac-gui-%(prop:version)s-%(prop:release)s.noarch.rpm")
)
)
rac_gui_build_RPM.addStep(
steps.FileUpload(
workersrc=util.Interpolate("/home/buildbot/rpmbuild/SOURCES/rac-gui-%(prop:version)s-%(prop:release)s.tar.gz"),
masterdest=util.Interpolate("/home/buildbot/builds/rac-gui-%(prop:version)s-%(prop:release)s.tar.gz")
)
)
اچو ته گڏ ڪيل پيڪيجز کي ڪاپي ڪرڻ جو عمل شروع ڪريون ماسٽر تي FTP ذريعي هوسٽنگ ڏانهن. هن مقصد لاء استعمال ڪيو ويندو آهي اسڪرپٽ tcl تي.
لاگ ۾ اسان چيڪ ڪنداسين ته هر شي ترتيب سان ترتيب ۾ آهي ۽ هر شيء عام طور تي ڪم ڪري رهي آهي. اسان جي سڀني ڪارڪنن کي ھاڻي ڳنڍڻ گھرجي، جيڪي خوشيءَ سان لاگ ۾ رپورٽ ڪيا ويندا »»'/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
هي سيٽ اپ جي عمل کي مڪمل ڪري ٿو. توھان ويب انٽرفيس ذريعي موجوده صورتحال ڏسي سگھو ٿا. جتي توهان تعميراتي غلطيون پڻ ڏسي سگهو ٿا، منجمد عمل کي ڪٽ ڪريو جيڪڏهن ڪجهه غلط ٿي ويو، وغيره.
فوري طور تي لانچ کان پوء، اسان جي محنت مزدورن کي مينيو ذريعي ڏسي سگھجي ٿو "تعمير" -> "مزدورن"
پهرين تعمير جو عمل مڪمل ٿيڻ کان پوءِ (يعني Git مخزن ۾ تبديليون)، عملن جي حالت پهرين صفحي تي ظاهر ٿيندي.
جيڪڏهن توهان مائوس سان گهربل لائن تي ڪلڪ ڪندا، هڪ صفحو هن عمل جي موجوده حالت سان کلي ويندو، جتي توهان ڏسي سگهو ٿا ته ڇا ٿي رهيو آهي، ڪهڙيون غلطيون وغيره.