Pono wau e hoʻonohonoho i ke kaʻina hana o ka hui ʻana a me ka hāʻawi ʻana i nā pūʻolo polokalamu mai kahi waihona Git i ka pūnaewele. A i koʻu ʻike ʻana, ʻaʻole i lōʻihi ma mua, eia ma Habré kahi ʻatikala ma buildbot (ka loulou ma ka hopena), ua hoʻoholo wau e hoʻāʻo a hoʻohana.
No ka mea he ʻōnaehana māhele ʻia ʻo buildbot, pono e hana i kahi hale kūkulu kaʻawale no kēlā me kēia hale hana a me ka ʻōnaehana hana. I kā mākou hihia, ʻo kēia nā pahu LXC (i ka hihia o Linux) a me qemu (i ka hihia o Windows):
vm-srv-build1 - centos 7, aia kahi haku buildbot a me kekahi o nā limahana
vm-srv-build2 - debian 10, no ke kūkulu ʻana i nā pūʻolo DEB
vm-srv-build3 - windows 10, no ka hui, ʻike ʻoe no ka mea
E hōʻiliʻili mākou Rac GUI - he kikowaena kiʻi no ka 1C rac no ka mālama ʻana i kahi pūʻulu o nā kikowaena. No Linux, e hoʻohana ʻia nā mea hana maʻamau no kēlā me kēia OS; e kūkulu i kahi faila exe no Windows mai kahi palapala tcl, hoʻohana freewrap.
Kāu Mau Koho Paʻamau
GNU / Linux
Ua lawa nā palapala ma ka Pūnaewele no ke kau ʻana 1,2. ʻAe, ʻaʻole ia he pilikia kūikawā:
No ka haku:
ʻOiaʻiʻo, ʻoi aku ka pololei o ka hōʻiliʻili ʻana i nā pūʻolo no kēlā me kēia OS, akā aia kēia ma waho o ke kiko o ka ʻatikala. E haʻalele mākou i ka wehewehe ʻana o ka hoʻonohonoho ʻana i nā ipu no ka hana, e hoʻomaopopo wale wau e hoʻohana wau iā ProxMox VE. A pono ʻoe e hoʻokomo i nā pūʻolo no kēlā me kēia axis i koi ʻia no ka hui ʻana (centos: rpmdevtools, etc.; debian: build-essential, dh-make, pbuilder, etc.)
E hoʻokuʻu ʻia nā papahana kūkulu a me nā lawelawe buildbot ma ke ʻano he mea hoʻohana pono ʻole, no laila pono ʻoe e hana i hoʻokahi ma nā pūʻali āpau e komo ana i ke kaʻina hana:
adduser buildbot
A laila, e hoʻonohonoho mākou i ka hoʻomaka ʻana o nā lawelawe, i kēlā me kēia, ma kēlā me kēia o nā pūʻali (nā pahu):
Ma hope o kēia, hiki iā ʻoe ke hana i kahi ʻōnaehana papa kuhikuhi no "nā limahana" (ma nā pūʻali āpau), e hana i kēia, e hoʻopaʻa inoa ma lalo o ka mea hoʻohana buildbot a holo i kēia mau kauoha:
Ma ka mea hoʻokipa mua 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
Ma ka lua o ka host 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
Ma nā pūʻali limahana, hiki ke hoʻomaka ka lawelawe buildbot-worker
systemctl start buildbot-worker
MS Windows
Ma ke ʻano he "mea hana" no ka hui ʻana ma lalo o Windows, e hoʻohana ʻia kahi mīkini virtual me ka hoʻokuʻu hou o Win10.
No ka hana, pono ʻoe:
Ma hope o ka hoʻokomo ʻia ʻana o nā mea i luna, hiki iā ʻoe ke hoʻokomo i ka buildbot ponoʻī:
pip install buildbot-worker
E hana kākou i papa kuhikuhi hana
md c:worker
A e hoʻomaka kākou
buildbot-worker start c:worker
Inā holo nā mea a pau (e ʻike i ka log c:workertwistd.log), a laila hiki iā ʻoe ke hoʻopaʻa inoa i kā mākou "mea hana" ma ke ʻano he lawelawe ma ka hoʻohui ʻana i kahi mea me ka papa kuhikuhi hana i ka papa inoa (e hoʻokō ʻia nā kauoha ma ka powerhell e holo ana ma ke ʻano he luna hoʻomalu):
ʻO nā mea a pau me ka "limahana",ʻaʻole ponoʻoe e hoʻopā aku iā lākou,ʻo ka mana a pau mai ka haku.
Hoʻonohonoho kupua
No ka hoʻomaka ʻana, e hana mākou i ka ʻōnaehana no ka haku (ma ka host nui), e hana i kēia, e hoʻopaʻa inoa ma lalo o ka mea hoʻohana buildbot a holo i kēia mau kauoha:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
No nā pūʻolo i hoʻomākaukau ʻia, e hana i kahi papa kuhikuhi kūkulu
mkdir /home/buildbot/builds
Ua hana ʻia kahi faila master.cfg ma ka papa kuhikuhi /home/buildbot/master/. He code python kēia faila a loaʻa iā ia ka wehewehe ʻana i nā hana a pau o ka ʻōnaehana; e hana pū mākou me ia i ka wā e hiki mai ana.
No ka hoʻomaʻamaʻa ʻana i ka hui ʻana o nā pūʻulu o nā ʻano like ʻole, i ʻole e komo i loko o ke code o ka faile master.cfg, i ka palapala nui o ka papahana rac_gui.tcl, ua hoʻohui ʻia nā laina me ka mana o kēia manawa a me ka hoʻokuʻu ʻana i ke poʻo. :
A ma muli o kēia mau laina, e helu ʻo buildbot i nā pūʻolo. No ka unuhi ʻana i ka ʻikepili, e hoʻohana i ka console grep call. I ka buildbot ʻaʻole hiki iā ʻoe ke wehewehe i nā mea hoʻololi no nā "limahana" (ma ka liʻiliʻi, ʻaʻole wau i ʻike pehea). ʻO kēia ka mea e hoʻohana ʻia ai nā waiwai. ʻO kēlā mau mea. Ma ke kaʻina hana, hoʻohui mākou i nā ʻanuʻu e hoʻoholo ai i ka mana a me ka hoʻokuʻu ʻana a, no laila, hoʻonohonoho i ka mana a me nā waiwai hoʻokuʻu. Hiki ke hoʻonohonoho ʻia nā waiwai ma nā ʻano like ʻole, i kēia hihia ma ke kāhea ʻana i ke kauoha console:
# Добавим определение версии из основного файла
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"
)
)
Hiki iā ʻoe ke hoʻololi i nā waiwai i loaʻa ma ke kāhea ʻana iā util.Interpolate().
No ka hoʻonohonoho ʻana i ka hoʻokuʻu kūpono a me nā helu helu, e hoʻohana i kahi kelepona sed maʻamau, ʻo ia hoʻi. hoʻololi ke kauoha i nā waiwai i loko o ka faila kikoʻī me nā mea e pono ai
Hoʻopili mākou i ka pūʻolo i hui ʻia a me ka waihona me nā kumu i ka haku. Akā hiki iā ʻoe ke kope koke i nā faila mai kāu faila hana i kāu waihona a i ʻole pūnaewele.
# Скопируем файл на мастер
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")
)
)
E hoʻomaka kākou i ke kaʻina hana o ke kope ʻana i nā pūʻolo i hōʻiliʻili ʻia i ka hoʻokipa ma o FTP ma ka haku. No kēia kumu hoʻohana ʻia palapala ma tcl.
ʻO ia me RPM. I kēia manawa e hoʻomaka kākou e wehewehe i ka algorithm no ke kūkulu ʻana i kahi pūʻolo DEB. No ke kūʻokoʻa ʻana o nā kaʻina hana no ke kūkulu ʻana i nā pūʻolo no nā ʻōnaehana like ʻole, e hana hou ʻia nā pae he nui.
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"]))
No kahi pūʻolo RPM, hana ʻia kekahi o nā kaʻina hana e ka rpm ponoʻī i ka wā o ka hui ʻana a wehewehe ʻia i loko o ka spec; no Debian, pono ʻoe e hana ma aneʻi:
# Поменяем пути к библиотекам
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")]
)
)
E mālama i ka faila a hiki iā ʻoe ke hoʻomaka i ka lawelawe wizard:
systemctl restart buildbot-master
Ma ka log e nānā mākou ua kūpono nā mea a pau me ka config a ke hana nei nā mea a pau e like me ka mea maʻamau. Pono nā limahana a pau e hoʻopili i kēia manawa, e hōʻike ʻia me ka hauʻoli ma ka 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
Hoʻopau kēia i ke kaʻina hana hoʻonohonoho. Hiki iā ʻoe ke ʻike i ke kūlana o kēia manawa ma o ka pilina pūnaewele. Ma hea ʻoe e ʻike ai i ke kūkulu ʻana i nā hewa, e kīki i kahi kaʻina hana paʻa inā hewa kekahi mea, etc.
Ma hope koke o ka hoʻomaka ʻana, hiki ke ʻike ʻia kā mākou poʻe paʻahana ma o ka papa kuhikuhi "Kūkulu" -> "Nā Hana"
Ma hope o ka pau ʻana o ke kaʻina hana mua (ʻo ia hoʻi nā hoʻololi i ka waihona Git), e ʻike ʻia ke kūlana o nā kaʻina hana ma ka ʻaoʻao mua.
Inā ʻoe e kaomi i ka laina i makemake ʻia me ka ʻiole, e wehe ʻia kahi ʻaoʻao me ke kūlana o kēia kaʻina hana, kahi āu e ʻike ai i ka mea e hana nei, he aha nā hewa, etc.