Ọ dị m mkpa ịtọlite usoro nke ikpokọta na ibuga ngwugwu ngwanrọ site na ebe nchekwa Git gaa na saịtị ahụ. Ma mgbe m hụrụ, ọ bụghị ogologo oge gara aga, ebe a na Habré isiokwu na buildbot (njikọ na njedebe), ekpebiri m ịnwale ya ma tinye ya n'ọrụ.
Ebe ọ bụ na buildbot bụ sistemụ kesara, ọ ga-abụ ihe ezi uche dị na ya imepụta onye nrụpụta ihe dị iche iche maka ụlọ ọ bụla na sistemụ arụmọrụ. N'ọnọdụ anyị, ndị a ga-abụ akpa LXC (n'ihe gbasara Linux) na qemu (n'ihe gbasara Windows):
vm-srv-build1 - centos 7, a ga-enwe onye na-ewu ụlọ na otu n'ime ndị ọrụ.
vm-srv-build2 - debian 10, maka iwuli ngwugwu DEB
vm-srv-build3 - windows 10, maka mgbakọ, ị maara ihe maka
Anyị ga-anakọta Ngwa GUI - interface eserese maka 1C rac maka ijikwa ụyọkọ nke sava. Maka Linux, a ga-eji ngwaọrụ ọkọlọtọ maka OS ọ bụla iji wuo faịlụ exe maka Windows site na edemede tcl, jiri freewrap.
ọnọdụ
GNU / Linux
Enwere akwụkwọ zuru ezu na ịntanetị maka nrụnye 1,2. Ee, ma ọ dịghị akpata nsogbu pụrụ iche:
Maka nna ukwu:
N'ezie, ọ ga-abụ ihe ziri ezi ịnakọta ngwugwu maka OS ọ bụla, mana nke a karịrị oke isiokwu ahụ. Anyị ga-ahapụkwa nkọwa nke ịtọ arịa maka ọrụ, naanị m ga-achọpụta na m na-eji ProxMox VE. Ị ga-achọkwa ịwụnye ngwugwu maka axis ọ bụla achọrọ maka mgbakọ (centos: rpmdevtools, wdg; debian: ihe dị mkpa, dh-make, pbuilder, wdg.)
A ga-ewepụta ọrụ wulite yana ọrụ buildbot dị ka onye ọrụ na-enweghị ohere, yabụ ịkwesịrị ịmepụta otu na ndị ọbịa niile na-esonye na usoro a:
adduser buildbot
Na-esote, anyị ga-ahazi mmalite mmalite nke ọrụ, n'otu n'otu, na nke ọ bụla n'ime ndị ọbịa (container):
Mgbe nke a gasịrị, ị nwere ike ịmepụta akụrụngwa ndekọ aha maka "ndị ọrụ" (na ndị ọbịa niile), iji mee nke a, debanye aha n'okpuru onye ọrụ buildbot wee mee iwu ndị a:
Na onye ọbịa mbụ 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
Na onye ọbịa nke abụọ 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
Na ndị na-elekọta ndị ọrụ, enwere ike ịmalite ọrụ onye na-ewu ụlọ
systemctl start buildbot-worker
MS Windows
Dịka “onye ọrụ” maka mgbakọ n'okpuru Windows, a ga-eji igwe mebere nke nwere mwepụta Win10 kachasị ọhụrụ.
Iji rụọ ọrụ ị ga-achọ:
Mgbe etinyere ihe niile dị n'elu, ị nwere ike ịwụnye buildbot n'onwe ya:
pip install buildbot-worker
Ka anyị mepụta ndekọ na-arụ ọrụ
md c:worker
Ka anyị malite
buildbot-worker start c:worker
Ọ bụrụ na ihe niile na-arụ ọrụ (lee log c: workertwistd.log), ị nwere ike ịdebanye aha "onye ọrụ" anyị dị ka ọrụ site na ịgbakwunye otu ihe na akwụkwọ ndekọ aha na ndekọ (a na-eme iwu na powershell na-agba ọsọ dị ka onye nchịkwa):
Nke ahụ bụ ihe niile na "ndị ọrụ", ịkwesighi imetụ ha aka ọzọ, njikwa niile sitere na nna ukwu.
Ntọlite ọkachamara
Iji malite, ka anyị mepụta akụrụngwa maka nna ukwu (na onye isi ụlọ ọrụ), iji mee nke a, debanye aha n'okpuru onye ọrụ buildbot wee mee iwu ndị a:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Maka ngwugwu emebere, mepụta ndekọ na-ewuli elu
mkdir /home/buildbot/builds
Emepụtara faịlụ master.cfg na /home/buildbot/master/ directory. Faịlụ a bụ koodu Python ma nwee nkọwa nke usoro niile nke sistemu anyị ga-arụ ọrụ na ya n'ọdịnihu.
Iji megharịa mgbakọ nke ngwugwu nke nsụgharị dị iche iche, ka ị ghara ịbanye na koodu nke master.cfg faịlụ, na isi edemede nke mmemme rac_gui.tcl, agbakwunyere ahịrị ndị nwere ụdị ugbu a na ntọhapụ na nkụnye eji isi mee ihe. :
Na dabere na ahịrị ndị a, buildbot ga-agụta ngwugwu. Iji wepụ data, jiri ọkpụkpọ grep console. Na buildbot ị nweghị ike ịkọwapụta mgbanwe maka “ndị ọrụ” (opekata mpe, ahụbeghị m otu). Nke a bụ ihe eji eme ihe. Ndị ahụ. N'ime usoro mgbakọ ahụ, anyị na-agbakwunye usoro iji chọpụta ụdị na ntọhapụ na, ya mere, tọọ ụdị na ntọhapụ Njirimara. Enwere ike ịtọ akụrụngwa n'ụzọ dị iche iche, na nke a site na ịkpọ iwu njikwa:
# Добавим определение версии из основного файла
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"
)
)
Ị nwere ike dochie ụkpụrụ ndị na-esi na ya pụta site na ịkpọ util.Interpolate().
Anyị na-eṅomi ngwugwu agbakọtara emecha na ebe nchekwa ahụ nwere isi mmalite nye nna ukwu. Mana ị nwere ike detuo faịlụ ozugbo site na faịlụ ọrụ gị na ebe nchekwa ma ọ bụ webụsaịtị gị.
# Скопируем файл на мастер
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")
)
)
Ka anyị bido usoro nke iṅomi ngwugwu anakọtara na nnabata site na FTP na nna ukwu. Maka nzube a, a na-eji ya edemede na tcl.
Nke ahụ bụ ya na RPM. Ugbu a, ka anyị bido kọwapụta algọridim maka iwulite ngwugwu DEB. Ebe ọ bụ na usoro maka ịmepụta ngwugwu maka usoro dị iche iche na-adabere na ibe ha, a ga-emeghachi ọtụtụ nzọụkwụ.
rac_gui_build_DEB = util.BuildFactory()
rac_gui_build_DEB.addStep(steps.Git(
repourl = 'https://bitbucket.org/svk28/rac-gui.git',
haltOnFailure = True,
submodules = True,
mode='full',
workdir='build',
progress = True)
)
# Добавим определение версии из основного файла
rac_gui_build_DEB.addStep(
steps.SetPropertyFromCommand(
command="grep version rac_gui.tcl | grep -oE 'b[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}b'", property="version"
)
)
# Добавим определение релиза из основного файла
rac_gui_build_DEB.addStep(
steps.SetPropertyFromCommand(
command="grep release rac_gui.tcl | grep -oE 'b[0-9]{1,3}b'", property="release"
)
)
# Переименуем запускаемый файл
rac_gui_build_DEB.addStep(steps.ShellCommand(
command=["mv", "rac_gui.tcl", "racgui"]))
Maka ngwugwu RPM, ụfọdụ usoro ndị a na-eme site na rpm n'onwe ya n'oge mgbakọ ma kọwaa ya n'ime nkọwa maka Debian, ị ga-eme ya ebe a:
# Поменяем пути к библиотекам
rac_gui_build_DEB.addStep(steps.ShellCommand(
command=["sed", "-i", "s+^set dir(lib)+set dir(lib) /usr/share/rac-gui/lib ;#+g", "racgui"]))
# Поменяем пути к файлам
rac_gui_build_DEB.addStep(steps.ShellCommand(
command=["sed", "-i", "s+[pwd]+/usr/share/rac-gui+g", "racgui"]))
# заархивируем исходники
rac_gui_build_DEB.addStep(steps.ShellCommand(
command=["tar", "czf", util.Interpolate("../rac-gui_%(prop:version)s.orig.tar.gz"), "."]))
# Соберём пакет
rac_gui_build_DEB.addStep(steps.ShellCommand(
command=["dpkg-buildpackage"]))
# Скопируем файл на мастер
rac_gui_build_DEB.addStep(
steps.FileUpload(
workersrc=util.Interpolate("../rac-gui_%(prop:version)s-%(prop:release)s_amd64.deb"),
masterdest=util.Interpolate("/home/buildbot/builds/rac-gui_%(prop:version)s-%(prop:release)s_amd64.deb")
)
)
rac_gui_build_DEB.addStep(
steps.MasterShellCommand(
command=["/usr/local/bin/deploy-ftp.tcl",
util.Interpolate("--local-file=/home/buildbot/builds/rac-gui_%(prop:version)s-%(prop:release)s_amd64.deb"),
util.Interpolate("--remote-file=uploads/rac-gui/rac-gui_%(prop:version)s-%(prop:release)s_amd64.deb")]
)
)
Chekwaa faịlụ ma ị nwere ike ịgbalị ịmalite ọrụ ọkachamara:
systemctl restart buildbot-master
Na log anyị ga-elele na ihe niile dị na nhazi na ihe niile na-arụ ọrụ dị ka nkịtị. Ndị ọrụ anyị niile kwesịrị ijikọ ugbu a, nke a ga-eji obi ụtọ kọọ na ndekọ »'/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
Nke a na-emecha usoro nhazi. Ị nwere ike ịlele ọkwa dị ugbu a site na ntanetị weebụ. Ebe ị nwekwara ike ịhụ mperi mperi, gbanye usoro oyi kpọnwụrụ ma ọ bụrụ na ihe adịghị mma, wdg.
Ozugbo mwepụta ahụ gasịrị, enwere ike ịhụ ndị ọrụ anyị siri ike site na menu “ewu” -> “Ndị ọrụ”
Mgbe emechara usoro iwu mbụ (ya bụ mgbanwe na ebe nchekwa Git), ọnọdụ nke usoro ahụ ga-apụta na ibe mbụ.
Ọ bụrụ na ị pịa akara achọrọ na òké ahụ, ibe ga-emeghe na ọnọdụ nke usoro a ugbu a, ebe ị nwere ike ịhụ ihe na-eme, ihe njehie, wdg.