Eisimpleir de bhuileachadh air amalachadh leantainneach le BuildBot

Eisimpleir de bhuileachadh air amalachadh leantainneach le BuildBot
(Ìomhaigh le Coimpiutair bho Pixabay)

Hello!

Is e m 'ainm Evgeny Cherkin, Tha mi nam phrogramaiche air sgioba leasachaidh aig companaidh mèinnearachd Polymetal.

Nuair a thòisicheas tu air pròiseact mòr sam bith, tòisichidh tu a’ smaoineachadh: “Dè am bathar-bog as fheàrr a chleachdadh airson a sheirbheis?” Bidh pròiseact IT a’ dol tro ghrunn ìrean mus tèid an ath dhreach a leigeil ma sgaoil. Tha e math nuair a tha sreath nan ìrean sin fèin-ghluasadach. Canar am pròiseas fèin-ghluasadach airson dreach ùr de phròiseact IT fhèin a leigeil ma sgaoil Integreachadh leantainneach. Tog Bot thionndaidh e a-mach gu bhith na neach-cuideachaidh math dhuinn ann a bhith a’ buileachadh a’ phròiseis seo.

San artaigil seo chuir mi romhpa sealladh farsaing a thoirt seachad air na cothroman Tog Bot. Dè a tha am bathar-bog seo comasach? Ciamar a thèid thu thuige agus ciamar a thogas tu dàimh obrach ÈIFEACHDACH àbhaisteach leis? Faodaidh tu ar n-eòlas a chuir an sàs le bhith a’ cruthachadh seirbheis obrach airson do phròiseact a thogail agus a dhearbhadh air an inneal agad.

Clàr-innse

Clàr-innse

1. Carson BuildBot?
2. Concept air a stiùireadh le BuildMaster
3. Stàladh
4. A 'chiad cheumannan

5. Rèiteachadh. Recipe ceum air cheum

5.1 BuildmasterConfig
Luchd-obrach 5.2
5.3 atharrachadh_stòr
5.4 clàr-ama

5.5 BuildFactory
5.6 luchd-togail

6. Eisimpleir de do rèiteachadh fhèin

6.1 Air an t-slighe gu do mhaighstir.cfg
6.2 Ag obair le svn
6.3 Litir thugad: tha ùghdarras aig luchd-aithris innse

Rinn sinn e! Mealaibh ur naidheachd

1. Carson BuildBot?

Roimhe seo air habr-e thàinig mi tarsainn air artaigilean mu bhuileachadh Integreachadh leantainneach a ’cleachdadh Tog Bot. m.e., am fear seo Fhuair mi e mar an neach as fiosrachail. Tha eisimpleir eile ann - nas sìmplidh. Faodaidh na h-artaigilean seo a bhith eòlach eisimpleir bhon leabhar-làimheagus e às deidh sin, ann am Beurla. Tha an coupe na dheagh àite tòiseachaidh. Às deidh dhut na h-artaigilean seo a leughadh, is dòcha gum bi thu ag iarraidh rudeigin sa bhad Tog Bot dèan.

Stad! A bheil duine dha-rìribh ga chleachdadh anns na pròiseactan aca? Tha e a 'tionndadh a-mach tha mòran chuir iad an sàs e anns na gnìomhan aca. Faodar a lorg eisimpleirean использования Tog Bot agus ann an tasglannan còd Google.

Mar sin dè an loidsig a bhios daoine a’ cleachdadh Togail bot? Às deidh na h-uile, tha innealan eile ann: Smachd-mara и Jenkins. Freagraidh mi mar seo. Airson a 'mhòr-chuid de ghnìomhan Jenkins agus bidh an fhìrinn gu leòr. Anns an tionndadh aice, Tog Bot - nas freagarraiche, fhad ‘s a tha duilgheadasan air am fuasgladh an sin cho sìmplidh‘ s a tha e Jenkins. Is ann leatsa a tha an roghainn. Ach leis gu bheil sinn a’ coimhead airson inneal airson pròiseact targaid a tha a’ leasachadh, carson nach tagh thu fear a leigeas, a’ tòiseachadh le ceumannan sìmplidh, siostam togail fhaighinn aig a bheil eadar-ghnìomhachd agus eadar-aghaidh gun samhail.

Dhaibhsan aig a bheil am pròiseact targaid sgrìobhte ann am python, tha a’ cheist ag èirigh: “Carson nach tagh thu siostam amalachaidh aig a bheil eadar-aghaidh soilleir a thaobh a’ chànain a thathar a’ cleachdadh sa phròiseact?” Agus a-nis tha an t-àm ann na buannachdan a thaisbeanadh Tog Bot.

Mar sin, an “cuartet ionnsramaid” againn. Dhòmhsa, tha mi air ceithir feartan a chomharrachadh Tog Bot:

  1. Is e frèam stòr fosgailte a th’ ann fo chead GPL
  2. Is e seo cleachdadh python mar inneal rèiteachaidh agus tuairisgeul air na gnìomhan a tha a dhìth
  3. Is e cothrom a tha seo freagairt fhaighinn bhon inneal air a bheil an co-chruinneachadh a’ gabhail àite
  4. Is iad sin, mu dheireadh, na riatanasan as ìsle airson Host. Feumaidh cleachdadh python agus toinnte, agus chan eil feum air inneal brìgheil agus inneal java.

2. Concept air a stiùireadh le BuildMaster

Eisimpleir de bhuileachadh air amalachadh leantainneach le BuildBot

Aig cridhe na h-ailtireachd cuairteachadh gnìomh tha Tog Maighstir. Is e seirbheis a th’ ann:

  • a 'cumail sùil atharrachaidhean ann an craobh stòr a’ phròiseict
  • a' cur àitheantan a bu chòir a chur gu bàs le seirbheis an Neach-obrach gus am pròiseact a thogail agus deuchainn a dhèanamh air
  • a ’cur fios luchd-cleachdaidh mu thoraidhean nan gnìomhan a chaidh a ghabhail

Tog Maighstir air a rèiteachadh tro fhaidhle maighstir.cfg. Tha am faidhle seo san root Tog Maighstir. Nas fhaide air adhart seallaidh mi mar a tha am freumh seo air a chruthachadh. Am faidhle fhèin maighstir.cfg tha sgriobt python ann a chleachdas gairmean Tog Bot.

An ath rud as cudromaiche Tog Bot tha ainm air Neach-obrach. Faodar an t-seirbheis seo a chuir air bhog air aoigheachd eile le OS eile, no is dòcha air an fhear far a bheil Tog Maighstir. Faodaidh e cuideachd a bhith ann an àrainneachd bhrìgheil a chaidh ullachadh gu sònraichte le na pasganan agus na caochladairean aige fhèin. Faodar na h-àrainneachdan brìgheil sin ullachadh le bhith a’ cleachdadh goireasan python mar virtualenv, venv.

Tog Maighstir a' craobh-sgaoileadh òrduigh do gach neach Neach-obrach-y, agus tha e, ann an tionndadh, gan coileanadh. Is e sin, tha e a 'tionndadh a-mach gum faod am pròiseas togail agus deuchainn pròiseact a dhol air adhart Neach-obrach-e a’ ruith Windows agus air Neach-obrach eile a’ ruith Linux.

Dèan sgrùdadh air bidh còdan stòr pròiseict a’ nochdadh air gach fear Neach-obrach-e.

3. Stàladh

Mar sin, rachamaid. Bidh mi a’ cleachdadh Ubuntu 18.04 mar an aoigh. Cuiridh mi fear air Tog Maighstir-a agus aon Neach-obrach-a. Ach an toiseach feumaidh tu python3.7 a stàladh:

sudo apt-get update
sudo apt-get install python3.7

Dhaibhsan a tha feumach air python3.7.2 an àite 3.7.1, faodaidh tu na leanas a dhèanamh:


sudo apt-get update
sudo apt-get software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get install python3.7
sudo ln -fs /usr/bin/python3.7 /usr/bin/python3
pip3 install --upgrade pip

Is e an ath cheum a stàladh Tweeted и Tog Bot, a bharrachd air pasganan a leigeas leat comas-gnìomh a bharrachd a chleachdadh Tog Bot-Tha an.


/*Все что под sudo будет установленно для всех пользователей в директорию /usr/local/lib/python3.7/dist-packages*/

#На хосте который производит мониторинг Worker-ов 
sudo pip install twisted #Библиотека twisted
sudo pip install buildbot #BuildMaster
#Дополнительный функционал
pip install pysqlite3 #Устанавливаем базу sqllite в учебных целях
pip install jinja2 #framework наподобие django, для web и для почтовых рассыллок
pip install autobahn #Web cокеты для связи BuildMaster->Worker
pip install sqlalchemy sqlalchemy-migrate #Для отображения схемы базы данных
#Для Web отображения BuildBot-a
pip install buildbot-www buildbot-grid-view buildbot-console-view buildbot-waterfall-view
pip install python-dateutil #Отображение дат в web
#На стороне хоста который непосредственно осуществляет сборку и тестирование 
pip install buildbot-worker #Worker
#Дополнительный функционал
sudo pip install virtualenv #Виртуальная среда 

4. A 'chiad cheumannan

Ùine airson cruthachadh Tog Maighstir. Bidh e sa phasgan againn / dachaigh / habr / maighstir.

mkdir master
buildbot create-master master # Собственно сдесь и создаем

An ath cheum. Cruthaichidh sinn Neach-obrach. Bidh e sa phasgan againn /dachaigh/habr/obraiche.

mkdir worker
buildbot-worker create-worker --umask=0o22 --keepalive=60 worker localhost:4000 yourWorkerName password

Nuair a ruitheas tu Neach-obrach, an uairsin gu bunaiteach cruthaichidh e a-steach /dachaigh/habr/obraiche pasgan le ainm a’ phròiseict, a tha air a shònrachadh ann an maighstir.cfg. Agus anns a 'phasgan le ainm a' phròiseict cruthaichidh e eòlaire togail, agus leanaidh e ga dhèanamh Dèan sgrùdadh air. Leabhar-iùil airson obair-chamara Neach-obrach- agus bidh e na eòlaire / dachaigh/habr/do Phròiseact/togail.

“Iuchair Òir
Agus a-nis na sgrìobh mi am paragraf roimhe airson: sgriobt a tha Master iarraidh bho Neach-obrach-agus dèanta air astar san eòlaire seo cha tèid a chur gu bàs a chionn 's nach eil cead aig an sgriobt ruith. Gus an suidheachadh a cheartachadh, bidh feum agad air iuchair --umask=0o22, a tha a’ toirmeasg sgrìobhadh chun eòlaire seo, ach a chumas còraichean cur air bhog. Agus is e sin a tha a dhìth oirnn.

Tog Maighstir и Neach-obrach ceangal a stèidheachadh ri chèile. Tha e a 'tachairt gu bheil e a' briseadh dheth agus Neach-obrach feitheamh beagan ùine airson freagairt bho Tog Maighstir-A. Mura h-eil freagairt ann, thèid an ceangal ath-thòiseachadh. iuchair --glèidhidh=60 chan fheum ach an ùine às deidh sin a chomharrachadh ceangal ath-thòisich.

5. Rèiteachadh. Recipe ceum air cheum

Rèiteachadh Tog Maighstir air a dhèanamh air taobh an inneil far an do chuir sinn an gnìomh an àithne cruthaich-mhaighstir. Anns a 'chùis againn, is e eòlaire a tha seo / dachaigh / habr / maighstir. Faidhle rèiteachaidh maighstir.cfg chan eil e ann fhathast, ach tha an àithne fhèin air am faidhle a chruthachadh mu thràth maighstir.cmg.sample. Feumaidh tu ath-ainmeachadh gu maighstir.cfg.sample в maighstir.cfg

mv master.cfg.sample master.cfg

Nach fosgail sinn am fear seo maighstir.cfg. Agus leig dhuinn sùil a thoirt air na tha ann. Agus às deidh sin, feuchaidh sinn ris am faidhle rèiteachaidh againn fhèin a dhèanamh.

maighstir.cfg

c['change_source'] = []
c['change_source'].append(changes.GitPoller(
    'git://github.com/buildbot/hello-world.git',
         workdir='gitpoller-workdir', branch='master',
         pollInterval=300))
                        
c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
        name="all",
        change_filter=util.ChangeFilter(branch='master'),
        treeStableTimer=None,
        builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
        name="force",
        builderNames=["runtests"]))
                        
factory = util.BuildFactory()
                        
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
                                   env={"PYTHONPATH": "."}))
                        
c['builders'] = []
c['builders'].append(
    util.BuilderConfig(name="runtests",
    workernames=["example-worker"],
    factory=factory))
                         
c['services'] = []
                        
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
                        
                        
c['buildbotURL'] = "http://localhost:8010/"
                        
c['www'] = dict(port=8010,
                plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
                        
c['db'] = {
    'db_url' : "sqlite:///state.sqlite",
}

5.1 BuildmasterConfig

c = BuildmasterConfig = {} 

Tog maighstirConfig - faclair bunaiteach den fhaidhle rèiteachaidh. Feumaidh e a bhith air a ghabhail a-steach don fhaidhle rèiteachaidh. Airson a bhith furasta a chleachdadh, tha alias air a thoirt a-steach don chòd rèiteachaidh "c". Nàdarrach iuchraichean в c["keyFromDist"] Tha iad nan eileamaidean stèidhichte airson eadar-obrachadh leotha Tog Maighstir. Airson gach iuchair, thèid an rud co-fhreagarrach a chuir na àite mar luach.

Luchd-obrach 5.2

c['workers'] = [worker.Worker("example-worker", "pass")]

An turas seo tha sinn a 'comharrachadh Tog Maighstir-y liosta de Neach-obrach-s. Mi-fhìn Neach-obrach chruthaich sinn àrd-ìre, a' comharrachadh ainm an neach-obrach agad и facal-faire. A-nis feumaidh iad a bhith air an sònrachadh nan àite neach-obrach eisimpleir и seachad .

5.3 atharrachadh_stòr

c['change_source'] = []
c['change_source'].append(changes.GitPoller(
                            'git://github.com/buildbot/hello-world.git',
                             workdir='gitpoller-workdir', branch='master',
                             pollInterval=300))                

Le iuchair atharrachadh_stòr faclair c gheibh sinn cothrom air an liosta far a bheil sinn airson rud a chuir a-steach a bhios a’ taghadh an stòrais le còd stòr a’ phròiseict. Bidh an eisimpleir a’ cleachdadh stòr Git a thèid a sgrùdadh aig amannan sònraichte.

Is e a’ chiad argamaid an t-slighe gu do stòr.

obairdir a’ riochdachadh na slighe chun phasgan far a bheil air an taobh Neach-obrach- dàimh ris an t-slighe / dachaigh/habr/obraiche/do Phròiseact/togail stòraidh git an dreach ionadail den stòr.

meur tha meur sònraichte anns an ionad-tasgaidh a bu chòir a leantainn.

cunntas-bheachd toirt a-steach an àireamh de dhiog às deidh sin Tog Maighstir nì e sgrùdadh air an ionad-tasgaidh airson atharrachaidhean.

Tha grunn dhòighean ann airson sùil a chumail air atharrachaidhean ann an stòr-tasgaidh pròiseict.

Tha an dòigh as sìmplidh Bhòtadh, a tha a’ ciallachadh sin Tog Maighstir bho àm gu àm a’ bhòtadh an fhrithealaiche leis an stòr. Ma tha dèanamh nochdadh na h-atharrachaidhean anns an ionad-tasgaidh, mar sin Tog Maighstir cruthaichidh e nì a-staigh le beagan dàil atharrachadh agus cuir gu neach-làimhseachaidh an tachartais Prògramadair, a chuireas air bhog na ceumannan gus am pròiseact a thogail agus a dhearbhadh Neach-obrach-e. Am measg nan ceumannan seo thèid a chomharrachadh -ùrachadh tasgaidh. Dìreach air adhart Neach-obrachCruthaichidh seo leth-bhreac ionadail den stòr. Bidh mion-fhiosrachadh mun phròiseas seo air a chòmhdach gu h-ìosal anns an ath dhà earrann. (5.4 и 5.5).

Is e dòigh eadhon nas eireachdail airson sùil a chumail air atharrachaidhean gu stòr teachdaireachdan a chuir gu dìreach bhon fhrithealaiche a tha ga chumail Tog Maighstir- mu bhith ag atharrachadh còdan stòr a’ phròiseict. Anns a 'chùis seo, cho luath sa nì an leasaiche dèanamh, cuiridh am frithealaiche le stòr a’ phròiseict teachdaireachd Tog Maighstir-y. Agus cuiridh e, an uair sin, bacadh air le bhith a 'cruthachadh nì Stòr PBChange. An ath rud, thèid an nì seo a ghluasad gu Prògramadair, a chuireas an gnìomh na ceumannan gus am pròiseact a thogail agus a dhearbhadh. Tha pàirt chudromach den dòigh seo ag obair leis dubhan-server sgriobtaichean anns an stòr. Anns an sgriobt dubhan-a, cunntachail airson gnìomhan giollachd nuair dèanamh-e, feumaidh tu fios a chur gu utility sendchange agus sònraich seòladh an lìonraidh Tog Maighstir-A. Feumaidh tu cuideachd am port lìonraidh a dh'èisteas a shònrachadh Stòr PBChange. Stòr PBChange, leis an t-slighe, na phàirt Tog Maighstir-A. Feumaidh an dòigh seo cead admin-a air an fhrithealaiche far a bheil stòr a’ phròiseict suidhichte. Feumaidh tu an toiseach cùl-taic a dhèanamh den stòr.

5.4 clàr-ama


c['schedulers'] = []
c['schedulers'].append(schedulers.SingleBranchScheduler(
        name="all",
        change_filter=util.ChangeFilter(branch='master'),
        treeStableTimer=None,
        builderNames=["runtests"]))
c['schedulers'].append(schedulers.ForceScheduler(
        name="force",
        builderNames=["runtests"]))

luchd-clàraidh - tha seo na eileamaid a tha ag obair mar inneal-brosnachaidh a thòisicheas an t-sreath iomlan de cho-chruinneachadh agus deuchainn a’ phròiseict.
Eisimpleir de bhuileachadh air amalachadh leantainneach le BuildBot

Na h-atharrachaidhean sin a chaidh a chlàradh atharrachadh_stòr, air a thionndadh sa phròiseas obrach Tog Bot-a cur an aghaidh atharrachadh agus a nis gach Seòladair stèidhichte orra, bidh e a’ togail iarrtasan gus pròiseas togail a’ phròiseict a thòiseachadh. Ach, bidh e cuideachd a’ dearbhadh cuin a thèid na h-iarrtasan sin a ghluasad nas fhaide chun ciudha. Rud Builder a’ stòradh ciudha de dh’iarrtasan agus a’ cumail sùil air staid a’ cho-chruinneachaidh a th’ ann an-dràsta air leth Neach-obrach-e. Builder ann air Tog Maighstir-e agus air adhart Neach-obrach-e. Tha e a' cur le Tog Maighstir-a air Neach-obrach- agus mar-thà sònraichte togail - sreath de cheumannan a dh'fheumar a leantainn.
Chì sinn sin anns an eisimpleir làithreach leithid luchd-clàraidh Tha 2 phìos air an cruthachadh. A bharrachd air an sin, tha a sheòrsa fhèin aig gach fear.

Clàr-clàraidh SingleBranch - aon de na clasaichean as mòr-chòrdte air a’ chlàr. Bidh e a’ coimhead aon mheur agus air a bhrosnachadh le atharrachadh clàraichte ann. Nuair a chì e atharrachaidhean, faodaidh e dàil a chuir air an iarrtas togail (cuir dheth airson na h-ùine a tha air a shònrachadh anns a ’pharamadair sònraichte TreeStableTimer) AT ainm a’ suidheachadh ainm a’ chlàir a thèid a thaisbeanadh ann Tog Bot-lìn eadar-aghaidh. ANNS ChangeFilter tha sìoltachan air a shuidheachadh, às deidh dha a dhol seachad dè na h-atharrachaidhean sa mheur a bhrosnaicheas an clàr airson iarrtas togail a chuir. ANNS Ainmean luchd-togail ainm air a chomharrachadh neach-togail-a, a shuidhicheas sinn beagan an dèigh sin. Bidh an t-ainm sa chùis againn an aon rud ri ainm a’ phròiseict: do phròiseact.

Clàr-ama feachd rud gu math sìmplidh. Tha an seòrsa clàr-ama seo air a bhrosnachadh le cliog luchag troimhe Tog Bot-lìn eadar-aghaidh. Tha an aon bhunait aig na paramadairean agus a tha ann Clàr-clàraidh SingleBranch.

PS Àir. 3. Is dòcha gun tig e gu feum
Ùineach na chlàr-ama a bhios a’ ruith aig tricead sònraichte stèidhichte air ùine. Tha an gairm a’ coimhead rudeigin mar seo


from buildbot.plugins import schedulers
nightly = schedulers.Periodic(name="daily",
                              builderNames=["full-solaris"],
                              periodicBuildTimer=24*60*60)
c['schedulers'] = [nightly]                    

5.5 BuildFactory


factory = util.BuildFactory()
                        
factory.addStep(steps.Git(repourl='git://github.com/buildbot/hello-world.git', mode='incremental'))
factory.addStep(steps.ShellCommand(command=["trial", "hello"],
                                   env={"PYTHONPATH": "."}))

bho àm gu àmBuildTimer a’ sònrachadh ùine an ùine seo ann an diogan.

TogailFactaraidh a 'cruthachadh sònraichte togail, a tha an uair sin neach-togail a' cur gu Neach-obrach. Tha a ' TogailFactaraidh a’ comharrachadh nan ceumannan a bu chòir a leantainn Neach-obrach-y. Tha ceumannan air an cur ris le bhith a 'gairm an dòigh cuir Ceum

Is e a’ chiad cheum a bharrachd san eisimpleir seo git glan -d -f -f -xan uairsin seic git. Tha na gnìomhan sin air an toirt a-steach don pharamadair dòigh, nach eil air a ràdh gu soilleir ach a tha a’ ciallachadh luach bunaiteach ùr. Paramadair mode = 'àrdachadh' a’ nochdadh gu bheil na faidhlichean bhon eòlaire far a bheil an chechout, fhad 'sa tha iad a dhìth bhon stòr, fhathast gun suathadh.

Is e an dàrna ceum a bharrachd a bhith a’ gairm an sgriobt deuchainn le paramadair halò air an taobh Neach-obrach-a bhon eòlaire / dachaigh/habr/obraiche/do Phròiseact/togail le caochladair na h-àrainneachd PATHONPATH=... Mar sin, faodaidh tu na sgriobtaichean agad fhèin a sgrìobhadh agus an cur an gnìomh air an taobh Neach-obrach-a a h-uile ceum util.ShellCommand. Faodar na sgriobtaichean sin a chuir gu dìreach a-steach don stòr. An uairsin aig chechout-e tuitidh iad a steach / dachaigh/habr/obraiche/do Phròiseact/togail. Ach, tha dà “buts” ann:

  1. Neach-obrach feumar a chruthachadh le iuchair --umasg gus nach cuir e bacadh air còraichean cur gu bàs às deidh sin Dèan sgrùdadh air-Tha an.
  2. aig putadh git-e de na sgriobtaichean sin feumaidh tu an t-seilbh a shònrachadh so-iomchuidhmar sin nas fhaide air adhart chechout-e cha do chaill e a’ chòir an sgriobt Git a chuir gu bàs.

5.6 luchd-togail


c['builders'] = []
c['builders'].append(util.BuilderConfig(name="runtests",
                                        workernames=["example-worker"],
                                        factory=factory))

Mu na tha Builder chaidh innseadh an seo. A-nis innsidh mi dhut nas mionaidiche mu mar a chruthaicheas tu e. Config neach-togail tha e na neach-togail neach-togail. Luchd-dealbhaidh mar sin ann an c['luchd-togail'] faodaidh tu grunnan a shònrachadh, oir is e duilleag de nithean a tha seo neach-togail seòrsa. A-nis leig dhuinn an eisimpleir ath-sgrìobhadh bho Tog Bot, ga thoirt nas fhaisge air ar n-obair.


c['builders'] = []
c['builders'].append(util.BuilderConfig(name="yourProject",
                                            workernames=["yourWorkerName"],
                                            factory=factory))

A-nis innsidh mi dhut mu na paramadairean Config neach-togail.

ainm a' sònrachadh an ainm neach-togail-a. An seo thug sinn ainm air do phròiseact. Tha seo a’ ciallachadh sin air adhart Neach-obrach- thèid an dearbh shlighe seo a chruthachadh / dachaigh/habr/obraiche/do Phròiseact/togail. Seòladair A’ coimhead airson neach-togail dìreach leis an ainm seo.

ainmean luchd-obrach tha duilleag ann Neach-obrach-s. Feumaidh gach aon dhiubh a bhith air a chur ris c ['luchd-obrach'].

factaraidh - sònraichte togail, ris a bheil e co-cheangailte neach-togail. Cuiridh e an nì togail air Neach-obrach gus a h-uile ceum a tha air a ghabhail a-steach ann an seo a choileanadh togail-Tha an.

6. Eisimpleir de do rèiteachadh fhèin

Seo an eisimpleir ailtireachd pròiseict a tha mi a’ moladh a bhuileachadh tro Tog Bot
.

Cleachdaidh sinn mar shiostam smachd dreach svn. Bidh an stòr fhèin suidhichte ann an seòrsa de sgòth. Seo seòladh an neòil seo svn.host/svn/yourProject/trunk. Anns an neul fo svn tha ainm-cleachdaidh cunntais ann: -cleachdaidh, pas: facal-faire. Sgriobtaichean a tha a 'riochdachadh ceumannan togail-a bidh cuideachd anns a 'mheur svn, ann am pasgan fa leth buildbot/worker_linux. Tha na sgriobtaichean sin suidhichte anns an stòr leis an togalach a chaidh a shàbhaladh so-ghnìomhaichte.

Tog Maighstir и Neach-obrach ruith air an aon òstair pròiseact.host .Tog Maighstir a’ stòradh na faidhlichean aige ann am pasgan / dachaigh / habr / maighstir. Neach-obrach tha e air a stòradh anns an t-slighe a leanas /dachaigh/habr/obraiche. Conaltradh pròiseas Tog Maighstir-a agus Neach-obrach-a air a dhèanamh tro phort 4000 a rèir a’ phròtacal Tog Bot-a, 's e sin 'pb' pròtacal.

Tha am pròiseact targaid sgrìobhte gu tur ann am Python. Is e an obair sùil a chumail air na h-atharrachaidhean aige, faidhle so-ghnìomhaichte a chruthachadh, sgrìobhainnean a ghineadh, agus deuchainnean a dhèanamh. Ma dh’ fhàilligeas, feumaidh gach leasaiche teachdaireachd a chuir air post-d ag innse gu bheil gnìomh neo-shoirbheachail ann.

Taisbeanadh lìn Tog Bot ceangailidh sinn ri port 80 airson pròiseact.host. Chan eil feum air Apatch a stàladh. Mar phàirt den leabharlann toinneamh tha frithealaiche lìn ann mu thràth, Tog Bot ga chleachdadh.

Airson fiosrachadh a-staigh a stòradh airson Tog Bot bùrn ispolozovat sqlite.

Tha feum air aoigheachd airson post-d smtp.your.domain - leigidh e litrichean a chuir bhon phost [post-d fo dhìon] gun dearbhadh. Cuideachd air an aoigh 'SMTP ' Tha na geàrr-chunntasan gan cluinntinn aig post 1025.

Tha dithis an sàs sa phròiseas: admin и -cleachdaidh. rianadair a' riaghladh Tog Bot. Is e an neach-cleachdaidh an neach a tha an sàs ann dèanamh-s.

Thèid faidhle so-ruigsinneach a chruthachadh tro uidheam-stàlaidh. Tha sgrìobhainnean air an cruthachadh tro doxygen.

Airson an ailtireachd seo sgrìobh mi seo: maighstir.cfg:

maighstir.cfg


import os, re
from buildbot.plugins import steps, util, schedulers, worker, changes, reporters

c= BuildmasterConfig ={}

c['workers'] = [ worker.Worker('yourWorkerName', 'password') ]
c['protocols'] = {'pb': {'port': 4000}} 


svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
                                svnuser="user",
                                svnpasswd="password",
                                pollinterval=60,
				split_file=util.svn.split_file_alwaystrunk
                                )

c['change_source'] =  svn_poller

hourlyscheduler = schedulers.SingleBranchScheduler(
                                name="your-project-schedulers",
				change_filter=util.ChangeFilter(branch=None),
                                builderNames=["yourProject"],
				properties = {'owner': 'admin'}
                                )

c['schedulers'] = [hourlyscheduler]

checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
                        mode='full',
                        method='fresh',
                        username="user",
                        password="password",
                        haltOnFailure=True)

	
projectHost_build = util.BuildFactory()  


cleanProject = steps.ShellCommand(name="Clean",
                 command=["buildbot/worker_linux/pyinstaller_project", "clean"]
                                )
buildProject = steps.ShellCommand(name="Build",
                 command=["buildbot/worker_linux/pyinstaller_project", "build"]
                                )
doxyProject = steps.ShellCommand(name="Update Docs",
                                command=["buildbot/worker_linux/gendoc", []]
                                )
testProject = steps.ShellCommand(name="Tests",
                                command=["python","tests/utest.py"],
                                env={'PYTHONPATH': '.'}
                                )

projectHost_build.addStep(checkout)
projectHost_build.addStep(cleanProject)
projectHost_build.addStep(buildProject)
projectHost_build.addStep(doxyProject)
projectHost_build.addStep(testProject)


c['builders'] = [
        util.BuilderConfig(name="yourProject", workername='yourWorkerName', factory=projectHost_build)
]


template_html=u'''
<h4>Статус построенного релиза: {{ summary }}</h4>
<p>Используемый сервис для постраения: {{ workername }}</p>
<p>Проект: {{ projects }}</p>
<p>Для того что бы посмотреть интерфейс управления пройдите по ссылке: {{ buildbot_url }}</p>
<p>Для того что бы посмотреть результат сборки пройдите по ссылке: {{ build_url }}</p>
<p>Используя WinSCP можно подключиться к серверу c ip:xxx.xx.xxx.xx. Войдя под habr/password, забрать собранный executable файл с директории ~/worker/yourProject/build/dist.</p>
<p><b>Построение было произведено через Buildbot</b></p>
'''

sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
					sendToInterestedUsers=True,
					lookup="your.domain",
					relayhost="smtp.your.domain",
					smtpPort=1025,
					mode="warnings",
					extraRecipients=['[email protected]'],
              messageFormatter=reporters.MessageFormatter(
						template=template_html,
						template_type='html',
						wantProperties=True, 
                                                wantSteps=True)
					)
c['services'] = [sendMessageToAll]

c['title'] = "The process of bulding"
c['titleURL'] = "http://project.host:80/"

c['buildbotURL'] = "http://project.host"

c['www'] = dict(port=80,
                plugins=dict(waterfall_view={}, console_view={}, grid_view={}))


c['db'] = {
    'db_url' : "sqlite:///state.sqlite"
}

An toiseach feumaidh tu a chruthachadh Tog Maighstir-a agus Neach-obrach-a. An uairsin cuir a-steach am faidhle seo maighstir.cfg в / dachaigh / habr / maighstir.

Is e an ath cheum an t-seirbheis a thòiseachadh Tog Maighstira


sudo buildbot start /home/habr/master

An uairsin tòisich air an t-seirbheis Neach-obrach-a


buildbot-worker start /home/habr/worker

Deiseil! Nise Togail bot bheir e sùil air atharrachaidhean agus brosnachaidh dèanamh-y a-steach svn, a 'coileanadh nan ceumannan togail agus deuchainn pròiseact leis an ailtireachd gu h-àrd.

Gu h-ìosal bheir mi cunntas air cuid de fheartan na tha gu h-àrd maighstir.cfg.

6.1 Air an t-slighe gu do mhaighstir.cfg


Fhad 'sa tha mi a' sgrìobhadh mo maighstir.cfg Thèid mòran mhearachdan a dhèanamh, agus mar sin bidh feum air am faidhle log a leughadh. Tha e air a stòradh mar Tog Maighstir-ec slighe iomlan /home/habr/master/twistd.log, agus air an taobh Neach-obrach-a le slighe iomlan /home/habr/worker/twistd.log. Mar a bhios tu a’ leughadh a’ mhearachd agus ga chàradh, feumaidh tu an t-seirbheis ath-thòiseachadh Tog Maighstir-a. Seo mar a tha e air a dhèanamh:


sudo buildbot stop /home/habr/master
sudo buildbot upgrade-master /home/habr/master
sudo buildbot start /home/habr/master

6.2 Ag obair le svn


svn_poller = changes.SVNPoller(repourl="https://svn.host/svn/yourProject/trunk",
                               svnuser="user",
                               svnpasswd="password",
                               pollinterval=60,
                               split_file=util.svn.split_file_alwaystrunk
                        )

c['change_source'] =  svn_poller

hourlyscheduler = schedulers.SingleBranchScheduler(
                            name="your-project-schedulers",
                            change_filter=util.ChangeFilter(branch=None),
                            builderNames=["yourProject"],
                            properties = {'owner': 'admin'}
                        )

c['schedulers'] = [hourlyscheduler]

checkout = steps.SVN(repourl='https://svn.host/svn/yourProject/trunk',
                     mode='full',
                     method='fresh',
                     username="user",
                     password="password",
                     haltOnFailure=True)

An toiseach, leig dhuinn sùil a thoirt air svn_ poller. Is e seo an aon eadar-aghaidh fhathast, a’ sgrùdadh an stòr gu cunbhalach uair sa mhionaid. Anns a 'chùis seo svn_ poller faighinn a-steach don mheur a-mhàin s an Iar-. Paramadair dìomhair split_file=util.svn.split_file_alwaysstrunk a’ suidheachadh nan riaghailtean: mar a bhriseas tu structar nam pasgan svn air na geugan. Bidh e cuideachd a’ tabhann slighean dàimheil dhaibh. Anns an tionndadh aige split_file_alwaysstrunk a’ sìmpleachadh a’ phròiseis le bhith ag ràdh nach eil ann ach an stòr s an Iar-.

В Luchd-clàraidh air a chomharrachadh ChangeFiltercò chì Chan eil gin agus a' ceangal meur ris s an Iar- a rèir co-chomainn a thugadh troimhe split_file_alwaysstrunk. A ' freagairt air na h-atharrachaidhean a s an Iar-, A' cur air bhog neach-togail le ainm do phròiseact.

seilbhean an seo tha feum air gus am faigh an rianaire liostaichean puist de thoraidhean togail is deuchainn mar neach-seilbh a’ phròiseis.

Ceum togail-a Dèan sgrùdadh air comasach air faidhlichean sam bith a tha suidhichte san dreach ionadail den stòr a dhubhadh às gu tur Neach-obrach-A. Agus an uairsin dèan an làn ùrachadh svn. Tha am modh air a rèiteachadh tron ​​​​pharamadair modh = làn, modh = ùr. Paramadair stadOnTailure ag ràdh ma tha ùrachadh svn a chuir gu bàs le mearachd, an uairsin bu chòir am pròiseas togail agus deuchainn gu lèir a chuir dheth, leis nach eil gnìomhan eile a’ dèanamh ciall.

6.3 Litir thugad: tha ùghdarras aig luchd-aithris innse


luchd-aithris seirbheis airson fiosan a chuir air post-d.


template_html=u'''
<h4>Статус построенного релиза: {{ summary }}</h4>
<p>Используемый сервис для постраения: {{ workername }}</p>
<p>Проект: {{ projects }}</p>
<p>Для того что бы посмотреть интерфейс управления пройдите по ссылке: {{ buildbot_url }}</p>
<p>Для того что бы посмотреть результат сборки пройдите по ссылке: {{ build_url }}</p>
<p>Используя WinSCP можно подключиться к серверу c ip:xxx.xx.xxx.xx. Войдя под habr/password, забрать собранный executable файл с директории ~/worker/yourProject/build/dist.</p>
<p><b>Построение было произведено через Buildbot</b></p>
'''
                        
sendMessageToAll = reporters.MailNotifier(fromaddr="[email protected]",
                                          sendToInterestedUsers=True,
                                          lookup="your.domain",
                                          relayhost="smtp.your.domain",
                                          smtpPort=1025,
                                          mode="warnings",
                                          extraRecipients=['[email protected]'],
                                    messageFormatter=reporters.MessageFormatter(
                                                    template=template_html,
                                                    template_type='html',
                                                    wantProperties=True, 
                                                    wantSteps=True)
                                        )
c['services'] = [sendMessageToAll]

Faodaidh e teachdaireachdan a chuir dòighean eadar-dhealaichte.

MailNotifier a’ cleachdadh post-d gus fiosan a chuir.

teamplaid_html a’ suidheachadh an teamplaid teacsa airson na cuairt-litir. Tha HTML air a chleachdadh gus comharrachadh a chruthachadh. Tha e air atharrachadh leis an einnsean gìn 2 (faodar coimeas a dhèanamh ri django). Tog Bot tha seata de chaochladairean aig a bheil na luachan air an cuir a-steach don teamplaid rè pròiseas cruthachadh teacsa na teachdaireachd. Tha na caochladairean seo dùinte ann an {{ braces lùbach dhùbailte }}. Mar eisimpleir, Geàrr-chunntas a’ taisbeanadh inbhe gnìomhachd crìochnaichte, is e sin, soirbheachas no fàilligeadh. A pròiseactan bheir toradh do phròiseact. Mar sin, a 'cleachdadh òrdughan smachd ann an gìn 2, caochladairean Tog Bot-a agus innealan cruth sreang python, faodaidh tu teachdaireachd gu math fiosrachail a chruthachadh.

MailNotifier tha na h-argamaidean a leanas ann.

bhoaddr - an seòladh às am faigh a h-uile duine an litir-naidheachd.

sendToInterestedUsers=Tha True a’ cur teachdaireachd chun an t-sealbhadair agus an cleachdaiche a rinn e dèanamh.

Thoir sùil air - iar-leasachan a dh’ fheumar a chur ri ainmean luchd-cleachdaidh a gheibh a’ chuairt-litir. Mar sin admin mar a gheibh an neach-cleachdaidh an litir-naidheachd aig an t-seòladh [post-d fo dhìon].

òstair a' sònrachadh an t-ainm aoigheachd air a bheil am frithealaiche air fhosgladh SMTP, a smptPort a’ sònrachadh àireamh a’ phuirt a bhios ag èisteachd SMTP frithealaiche.

modh = "rabhadh" ag ràdh nach bu chòir am postadh a dhèanamh ach ma tha co-dhiù aon cheum ann togail-a, a thàinig gu crìch le fàilligeadh inbhe no rabhadh. A thaobh soirbheachas, chan eil feum air cuairt-litir a chuir.

Luchd-faighinn a bharrachd tha liosta ann de dhaoine ris am bu chòir am post a chuir a bharrachd air an t-sealbhadair agus an neach a rinn am post dèanamh.

cruth teachdaireachd na nì a shònraicheas cruth na teachdaireachd, an teamplaid aige, agus seata de chaochladairean a tha rim faighinn bho gìn 2. Roghainnean mar wantProperties=Fìor и wantSteps=Fìor mìneachadh an t-seata seo de chaochladairean a tha rim faighinn.

le['seirbheisean'] =[sendMessageToAll] a’ toirt seachad liosta de sheirbheisean, am measg am bi an fheadhainn againne aithris.

Rinn sinn e! Mealaibh ur naidheachd

Chruthaich sinn an rèiteachadh againn fhèin agus chunnaic sinn an comas-gnìomh a tha comasach. Tog Bot. Tha seo, tha mi a’ smaoineachadh, gu leòr airson tuigsinn a bheil feum air an inneal seo gus do phròiseact a chruthachadh. A bheil ùidh agad ann? Am bi e feumail dhut? A bheil e cofhurtail a bhith ag obair leis? An uairsin chan eil mi a’ sgrìobhadh an artaigil seo gu dìomhain.

Agus nas fhaide. Bu mhath leam a’ choimhearsnachd proifeasanta a chleachdadh Tog Bot, dh'fhàs e nas fharsainge, chaidh leabhraichean-làimhe eadar-theangachadh, agus bha eadhon barrachd eisimpleirean ann.

Tapadh leibh uile airson an aire agad. Beannachd leat.

Source: www.habr.com

Cuir beachd ann