Sa ou manaʻomia le faʻatulagaina o le faʻagasologa o le faʻapipiʻiina ma le tuʻuina atu o pusa polokalama mai le Git repository i le saite. Ma ina ua ou vaʻai, e leʻi leva atu, iinei i luga o Habré se tusiga i luga o le buildbot (sootaga i le faaiuga), na ou filifili e faʻataʻitaʻi ma faʻaoga.
Talu ai ona o le buildbot o se faiga tufatufaina, o le a talafeagai le fatuina o se fale talimalo eseese mo fausaga taʻitasi ma faiga faʻaoga. I la matou tulaga, o mea ia o le LXC containers (i le tulaga o Linux) ma le qemu (i le tulaga o Windows):
vm-srv-build1 - centos 7, o le ai ai se matai buildbot (matai) ma se tasi o tagata faigaluega (tagata faigaluega)
vm-srv-build2 - debian 10, mo le fausiaina o pusa DEB
vm-srv-build3 - windows 10, mo le faʻapotopotoga, e te iloa le mea mo
O le a matou aoina Rac GUI - o se faʻataʻitaʻiga faʻataʻitaʻi mo le 1C rac mo le puleaina o se fuifui o sapalai. Mo Linux, o meafaigaluega masani mo OS taʻitasi o le a faʻaaogaina e fausia ai se faila exe mo Windows mai se tusitusiga tcl, faʻaoga afifi fua.
faatulagaga
GNU / Linux
E lava faʻamaumauga i luga ole Initaneti mo le faʻapipiʻiina 1,2. Ioe, ma e le mafua ai ni faʻafitauli faʻapitoa:
Mo le matai:
Ioe, o le a sili atu ona saʻo le aoina o afifi mo OS taʻitasi, ae e sili atu i tua atu o le lautele o le tusiga. O le a matou faʻaumatia foʻi le faʻamatalaga o le faʻatulagaina o pusa mo galuega, naʻo loʻu matauina o loʻo ou faʻaaogaina ProxMox VE. Ma o le a manaʻomia foʻi ona e faʻapipiʻi afifi mo axis taʻitasi e manaʻomia mo le faʻapotopotoga (centos: rpmdevtools, ma isi; debian: build-essential, dh-make, pbuilder, etc.)
Fausia galuega faatino ma buildbot auaunaga o le a faʻalauiloaina o se tagata e le faʻaaogaina, o lea e tatau ai ona e fatuina se tasi i luga o au uma o loʻo auai i le faagasologa:
adduser buildbot
Le isi, matou te faʻatulagaina le faʻalauiloaina otometi o auaunaga, i le faasologa, i luga o 'au taʻitasi (koneteina):
A maeʻa lenei mea, e mafai ona e fatuina se faʻatonuga faʻapitoa mo "tagata faigaluega" (i luga o 'au uma), e fai lenei mea, resitala i lalo ole tagata faʻaoga buildbot ma faʻatautaia tulafono nei:
I luga o le talimalo muamua 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
I luga o le talimalo lona lua 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
I luga o 'au faigaluega, e mafai ona amata le auaunaga buildbot-worker
systemctl start buildbot-worker
MS Windows
I le avea ai o se "tagata faigaluega" mo le faʻapotopotoga i lalo o Windows, o le a faʻaaogaina se masini masini faʻatasi ai ma le faʻasalalauga lata mai o Win10.
Ina ia galue e te manaʻomia:
A maeʻa ona faʻapipiʻi mea uma i luga, e mafai ona e faʻapipiʻi le buildbot lava ia:
pip install buildbot-worker
Sei o tatou faia se lisi galue
md c:worker
Ma tatou amatalia
buildbot-worker start c:worker
Afai e aoga mea uma (silasila i le log c:workertwistd.log), ona mafai lea ona e resitalaina la matou "tagata faigaluega" o se tautua e ala i le faʻaopoopoina o se mea faʻatasi ma le tusi galue i le resitala (o poloaiga e faʻatinoina i le powershell o loʻo taʻavale e avea ma pule):
E na o le "tagata faigaluega", e le tatau ona e paʻi atili ia i latou, o pulega uma e sau mai le matai.
Seti fa'ataulāitu
I le amataga, seʻi o tatou fatuina mea tetele mo le matai (i luga o le talimalo autu), e fai lenei mea, resitala i lalo o le tagata faʻaoga buildbot ma faʻataʻitaʻi tulafono nei:
su - buildbot
mkdir /home/buildbot/master
cd ~
buildbot create-master master
Mo afifi ua uma ona fai, fai se lisi fau
mkdir /home/buildbot/builds
Na faia se faila master.cfg i le /home/buildbot/master/ directory. O lenei faila o se code python ma o loʻo i ai se faʻamatalaga o faiga uma o le faiga o le a matou galulue ai i le lumanaʻi.
Ina ia otometi le faʻapipiʻiina o afifi o faʻasalalauga eseese, ina ia le tatau ona suʻesuʻeina le code o le faila master.cfg, i le autu autu o le polokalame rac_gui.tcl, laina faʻatasi ma le faʻasologa o loʻo i ai nei ma faʻamalolo na faʻaopoopoina i le ulutala. :
Ma faʻavae i luga o nei laina, buildbot o le a faanumera afifi. Ina ia maua faʻamatalaga, faʻaoga le console grep call. I le buildbot e le mafai ona e faʻamatalaina fesuiaiga mo "tagata faigaluega" (a itiiti ifo, ou te leʻi mauaina pe faʻafefea). O le mea lea e faʻaaogaina ai meatotino. O na. I le faagasologa o le faʻapotopotoga, matou te faʻaopoopoina laasaga e fuafua ai le faʻasalalauga ma faʻamalolo ma, e tusa ai, seti le faʻasologa ma faʻasaʻo meatotino. E mafai ona seti meatotino i auala eseese, i lenei tulaga e ala i le valaʻau i le faʻatonuga faʻamafanafana:
# Добавим определение версии из основного файла
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"
)
)
E mafai ona e suitulaga i mea taua e ala i le valaʻau util.Interpolate().
E tatau ona maitauina iinei talu ai o le talimalo e faʻaaogaina foi mo le faʻapipiʻiina o faʻasalalauga tusi, o le faʻapotopotoga o le a faia i luga o ala masani.
Ina ia setiina le faʻasaʻo saʻo ma numera o faʻamatalaga, faʻaaoga se telefoni sed masani, i.e. o le poloaiga e sui ai tau i totonu o le faila faʻapitoa ma mea e manaʻomia
Matou te kopiina le afifi faʻapipiʻi maeʻa ma le faʻamaumauga faʻatasi ma punaoa i le matai. Ae e mafai ona e kopi vave faila mai lau faila galuega i lau fale teu oloa poʻo le upega tafaʻilagi.
# Скопируем файл на мастер
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")
)
)
Sei o tatou amata le faagasologa o le kopiina o afifi aoina i le talimalo e ala i le FTP i luga o le matai. Mo lenei faʻamoemoe e faʻaaogaina tusitusiga luga tcl.
Ole mea lena ile RPM. Sei o tatou amata faʻamatalaina le algorithm mo le fausiaina o se pusa DEB. Talu ai o faiga mo le fausiaina o afifi mo faiga eseese e tutoatasi mai le tasi i le isi, e tele laasaga o le a toe faia.
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"]))
Mo se afifi RPM, o nisi o faiga nei e faia e le rpm lava ia i le taimi o le faʻapotopotoga ma o loʻo faʻamatalaina i totonu o le faʻamatalaga mo Debian, e tatau ona e faia iinei:
# Поменяем пути к библиотекам
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")]
)
)
Faasaoina le faila ma e mafai ona e taumafai e amata le auaunaga wizard:
systemctl restart buildbot-master
I totonu o le ogalaau o le a matou siakiina o mea uma o loʻo faʻatonuina ma le faʻapipiʻi ma o loʻo galue mea uma e pei ona masani ai. O a matou tagata faigaluega uma e tatau ona faʻafesoʻotaʻi, lea o le a lipotia fiafia i le ogalaau »»'/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
O le mea lea e fa'auma ai le fa'atulagaina. E mafai ona e vaʻai i le tulaga o loʻo i ai nei e ala i le upega tafaʻilagi. O fea e mafai ai ona e vaʻai i le fausiaina o mea sese, kiliki se faiga faʻaaisa pe a iai se mea na tupu, ma isi.
I le taimi lava na maeʻa ai le faʻalauiloaina, e mafai ona vaʻaia a matou tagata faigaluega malosi e ala i le lisi "Fausia" -> "Aufaigaluega"
A maeʻa le faʻagasologa muamua o le fausiaina (e pei o suiga i le Git repository), o le tulaga o faʻagasologa o le a faʻaalia i luga o le itulau muamua.
Afai e te kiliki i luga o le laina manaʻomia ma le isumu, o le a tatalaina se itulau ma le tulaga o loʻo i ai nei o lenei faagasologa, lea e mafai ai ona e vaʻai i le mea o loʻo tupu, o a mea sese, ma isi.