Misali aiwatar da Ci gaba da Haɗuwa tare da BuildBot

Misali aiwatar da Ci gaba da Haɗuwa tare da BuildBot
(Hoto daga Mai sarrafa kwamfuta daga Pixabay)

Sannu!

Sunana Evgeniy Cherkin, Ni mai tsara shirye-shirye ne a ƙungiyar haɓakawa a kamfanin hakar ma'adinai Na'ura mai kwakwalwa.

Lokacin fara kowane babban aiki, za ku fara tunani: "Wace software ce ta fi dacewa don amfani da ita don kula da ita?" Aikin IT yana wucewa ta matakai da yawa kafin a fitar da sigar gaba. Yana da kyau lokacin da sarkar waɗannan matakan ke sarrafa kansa. Ana kiran tsari mai sarrafa kansa na sakin sabon sigar aikin IT kanta Haɗuwa ta ci gaba. BuildBot ya zama mataimaki mai kyau a gare mu wajen aiwatar da wannan tsari.

A cikin wannan labarin na yanke shawarar samar da bayyani game da yiwuwar BuildBot. Menene wannan software ke iyawa? Yadda za a tunkare shi da kuma yadda za a gina INGANCI MAI KYAU NA AIKI tare da shi? Kuna iya amfani da ƙwarewarmu da kanku ta ƙirƙirar sabis na aiki don ginawa da gwada aikin ku akan injin ku.

Abubuwa

Abubuwa

1. Me yasa BuildBot?
2. Manufar da BuildMaster ke jagoranta
3. Shigarwa
4. Matakan farko

5. Kanfigareshan. Mataki-mataki girke-girke

5.1 BuildmasterConfig
5.2 ma'aikata
5.3 canji_source
5.4 masu tsarawa

5.5 BuildFactory
5.6 magina

6. Misalin tsarin ku

6.1 A kan hanyar zuwa ga ubangijinka.cfg
6.2 Yin aiki tare da svn
6.3 Wasika zuwa gare ku: 'yan jaridu suna da izinin bayyana

Mun yi shi! Ina taya ku murna

1. Me yasa BuildBot?

A baya akan habr-e na ci karo da kasidu game da aiwatarwa Haɗuwa ta ci gaba amfani BuildBot. Misali, Wannan Na same shi mafi ban sha'awa. Akwai wani misali - mafi sauki. Waɗannan labaran za a iya haɗa su misali daga manualda kuma shi bayan haka, a Turanci. Coupe yana yin kyakkyawan farawa. Bayan karanta waɗannan labaran, tabbas za ku so wani abu nan da nan BuildBot yi.

Tsaya! Shin akwai wanda ya yi amfani da shi a cikin ayyukansu? Ya zama eh da yawa amfani da shi a cikin ayyukansu. Ana iya samuwa misalai использования BuildBot kuma a cikin rumbun adana lambobin Google.

To mene ne mahangar da mutane ke amfani da su Buildbot? Bayan haka, akwai wasu kayan aikin: CruiseControl и Jenkins. Zan amsa ta wannan hanya. Don yawancin ayyuka Jenkins kuma gaskiya zata isa. A nashi bangaren. BuildBot - ƙarin daidaitawa, yayin da ake magance matsalolin a can kamar yadda a cikin Jenkins. Zabi naka ne. Amma tun da muna neman kayan aiki don aikin haɓaka mai tasowa, me yasa ba za a zaɓi wanda zai ba da izini ba, farawa daga matakai masu sauƙi, don samun tsarin ginawa wanda ke da haɗin kai da kuma keɓancewa na musamman.

Ga waɗanda aka rubuta aikin da aka yi niyya a cikin Python, tambayar ta taso: "Me ya sa ba za a zaɓi tsarin haɗin kai wanda ke da fa'ida mai ma'ana dangane da harshen da ake amfani da shi a cikin aikin ba?" Kuma yanzu lokaci ya yi da za a gabatar da fa'idodi BuildBot.

Saboda haka, mu "quartet kayan aiki". Ni kaina, na gano siffofi huɗu BuildBot:

  1. Tsarin buɗaɗɗen tushe ne ƙarƙashin lasisin GPL
  2. Wannan shine amfani da Python azaman kayan aiki na daidaitawa da bayanin ayyukan da ake buƙata
  3. Wannan wata dama ce ta samun amsa daga injin da taron ke gudana akan shi
  4. Waɗannan su ne, a ƙarshe, mafi ƙarancin buƙatun don Mai watsa shiri. Aiwatar da aiki yana buƙatar python da karkace, kuma baya buƙatar injin kama-da-wane da injin java.

2. Manufar da BuildMaster ke jagoranta

Misali aiwatar da Ci gaba da Haɗuwa tare da BuildBot

Tsakiyar tsarin gine-ginen rarraba ayyuka shine BuildMaster. Sabis ne wanda:

  • kiyaye hanya canje-canje a cikin bishiyar tushen aikin
  • aika umarnin da ya kamata a aiwatar da sabis na Ma'aikata don gina aikin da gwada shi
  • sanarwa masu amfani game da sakamakon ayyukan da aka ɗauka

BuildMaster an saita ta hanyar fayil maigida.cfg. Wannan fayil yana cikin tushen BuildMaster. Daga baya zan nuna yadda aka halicci wannan tushen. Fayil ɗin kanta maigida.cfg ya ƙunshi rubutun Python mai amfani da kira BuildBot.

Abu mafi mahimmanci na gaba BuildBot yana da suna Mai aiki. Ana iya ƙaddamar da wannan sabis ɗin akan wani runduna tare da OS daban-daban, ko wataƙila a inda BuildMaster. Hakanan yana iya kasancewa a cikin yanayi na musamman da aka shirya tare da fakitinsa da masu canji. Ana iya shirya waɗannan mahallin kama-da-wane ta amfani da kayan aikin python kamar virtualenv, wani.

BuildMaster watsa umarni ga kowa da kowa Mai aiki-y, kuma shi, bi da bi, ya cika su. Wato, ya zama cewa tsarin ginawa da gwada aikin na iya ci gaba Mai aiki-e Gudun Windows kuma akan wani Ma'aikacin Linux.

Dubawa Lambobin tushen aikin suna faruwa akan kowannensu Mai aiki-e.

3. Shigarwa

Don haka, mu tafi. Zan yi amfani da Ubuntu 18.04 a matsayin mai watsa shiri. Zan dora daya a kai BuildMaster-a da daya Mai aiki-a. Amma da farko kuna buƙatar shigar da Python3.7:

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

Ga waɗanda ke buƙatar python3.7.2 maimakon 3.7.1, kuna iya yin haka:


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

Mataki na gaba shine shigar Tweeted и BuildBot, da kuma fakitin da ke ba ku damar amfani da ƙarin ayyuka BuildBot- The.


/*Все что под 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. Matakan farko

Lokacin ƙirƙirar BuildMaster. Zai kasance a cikin babban fayil ɗin mu /gida/habr/master.

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

Mataki na gaba. Mu halitta Mai aiki. Zai kasance a cikin babban fayil ɗin mu /gida/habr/ma'aikaci.

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

Lokacin da kuke gudu Mai aiki, to ta hanyar tsoho zai ƙirƙira a ciki /gida/habr/ma'aikaci babban fayil tare da sunan aikin, wanda aka ƙayyade a cikin maigida.cfg. Kuma a cikin babban fayil tare da sunan aikin zai haifar da shugabanci gina, kuma za ta ci gaba da yin ta wurin biya. Littafin aiki don Mai aiki- kuma zai zama directory /gida/habr/Project/gina.

"Golden Key
Kuma yanzu abin da na rubuta sakin layi na baya don: rubutun cewa Master zai nema daga Mai aiki-kuma aikata daga nesa a cikin wannan directory ɗin ba za a kashe shi ba saboda rubutun ba shi da izinin aiki. Don gyara yanayin, kuna buƙatar maɓalli --umask=0o22, wanda ya hana rubutawa zuwa wannan kundin adireshin, amma zai riƙe haƙƙin ƙaddamarwa. Kuma abin da muke bukata ke nan.

BuildMaster и Mai aiki kulla alaka da juna. Yana faruwa cewa ya karye kuma Mai aiki jiran amsa daga BuildMaster-A. Idan babu amsa, haɗin yana sake farawa. Maɓalli --kiyaye=60 kawai ake bukata don nuna lokaci bayan haka gama sake yi.

5. Kanfigareshan. Mataki-mataki girke-girke

Kanfigareshan BuildMaster ana aiwatar da shi a gefen injin inda muka aiwatar da umarnin ƙirƙira-maigida. A cikin yanayinmu, wannan kundin adireshi ne /gida/habr/master. Fayil na tsari maigida.cfg bai wanzu ba tukuna, amma umarnin da kansa ya riga ya ƙirƙiri fayil ɗin master.cmg.samfurin. Kuna buƙatar sake suna zuwa master.cfg.samfurin в maigida.cfg

mv master.cfg.sample master.cfg

Mu bude wannan maigida.cfg. Kuma bari mu kalli abin da ya kunsa. Kuma bayan haka, bari mu yi kokarin yin namu sanyi fayil.

maigida.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 = {} 

BuildmasterConfig - ƙamus na asali na fayil ɗin sanyi. Dole ne a haɗa shi cikin fayil ɗin sanyi. Don sauƙin amfani, ana gabatar da laƙabi a cikin lambar daidaitawa "c". Lakabi makullin в c["keyFromDist"] abubuwa ne ƙayyadaddun abubuwa don hulɗa tare da BuildMaster. Ga kowane maɓalli, abin da ya dace ana musanya shi azaman ƙima.

5.2 ma'aikata

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

Wannan karon mun nuna BuildMaster-y lissafin Mai aiki-s. Ni kaina Mai aiki mun halitta mafi girma, nuni sunan ku-ma'aikaci и password. Yanzu suna buƙatar tantance su maimakon misali-ma'aikaci и wuce .

5.3 canji_source

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

By key canza_source ƙamus c muna samun damar shiga jeri inda muke so mu sanya wani abu da ke zaɓe wurin ajiya tare da lambar tushe na aikin. Misalin yana amfani da ma'ajiyar Git wanda aka yi zabe a wasu tazara.

Hujja ta farko ita ce hanyar zuwa ma'ajiyar ku.

mai aiki yana wakiltar hanyar zuwa babban fayil inda a gefe Mai aiki-dangi ga hanya /gida/habr/ma'aikaci/Project/gina git zai adana sigar wurin ajiyar ma'ajiyar gida.

reshe ya ƙunshi wani reshe na musamman a cikin ma'ajiyar da ya kamata a bi.

pollInterval ya ƙunshi adadin seconds bayan haka BuildMaster zai jefa kuri'a ga ma'ajiyar canje-canje.

Akwai hanyoyi da yawa don bin diddigin canje-canje zuwa ma'ajiyar aikin.

Hanya mafi sauki ita ce Raba, wanda ke nuna cewa BuildMaster lokaci-lokaci zaɓen uwar garken tare da ma'ajiyar. Idan aikata ya nuna canje-canje a cikin ma'ajiyar, sannan BuildMaster zai haifar da wani abu na ciki tare da ɗan jinkiri Change kuma aika shi zuwa ga mai gudanar da taron tsara, wanda zai kaddamar da matakan ginawa da gwada aikin akan Mai aiki-e. Daga cikin waɗannan matakan za a nuna update wurin ajiya. Daidai kunna Mai aikiWannan zai haifar da kwafin wurin ajiya na gida. Za a rufe cikakkun bayanai game da wannan tsari a ƙasa a cikin sassan biyu masu zuwa. (5.4 и 5.5).

Hanya mafi kyawu ta bin diddigin canje-canje zuwa ma'aji shine aika saƙonni kai tsaye daga uwar garken da ke ɗauke da shi zuwa ga. BuildMaster- game da canza lambobin tushen aikin. A wannan yanayin, da zarar mai haɓakawa ya yi aikata, uwar garken tare da ma'ajin aikin zai aika sako BuildMaster-y. Kuma shi, zai yi karo da shi ta hanyar ƙirƙirar wani abu PBCHangeSource. Na gaba, wannan abu za a canja shi zuwa tsara, wanda ke kunna matakan don gina aikin da gwada shi. Wani muhimmin sashi na wannan hanyar yana aiki tare da ƙugiya-Rubutun uwar garken a cikin ma'ajiyar. A cikin rubutun ƙugiya-a, alhakin sarrafa ayyuka lokacin aikata-e, kuna buƙatar kiran mai amfani aika canji kuma saka adireshin cibiyar sadarwa BuildMaster-A. Hakanan kuna buƙatar saka tashar tashar sadarwa wacce zata saurara PBCHangeSource. PBCHangeSource, Af, bangare ne BuildMaster-A. Wannan hanyar zata buƙaci izini admin-a kan uwar garken inda wurin ajiyar aikin yake. Za ku fara buƙatar yin ajiyar wurin ajiyar kuɗi.

5.4 masu tsarawa


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"]))

masu tsara shirye-shirye - wannan wani abu ne da ke aiki a matsayin mai tayar da hankali wanda ya fara dukan jerin haɗuwa da gwaji na aikin.
Misali aiwatar da Ci gaba da Haɗuwa tare da BuildBot

Canje-canjen da aka yi rikodin canza_source, canzawa a cikin tsarin aiki BuildBot-a don ƙi Change kuma yanzu kowane Sheduler bisa ga su, yana gina buƙatun don fara aikin gina aikin. Koyaya, yana kuma ƙayyade lokacin da aka ƙara ƙara waɗannan buƙatun zuwa jerin gwano. Wani abu magini yana adana jerin buƙatu da bin diddigin yanayin taron na yanzu akan daban Mai aiki-e. magini akwai akan BuildMaster-e da kuma Mai aiki-e. Ya aika da BuildMaster- a zo Mai aiki- kuma riga takamaimai gina - jerin matakan da dole ne a bi.
Mun ga cewa a cikin misali na yanzu irin wannan masu tsara shirye-shirye An halicci guda 2. Bugu da ƙari, kowanne yana da nau'in kansa.

Jadawalin Branch Single – daya daga cikin shahararrun azuzuwan a kan jadawalin. Yana kallon reshe ɗaya kuma yana haifar da wani canji da aka rubuta a cikinsa. Lokacin da ya ga canje-canje, zai iya jinkirta aika buƙatun ginin (jinkiri don lokacin da aka ƙayyade a cikin siga na musamman itaceStableTimer) A sunan saita sunan jadawalin da za'a nuna a ciki BuildBot- yanar gizo dubawa. IN Canza tacewa an saita tace, bayan wucewa wanda canje-canje a cikin reshe ya sa jadawalin aika buƙatun gini. IN Sunayen magini an nuna suna gini-a, wanda za mu saita kadan daga baya. Sunan a yanayinmu zai kasance iri ɗaya da sunan aikin: Aikin ku.

Ƙarfin Ƙarfi abu mai sauqi qwarai. Wannan nau'in jadawalin yana faruwa ne ta hanyar danna linzamin kwamfuta BuildBot- yanar gizo dubawa. Ma'auni suna da ma'ana ɗaya kamar a ciki Jadawalin Branch Single.

PS No. 3. Wataƙila zai zo da amfani
Lokaci jadawali ne wanda ke gudana a wani ƙayyadadden mitar lokaci. Kiran yayi kama da haka


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": "."}))

lokaci-lokaciBuildTimer yana ƙayyadaddun lokacin wannan lokaci a cikin daƙiƙa.

BuildFactory yana haifar da takamaiman gina, wanda sai gini aika zuwa Mai aiki. A BuildFactory yana nuna matakan da za a bi Mai aiki-y. Ana ƙara matakan ta hanyar kiran hanyar ƙara Mataki

Mataki na farko da aka ƙara a cikin wannan misalin shine git mai tsabta -d -f -f -xto, wurin biya. Ana haɗa waɗannan ayyuka a cikin siga hanyar, wanda ba a bayyana a sarari ba amma yana nuna ƙimar da ba ta dace ba sabo. Siga yanayin = 'ƙara' yana nuna cewa fayilolin suna daga kundin adireshi inda chechout, yayin da aka ɓace daga ma'ajiyar, zauna ba a taɓa ba.

Mataki na biyu da aka ƙara shine kiran rubutun fitina tare da siga hello a gefe Mai aiki- daga directory /gida/habr/ma'aikaci/Project/gina tare da canjin yanayi PATHONPATH=... Don haka, zaku iya rubuta rubutun ku kuma ku aiwatar da su a gefe Mai aiki-a kowane mataki util.ShellCommand. Ana iya sanya waɗannan rubutun kai tsaye cikin ma'ajiya. Sannan a chechout-e za su fada cikin /gida/habr/ma'aikaci/Project/gina. Duk da haka, akwai "amma" guda biyu:

  1. Mai aiki dole ne a ƙirƙira da maɓalli --mask don kada ya toshe haƙƙin zartarwa bayan wurin biya- The.
  2. a git tura-e daga cikin waɗannan rubutun kuna buƙatar tantance kayan mdon haka daga baya chechout-e bai rasa hakkin aiwatar da rubutun Git ba.

5.6 magina


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

Game da abin da yake magini aka fada a nan. Yanzu zan gaya muku dalla-dalla game da yadda ake ƙirƙirar shi. BuilderConfig gini ne gini. Irin waɗannan masu zanen kaya a c['masu ginin'] za ka iya ƙayyade da yawa, tun da wannan takarda ce ta abubuwa gini nau'in. Yanzu bari mu sake rubuta misali daga BuildBot, kawo shi kusa da aikinmu.


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

Yanzu zan gaya muku game da sigogi BuilderConfig.

sunan ƙayyade sunan gini-a. Anan muka sanya masa suna Aikin ku... Wannan yana nufin cewa akan Mai aiki- wannan ita kanta za a ƙirƙira /gida/habr/ma'aikaci/Project/gina. Sheduler neman gini kawai da wannan sunan.

sunayen ma'aikata ya ƙunshi takarda Mai aiki-s. Kowanne daga cikinsu dole ne a kara shi c['ma'aikata'].

factory - takamaiman gina, wanda ake dangantawa da shi gini. Zai aika abin gina a kan Mai aiki don kammala duk matakan da ke cikin wannan gina- The.

6. Misalin tsarin ku

Ga misalin gine-ginen aikin da na ba da shawarar aiwatarwa ta hanyar BuildBot
.

Za mu yi amfani da shi azaman tsarin sarrafa sigar svn. Ma'ajiyar da kanta za ta kasance a cikin wani nau'in gajimare. Ga adireshin wannan girgijen svn.host/svn/yourProject/trunk. A cikin girgijen da ke ƙasa svn akwai sunan mai amfani na asusu: mai amfani, passwd: password. Rubutun da ke wakiltar matakai gina-a kuma zai kasance a cikin reshe svn, a cikin babban fayil daban buildbot/ma'aikacin_linux. Waɗannan rubutun suna cikin ma'ajiya tare da adana kayan aiwatarwa.

BuildMaster и Mai aiki gudu a kan mai masaukin baki daya aikin.mai masaukin baki .BuildMaster yana adana fayilolinsa a cikin babban fayil /gida/habr/master. Mai aiki ana adana shi ta hanya mai zuwa /gida/habr/ma'aikaci. Tsarin sadarwa BuildMaster-a kuma Mai aiki-a ana aiwatar da shi ta hanyar tashar jiragen ruwa 4000 bisa ga ka'ida BuildBot-a, wato 'pb' yarjejeniya.

An rubuta aikin da aka yi niyya gaba ɗaya cikin Python. Ayyukan shine bin diddigin canje-canjensa, ƙirƙirar fayil ɗin da za a iya aiwatarwa, samar da takardu, da gudanar da gwaji. Idan aka gaza, duk masu haɓakawa suna buƙatar aika saƙo ta imel da ke bayyana cewa akwai wani mataki da bai yi nasara ba.

Nunin yanar gizo BuildBot za mu haɗa zuwa tashar jiragen ruwa 80 don aikin.mai masaukin baki. Ba lallai ba ne don shigar Apatch. A matsayin wani ɓangare na ɗakin karatu Twisted akwai rigar gidan yanar gizo, BuildBot yana amfani da shi.

Don adana bayanan ciki don BuildBot ем использовать sqlite.

Ana buƙatar mai watsa shiri don aikawa smtp.yankin ku - yana ba da damar aika haruffa daga wasiku [email kariya] ba tare da tantancewa ba. Hakanan akan host'SMTP ' Ana jin mintuna a post 1025.

Akwai mutane biyu da ke cikin aikin: admin и mai amfani. gudanarwa BuildBot. mai amfani shine mutumin da yake aikatawa aikata-s.

Ana haifar da fayil ɗin da za a iya cirewa ta hanyar pyinstaller. Ana samar da takaddun ta hanyar doxygen.

Don wannan gine-gine na rubuta wannan: maigida.cfg:

maigida.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"
}

Da farko kana bukata ƙirƙira BuildMaster-a kuma Mai aiki-a. Sannan liƙa wannan fayil ɗin maigida.cfg в /gida/habr/master.

Mataki na gaba shine fara sabis ɗin BuildMasteraa


sudo buildbot start /home/habr/master

Sannan fara sabis ɗin Mai aiki-a


buildbot-worker start /home/habr/worker

Shirya! Yanzu Buildbot zai bi diddigin canje-canje da kunnawa aikata-y in svn, Yin matakan ginawa da gwada aikin tare da gine-ginen da ke sama.

A ƙasa zan bayyana wasu fasalulluka na sama maigida.cfg.

6.1 A kan hanyar zuwa ga ubangijinka.cfg


Yayin rubuta na maigida.cfg Za a yi kurakurai da yawa, don haka za a buƙaci karanta fayil ɗin log ɗin. Ana adana shi azaman BuildMaster-ec cikakkiyar hanya /home/habr/master/twistd.log, kuma a gefe Mai aiki-a tare da cikakkiyar hanya /home/habr/ma'aikata/twistd.log. Yayin da kuke karanta kuskuren kuma gyara shi, kuna buƙatar sake kunna sabis ɗin BuildMaster-a. Ga yadda ake yi:


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

6.2 Yin aiki tare da 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)

Da farko, bari mu duba svn_poller. Wannan har yanzu iri ɗaya ne, ana yin zaɓe akai-akai sau ɗaya a minti daya. A wannan yanayin svn_poller kawai shiga reshe akwati. Siga mai ban mamaki split_file=util.svn.split_file_alwaysrunk ya kafa dokoki: yadda ake karya tsarin babban fayil svn a kan rassan. Ya kuma ba su hanyoyin zumunta. A bi da bi split_file_alwaysstrunk yana sauƙaƙa tsarin ta hanyar cewa ma'ajiyar ta ƙunshi kawai akwati.

В Masu tsarawa nuna Canza tacewamai gani Babu kuma yana danganta reshe da shi akwati bisa ga wata kungiya ta hanyar split_file_alwaysstrunk. Amsa ga canje-canje a akwati, Ƙaddamarwa gini da suna Aikin ku.

Properties Anan ana buƙatar don admin ya karɓi lissafin wasiƙa na ginawa da sakamakon gwaji a matsayin mai tsarin.

Mataki gina-a wurin biya mai ikon share duk wani fayiloli gaba ɗaya da ke cikin sigar wurin ajiyar ma'ajiyar Mai aiki-A. Sannan ku cika sabunta svn. An saita yanayin ta hanyar siga yanayin = cikakke, hanya = sabo. Siga haltOnTailure yace idan sabunta svn za a kashe shi tare da kuskure, sa'an nan kuma ya kamata a dakatar da dukan tsarin gine-gine da gwaji, tun da ƙarin ayyuka ba su da ma'ana.

6.3 Wasika zuwa gare ku: 'yan jaridu suna da izinin bayyana


labarai sabis ne don aika sanarwa ta imel.


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]

Yana iya aika saƙonni hanyoyi daban-daban.

MailNotifier yana amfani da imel don aika sanarwa.

template_html saita samfurin rubutu don wasiƙar. Ana amfani da HTML don ƙirƙirar alama. Injin yana gyara shi jinji 2 (ana iya kwatanta shi da django). BuildBot yana da saitin sauye-sauye waɗanda aka musanya kimarsu cikin samfuri yayin aiwatar da samar da rubutun saƙo. Waɗannan mabambantan an haɗa su cikin {{ takalmin gyaran kafa biyu }}. Misali, summary yana nuna matsayin ayyukan da aka kammala, wato nasara ko gazawa. A ayyukan zai fitar Aikin ku. Don haka, ta amfani da umarnin sarrafawa a ciki jinji 2, masu canji BuildBot-a da kayan aikin tsara kirtani na Python, zaku iya ƙirƙirar saƙo mai cikakken bayani.

MailNotifier ya ƙunshi dalilai masu zuwa.

daga addr - adireshin da kowa zai karɓi wasiƙar.

sendToInterestUsers=Gaskiya na aika sako ga mai shi da mai amfani da ya yi aikata.

duba sama - kari wanda dole ne a saka shi zuwa sunayen masu amfani da ke karɓar wasiƙar. Don haka admin yadda mai amfani zai karɓi wasiƙar a adireshin [email kariya].

relayhost Yana ƙayyade sunan mai masauki wanda aka buɗe uwar garken akansa SMTP, a smptPort ƙayyade lambar tashar jiragen ruwa da ke saurare SMTP uwar garken.

yanayin = "gargadi" ya ce aika aika ya kamata a yi kawai idan akwai aƙalla mataki ɗaya gina-a, wanda ya ƙare tare da gazawar matsayi ko gargadi. A cikin yanayin nasara, babu buƙatar aika wasiƙar labarai.

karin masu karɓa ya ƙunshi jerin mutanen da ya kamata a aika wa saƙon ban da mai shi da wanda ya yi aikin aikata.

messageFormatter wani abu ne da ke fayyace tsarin saƙon, samfurin sa, da saitin masu canji da ke samuwa daga jinji 2. Zabuka kamar wantProperties=Gaskiya и wantSteps=Gaskiya ayyana wannan saitin masu canji masu samuwa.

tare da['sabis']=[sendMessageToAll] yana ba da jerin ayyuka, waɗanda namu za su kasance labaru.

Mun yi shi! Ina taya ku murna

Mun ƙirƙira namu sanyi kuma mun ga aikin da yake iyawa. BuildBot. Wannan, ina tsammanin, ya isa ya fahimci ko ana buƙatar wannan kayan aiki don ƙirƙirar aikin ku. Kuna sha'awar shi? Shin zai zama da amfani a gare ku? Shin yana jin daɗin yin aiki tare? To, ba a banza nake rubuta wannan labarin ba.

Kuma gaba. Ina son ƙwararrun al'umma suyi amfani da su BuildBot, ya zama mai faɗi, an fassara littattafai, kuma akwai ƙarin misalai.

Na gode duka saboda kulawar ku. Sa'a.

source: www.habr.com

Add a comment