Ke ne ke hloka ho theha mokhoa oa ho bokella le ho tsamaisa liphutheloana tsa software ho tloha polokelong ea Git ho ea sebakeng sa marang-rang. 'Me ha ke bona, eseng khale haholo, mona ho Habré sehlooho se buang ka buildbot (link qetellong), ke ile ka etsa qeto ea ho e leka le ho e sebelisa.
Kaha buildbot ke sistimi e abuoang, ho ka ba ho utloahalang ho theha moamoheli o arohaneng bakeng sa meralo ka 'ngoe le sistimi e sebetsang. Tabeng ea rona, tsena e tla ba lijana tsa LXC (tabeng ea Linux) le qemu (tabeng ea Windows):
vm-srv-build1 - centos 7, ho tla ba le masterbot le e mong oa basebetsi
vm-srv-build2 - debian 10, bakeng sa ho haha liphutheloana tsa DEB
vm-srv-build3 - lifensetere 10, bakeng sa kopano, ua tseba hore na ke eng
Re tla bokella Rac GUI - sebopeho sa graphical bakeng sa 1C rac bakeng sa ho laola sehlopha sa li-server. Bakeng sa Linux, lisebelisoa tse tloaelehileng tsa OS e 'ngoe le e' ngoe li tla sebelisoa; ho aha faele ea exe bakeng sa Windows ho tsoa ho tcl script, sebelisa freewrap.
bophirima
GNU / Linux
Ho na le litokomane tse lekaneng Inthaneteng bakeng sa ho kenya 1,2. E, 'me ha e bake mathata a khethehileng:
Bakeng sa mong'a:
Ehlile, ho ka ba ho nepahetseng ho bokella liphutheloana bakeng sa OS ka 'ngoe, empa sena se ka nqane ho sengoloa. Hape re tla siea tlhaloso ea ho theha lijana bakeng sa mosebetsi, ke tla hlokomela feela hore ke sebelisa ProxMox VE. Hape o tla hloka ho kenya liphutheloana bakeng sa axis ka 'ngoe e hlokahalang bakeng sa kopano (centos: rpmdevtools, joalo-joalo; debian: build-essential, dh-make, pbuilder, joalo-joalo)
Merero ea ho aha le lits'ebeletso tsa li-buildbot li tla hlahisoa joalo ka mosebelisi ea se nang tokelo, ka hona o hloka ho theha e 'ngoe ho bohle ba amohelang ba nkang karolo ts'ebetsong ena:
adduser buildbot
Ka mor'a moo, re tla lokisa ho qala lits'ebeletso ka boiketsetso, ka ho latellana, ho e 'ngoe le e 'ngoe ea mabotho (lijana):
Ka mor'a sena, o ka etsa lisebelisoa tsa lisebelisoa bakeng sa "basebetsi" (ho mabotho ohle), ho etsa sena, ngolisa tlas'a mosebelisi oa buildbot mme u tsamaise litaelo tse latelang:
Ho moamoheli oa pele 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
Ho moamoheli oa bobeli 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
Ho mabotho a basebetsi, ho ka qalisoa tšebeletso ea buildbot-worker
systemctl start buildbot-worker
MS Windows
E le "mosebetsi" bakeng sa kopano tlas'a Windows, ho tla sebelisoa mochine oa sebele o nang le tokollo ea morao-rao ea Win10.
Ho sebetsa o tla hloka:
Kamora hore tsohle tse kaholimo li kentsoe, o ka kenya buildbot ka boeona:
pip install buildbot-worker
Ha re theheng buka e sebetsang
md c:worker
Mme ha re qaleng
buildbot-worker start c:worker
Haeba ntho e 'ngoe le e' ngoe e sebetsa (sheba log c:workertwistd.log), joale u ka ngolisa "mosebetsi" oa rona e le tšebeletso ka ho eketsa ntho e nang le buka ea ho sebetsa ho registry (litaelo li etsoa ka powershell e sebetsang e le mookameli):
Ke tsohle tse nang le "basebetsi", ha ho hlokahale hore u li ame ho feta, taolo eohle e tsoa ho monghali.
Tlhophiso ea Wizard
Ho qala, ha re theheng lisebelisoa bakeng sa monghali (ho moamoheli ea ka sehloohong), ho etsa sena, ngodisa tlasa mosebelisi oa buildbot mme o tsamaise litaelo tse latelang:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Bakeng sa liphutheloana tse seng li entsoe, theha directory ea ho haha
mkdir /home/buildbot/builds
Faele ea master.cfg e entsoe ho /home/buildbot/master/ directory. Faele ena ke khoutu ea python 'me e na le tlhaloso ea mekhoa eohle ea tsamaiso; re tla sebetsa le eona nakong e tlang.
Ho iketsetsa pokello ea liphutheloana tsa liphetolelo tse fapaneng, e le hore u se ke ua tlameha ho kenella ka har'a khoutu ea file ea master.cfg, mela e nang le mofuta oa hajoale le tokollo e kentsoe sehloohong sa mongolo oa mantlha oa lenaneo la rac_gui.tcl:
'Me ho latela mela ena, buildbot e tla bala liphutheloana. Ho ntša data, sebelisa mohala oa console grep. Ho buildbot ha o khone ho hlalosa mefuta e fapaneng ea "basebetsi" (bonyane, ha ke so fumane hore na joang). Sena ke seo thepa e sebelisetsoang sona. Tseo. Ts'ebetsong ea kopano, re eketsa mehato ea ho tseba hore na phetolelo ke efe le ho e lokolla, 'me ka hona, re beha mofuta le thepa ea ho lokolla. Thepa e ka hlophisoa ka mekhoa e fapaneng, ntlheng ena ka ho letsetsa taelo ea 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"
)
)
U ka nkela litekanyetso tse hlahisoang sebaka ka ho letsetsa util.Interpolate().
Ho lokela ho hlokomeloa mona hore kaha moeti o boetse o sebelisetsoa ho kopanya liphutheloana ka letsoho, kopano e tla etsahala ka litsela tse tloaelehileng.
Ho seta linomoro tse nepahetseng tsa tokollo le mofuta, sebelisa sed call e tloaelehileng, i.e. taelo e nkela sebaka sa boleng ka har'a faele e itseng ka tse hlokahalang
Re kopitsa sephutheloana se phethiloeng se kopantsoeng le polokelo ea polokelo e nang le mehloli ho ea ho monghali. Empa o ka kopitsa lifaele hang-hang ho tloha faeleng ea hau ea mosebetsi ho ea sebakeng sa hau sa polokelo kapa sebaka sa marang-rang.
# Скопируем файл на мастер
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")
)
)
Ha re qaleng mokhoa oa ho kopitsa liphutheloana tse bokeletsoeng ho moamoheli ka FTP ho master. Bakeng sa morero ona e sebelisoa mongolo ho tcl.
Ho joalo le ka RPM. Joale a re qaleng ho hlalosa algorithm ea ho haha sephutheloana sa DEB. Kaha lits'ebetso tsa ho aha liphutheloana tsa litsamaiso tse fapaneng li ikemetse ho tse ling, mehato e mengata e tla phetoa.
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"]))
Bakeng sa sephutheloana sa RPM, tse ling tsa lits'ebetso tse latelang li etsoa ke rpm ka boeona nakong ea kopano 'me li hlalosoa ka hare ho spec; bakeng sa Debian, u tlameha ho e etsa mona:
# Поменяем пути к библиотекам
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")]
)
)
Boloka faele 'me u ka leka ho qala tšebeletso ea wizate:
systemctl restart buildbot-master
Ka har'a log re tla hlahloba hore ntho e 'ngoe le e' ngoe e hlophisitsoe ka tlhophiso 'me ntho e' ngoe le e 'ngoe e sebetsa ka mokhoa o tloaelehileng. Basebetsi bohle ba rona joale ba lokela ho hokahanya, e leng se tla tlalehoa ka thabo ho 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
Sena se phethela ts'ebetso ea ho seta. U ka sheba boemo ba hajoale ka sehokelo sa tepo. Moo u ka bonang liphoso tsa moaho, raha ts'ebetso e hoammeng haeba ho na le phoso, joalo-joalo.
Hang ka mor'a ho qala, basebetsi ba rona ba sebetsang ka thata ba ka shejoa ka menu "Builds" -> "Basebetsi"
Kamora hore ts'ebetso ea pele ea ho aha e phetheloe (ke hore, liphetoho sebakeng sa polokelo ea Git), boemo ba lits'ebetso bo tla hlaha leqepheng la pele.
Haeba u tobetsa mohala o lakatsehang ka toeba, leqephe le tla buloa ka boemo ba hajoale ba ts'ebetso ena, moo u ka bonang se etsahalang, liphoso life, joalo-joalo.