A nevem Jevgenyij Cserkin, Programozó vagyok egy bányászati cég fejlesztőcsapatában Polimetál.
Bármilyen nagy projekt elindításakor elkezd gondolkodni: „Milyen szoftverrel lehet a legjobban szervizelni?” Egy IT-projekt több szakaszon megy keresztül, mielőtt kiadná a következő verziót. Jó, ha ezeknek a szakaszoknak a láncolata automatizált. Magának egy IT-projekt új verziójának kiadásának automatizált folyamatát nevezzük Folyamatos integráció. BuildBot jó asszisztensnek bizonyult számunkra ennek a folyamatnak a megvalósításában.
Ebben a cikkben úgy döntöttem, hogy áttekintést adok a lehetőségekről BuildBot. Mire képes ez a szoftver? Hogyan közeledjünk hozzá és hogyan építsünk ki vele egy normális HATÉKONY MUNKAKAPCSOLATOT? Tapasztalatainkat saját maga is alkalmazhatja, ha működő szolgáltatást hoz létre projektjének felépítéséhez és teszteléséhez a gépén. Tartalom
Korábban a habr-e-n találkoztam a megvalósításról szóló cikkekkel Folyamatos integráció felhasználásával BuildBot. Például, Ezt Ezt találtam a leginformatívabbnak. Van egy másik példa - könnyebb. Ezeket a cikkeket lehet fűszerezni példa a kézikönyvbőlÉs ezt utána angolul. A kupé jó kiindulópont. Miután elolvasta ezeket a cikkeket, valószínűleg azonnal szeretne valamit BuildBot csinálni.
Állj meg! Valaki használta már a projektjeiben? Kiderül, hogy igen sok alkalmazták feladataik során. Található példák használat BuildBot és a Google kódarchívumában.
Tehát mi az emberek logikája Buildbot? Végül is vannak más eszközök: Tempomat и Jenkins. így válaszolok. A legtöbb feladathoz Jenkins és az igazság elég lesz. viszont BuildBot - alkalmazkodóbb, miközben a problémákat olyan egyszerűen oldják meg, mint a benn Jenkins. A választás a tiéd. De mivel egy fejlesztési célprojekthez keresünk egy eszközt, miért ne válasszunk olyat, amelyik egyszerű lépésekből kiindulva lehetővé teszi egy interaktivitással és egyedi felülettel rendelkező build rendszer elkészítését.
Azok számára, akiknek a célprojektje pythonban van megírva, felvetődik a kérdés: „Miért ne válasszon olyan integrációs rendszert, amely világos felülettel rendelkezik a projektben használt nyelv szempontjából?” És most itt az ideje bemutatni az előnyöket BuildBot.
Tehát a mi „hangszeres kvartettünk”. Saját magam számára négy jellemzőt azonosítottam BuildBot:
Ez egy nyílt forráskódú keretrendszer GPL licenc alatt
Ez a python használata konfigurációs eszközként és a szükséges műveletek leírása
Ez egy lehetőség arra, hogy választ kapjon attól a géptől, amelyen az összeszerelés történik
Végül ezek a minimális követelmények a gazdagéphez. A telepítéshez python és twisted szükséges, és nincs szükség virtuális gépre és java gépre.
2. A BuildMaster által vezetett koncepció
A feladatelosztási architektúra központi eleme BuildMaster. Ez egy olyan szolgáltatás, amely:
nyilvántartja változások a projekt forrásfájában
küld parancsok, amelyeket a Worker szolgáltatásnak végre kell hajtania a projekt felépítéséhez és teszteléséhez
értesíti a felhasználókat a megtett intézkedések eredményeiről
BuildMaster fájlon keresztül konfigurálva master.cfg. Ez a fájl a gyökérben van BuildMaster. Később megmutatom, hogyan jön létre ez a gyökér. Maga a fájl master.cfg python szkriptet tartalmaz, amely hívásokat használ BuildBot.
Következő legfontosabb tárgy BuildBot Ez egy név Munkás. Ez a szolgáltatás elindítható egy másik, eltérő operációs rendszerrel rendelkező gazdagépen, vagy esetleg azon, ahol BuildMaster. Különlegesen előkészített virtuális környezetben is létezhet saját csomagokkal és változókkal. Ezek a virtuális környezetek python segédprogramokkal készíthetők elő, mint pl virtualenv, venv.
BuildMaster parancsokat sugároz mindenkinek Munkás-y, és ő viszont teljesíti őket. Vagyis kiderül, hogy a projekt felépítésének és tesztelésének folyamata folytatódhat Munkás-e Windows rendszeren és egy másik, Linuxot futtató Workeren.
Pénztár projekt forráskódja mindegyiken előfordul Munkás-e.
3. Telepítés
Akkor gyerünk. Az Ubuntu 18.04-et fogom használni gazdagépként. teszek rá egyet BuildMaster-egy és egy Munkás-a. De először telepítenie kell a python3.7-et:
A következő lépés a telepítés Tweetelt и BuildBot, valamint a további funkciók használatát lehetővé tevő csomagok BuildBot-a.
/*Все что под 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. Első lépések
Ideje alkotni BuildMaster. A mi mappánkban lesz /home/habr/master.
mkdir master
buildbot create-master master # Собственно сдесь и создаем
Következő lépés. Alkossunk Munkás. A mi mappánkban lesz /home/habr/worker.
Amikor futsz Munkás, akkor alapértelmezés szerint itt jön létre /home/habr/worker pontban megadott projekt nevével ellátott mappát master.cfg. És a projekt nevével rendelkező mappában létrehoz egy könyvtárat épít, és továbbra is ezt fogja tenni kijelentkezés. Munkakönyvtár a számára Munkás-és könyvtár lesz belőle /home/habr/yourProject/build.
"Aranykulcs
És most, amiért az előző bekezdést írtam: egy forgatókönyv, amiért Mester től fog követelni Munkás-és távolról ebben a könyvtárban végrehajtott művelet nem hajtódik végre, mert a szkriptnek nincs jogosultsága a futtatáshoz. A helyzet javításához kulcsra lesz szüksége --umask=0o22, amely tiltja az írást ebbe a könyvtárba, de megtartja az indítási jogokat. És ez minden, amire szükségünk van.
BuildMaster и Munkás kapcsolatot teremtenek egymással. Előfordul, hogy leszakad és Munkás vár egy ideig a válaszra BuildMaster-A. Ha nem érkezik válasz, a kapcsolat újraindul. Kulcs --keepalive=60 csak jelezni kellett, hogy mennyi idő után connect újraindul.
5. Konfiguráció. Lépésről lépésre recept
Configuration BuildMaster a gép azon oldalán hajtják végre, ahol a parancsot végrehajtottuk teremt-mester. Esetünkben ez egy könyvtár /home/habr/master. Konfigurációs fájl master.cfg még nem létezik, de maga a parancs már létrehozta a fájlt master.cmg.sample. Át kell nevezned erre master.cfg.sample в master.cfg
mv master.cfg.sample master.cfg
Nyissuk ki ezt master.cfg. És nézzük, miből áll. És ezek után próbáljuk meg elkészíteni a saját konfigurációs fájlunkat.
BuildmasterConfig — a konfigurációs fájl alapszótára. Ennek szerepelnie kell a konfigurációs fájlban. A könnyebb használat érdekében a konfigurációs kódban egy álnév szerepel "c". Címek kulcsok в c["keyFromDist"] rögzített elemek az interakcióhoz BuildMaster. Minden kulcsnál a megfelelő objektumot értékként helyettesítjük.
Ezúttal jelezzük BuildMaster-y listája Munkás-s. Magamat Munkás teremtettünk felett, jelezve te-munkás-név и jelszó. Most helyettük meg kell adni őket példa-munkás и elhalad .
Kulccsal változás_forrás szótár c hozzáférést kapunk ahhoz a listához, ahová el szeretnénk helyezni egy objektumot, amely lekérdezi a tárat a projekt forráskódjával. A példa egy Git-tárat használ, amely bizonyos időközönként lekérdezésre kerül.
Az első érv a tárhelyhez vezető útvonal.
munkakönyvtár az oldalon lévő mappa elérési útját jelöli Munkás- az út rokona /home/habr/worker/yourProject/build A git a tárhely helyi verzióját fogja tárolni.
ág tartalmaz egy adott ágat az adattárban, amelyet követni kell.
pollInterval másodpercek számát tartalmazza, amely után BuildMaster lekérdezi az adattárat a változtatásokról.
Számos módszer létezik a projekt lerakatában bekövetkezett változások nyomon követésére.
A legegyszerűbb módszer az Szavazás, ami arra utal BuildMaster időszakonként lekérdezi a szervert a tárolóval. Ha elkövetni tükrözte az adattár változásait, akkor BuildMaster némi késéssel létrehoz egy belső objektumot Változtat és küldje el az eseménykezelőnek Scheduler, amely elindítja a projekt felépítésének és tesztelésének lépéseit Munkás-e. Ezen lépések között lesz feltüntetve frissítés adattár. Pontosan be MunkásEzzel létrehoz egy helyi másolatot a tárhelyről. Ennek a folyamatnak a részleteiről alább, a következő két részben lesz szó. (5.4 и 5.5).
A lerakat változásainak nyomon követésének még elegánsabb módszere, ha üzeneteket küldünk közvetlenül az azt tároló szerverről BuildMaster- a projekt forráskódjainak megváltoztatásáról. Ebben az esetben, amint a fejlesztő teszi elkövetni, a projekttárolóval rendelkező szerver üzenetet küld BuildMaster-y. Ő pedig egy tárgy létrehozásával elfogja PBChangeSource. Ezután ez az objektum átkerül ide Scheduler, amely aktiválja a projekt felépítésének és tesztelésének lépéseit. Ennek a módszernek egy fontos része a munka horog-kiszolgáló szkriptek a tárolóban. A forgatókönyvben horog-a, felelős a feldolgozási műveletekért, amikor elkövetni-e, fel kell hívnia a segédprogramot változás küldése és adja meg a hálózati címet BuildMaster-A. Azt is meg kell adnia a hálózati portot, amelyik figyelni fog PBChangeSource. PBChangeSource, mellesleg része BuildMaster-A. Ehhez a módszerhez engedély szükséges admin-a azon a szerveren, ahol a projekttár található. Először biztonsági másolatot kell készítenie a tárhelyről.
ütemezők – ez egy olyan elem, amely elindítja a projekt teljes összeszerelési és tesztelési láncát.
Azok a változások, amelyeket rögzítettek változás_forrás, átalakult a munkafolyamat során BuildBot-a kifogásolni Változtat és most minden Sheduler ezek alapján kéréseket állít össze a projektépítési folyamat elindításához. Ugyanakkor azt is meghatározza, hogy ezek a kérések mikor kerülnek tovább a várakozási sorba. Egy tárgy Építész tárolja a kérések sorát, és egy különálló egységen követi nyomon az aktuális összeállítás állapotát Munkás-e. Építész -on létezik BuildMaster-e és tovább Munkás-e. -vel küldi BuildMaster-a bekapcsolva Munkás-és már konkrét épít - követendő lépések sorozata.
A mostani példában ezt látjuk ütemezők 2 darab készül. Ráadásul mindegyiknek megvan a maga típusa.
SingleBranchScheduler – az egyik legnépszerűbb óra az órarendben. Egy ágat figyel, és az abban rögzített változás váltja ki. Ha változásokat lát, késleltetheti az összeállítási kérés elküldését (elhalaszthatja a speciális paraméterben megadott ideig treeStableTimer). BAN BEN név beállítja a megjelenő ütemezés nevét BuildBot- webes felület. BAN BEN ChangeFilter be van állítva egy szűrő, amelynek áthaladása után az ágban bekövetkezett változások felszólítják az ütemezést építési kérelem küldésére. BAN BEN builderNames név van feltüntetve építész-a, amit kicsit később állítunk be. A név esetünkben megegyezik a projekt nevével: a projekted.
ForceScheduler nagyon egyszerű dolog. Az ilyen típusú ütemezést egy egérkattintás váltja ki BuildBot- webes felület. A paraméterek lényege ugyanaz, mint itt SingleBranchScheduler.
PS No. 3. Talán jól fog jönni Időszakos egy ütemezés, amely egy bizonyos időben rögzített gyakorisággal fut. A hívás valahogy így néz ki
periodicBuildTimer másodpercben adja meg ennek a periodicitásnak az idejét.
BuildFactory specifikusat hoz létre épít, ami akkor építész címre küldi Munkás. -Ban BuildFactory jelzi a követendő lépéseket Munkás-y. Lépéseket adunk hozzá a metódus meghívásával addStep
Az első hozzáadott lépés ebben a példában az git tiszta -d -f -f -x, akkor git pénztár. Ezeket a műveleteket a paraméter tartalmazza módszer, ami nincs egyértelműen megadva, de egy alapértelmezett értékre utal friss... Paraméter mode='növekményes' azt jelzi, hogy a fájlok abból a könyvtárból származnak, ahol a chechout, bár hiányzik az adattárból, érintetlen marad.
A második hozzáadott lépés a szkript meghívása próba paraméterrel szia oldalán Munkás-a a könyvtárból /home/habr/worker/yourProject/build a PATHONPATH= környezeti változóval, így saját szkripteket írhat és végrehajthatja azokat az oldalon Munkás- minden lépést util.ShellCommand. Ezek a szkriptek közvetlenül elhelyezhetők a tárolóban. Aztán at chechout-e bele fognak esni /home/habr/worker/yourProject/build. Azonban van két „de”:
Munkás kulccsal kell létrehozni --umask hogy utána ne blokkolja a végrehajtási jogokat kijelentkezés-a.
-On git push-E szkriptek közül meg kell adnia a tulajdonságot menthetőhogy később chechout-e nem veszítette el a Git szkript végrehajtásának jogát.
Arról, ami van Építész elmondták itt. Most részletesebben elmondom, hogyan kell létrehozni. BuilderConfig egy kivitelező építész. Ilyen tervezők be c['építők'] Többet is megadhat, mivel ez egy objektumlap építész típus. Most írjuk át a példát innen BuildBot, közelebb hozva a feladatunkhoz.
név megadja a nevet építész-a. Itt neveztük el a projekted... Ez azt jelenti, hogy tovább Munkás- ez az út jön létre /home/habr/worker/yourProject/build. Sheduler keresni építész csak ezen a néven.
munkásnevek lapot tartalmaz Munkás-s. Mindegyiket hozzá kell adni c['dolgozók'].
gyár - konkrét épít, amelyhez kapcsolódik építész. Elküldi a tárgyat épít on Munkás az ebben foglalt összes lépés végrehajtásához épít-a.
6. Példa a saját konfigurációjára
Íme a példaprojekt-architektúra, amelyet ezen keresztül javasolok megvalósítani BuildBot .
Verziókezelő rendszerként fogjuk használni svn. Maga az adattár valamilyen felhőben fog elhelyezkedni. Itt van ennek a felhőnek a címe svn.host/svn/yourProject/trunk. A felhőben alatta svn van egy fiók felhasználónév: használó, passwd: jelszó. Lépéseket ábrázoló parancsfájlok épít-a is a fiókban lesz svn, külön mappában buildbot/worker_linux. Ezek a szkriptek a mentett tulajdonsággal rendelkező lerakatban találhatók végrehajtható.
BuildMaster и Munkás ugyanazon a gazdagépen fut project.host .BuildMaster mappában tárolja a fájljait /home/habr/master. Munkás a következő útvonalon tárolódik /home/habr/worker. Folyamat kommunikáció BuildMaster-a és Munkás-a a 4000-es porton keresztül történik a protokoll szerint BuildBot-a, vagyis "pb" jegyzőkönyv.
A célprojekt teljes egészében Pythonban van megírva. A feladat a változások követése, végrehajtható fájl létrehozása, dokumentáció generálása és tesztelés. Sikertelenség esetén minden fejlesztőnek üzenetet kell küldenie e-mailben arról, hogy sikertelen művelet történt.
Webes megjelenítés BuildBot a 80-as porthoz fogunk csatlakozni project.host. Az Apatch telepítése nem szükséges. A könyvtár részeként sodrott már van webszerver, BuildBot használja.
Belső információk tárolására BuildBot használni fogjuk sqlite.
A postázáshoz host szükséges smtp.your.domain - lehetővé teszi a levelek küldését postáról [e-mail védett]hitelesítés nélkül. a műsorvezetőn issmtp A jegyzőkönyvet az 1025-ös postán hallgatják meg.
Két személy vesz részt a folyamatban: admin и használó. admin adminisztrál BuildBot. felhasználó az elkövető személy elkövetni-s.
A végrehajtható fájl a következőn keresztül jön létre pyinstaller. A dokumentáció a következőn keresztül történik doxigén.
Ehhez az architektúrához ezt írtam: master.cfg:
master.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"
}
Először is kell teremtBuildMaster-a és Munkás-a. Ezután illessze be ezt a fájlt master.cfg в /home/habr/master.
A következő lépés a szolgáltatás elindítása BuildMasters
sudo buildbot start /home/habr/master
Ezután indítsa el a szolgáltatást Munkás-a
buildbot-worker start /home/habr/worker
Kész! Most Buildbot nyomon követi a változásokat és aktiválja elkövetni-y be svn, a fenti architektúrával egy projekt felépítésének és tesztelésének lépéseit végrehajtva.
Az alábbiakban a fentiek néhány jellemzőjét ismertetem master.cfg.
6.1 Útban a mesterhez.cfg
Írás közben az én master.cfg Sok hiba történik, ezért el kell olvasni a naplófájlt. ként van tárolva BuildMaster-ec abszolút út /home/habr/master/twistd.log, és az oldalán Munkás-a abszolút úttal /home/habr/worker/twistd.log. A hiba elolvasása és kijavítása során újra kell indítania a szolgáltatást BuildMaster-a. Íme, hogyan történik:
Először is vessünk egy pillantást svn_poller. Ez továbbra is ugyanaz a felület, rendszeresen percenként egyszer lekérdezi a tárolót. Ebben az esetben svn_poller csak az ághoz fér hozzá törzs. Titokzatos paraméter split_file=util.svn.split_file_alwaystrunk meghatározza a szabályokat: hogyan bontsuk fel a mappastruktúrát svn az ágakon. Relatív utakat is kínál nekik. Viszont split_file_alwaystrunk leegyszerűsíti a folyamatot azzal, hogy a tároló csak tartalmaz törzs.
В Ütemezések jelzett ChangeFilteraki látja Egyik sem és ágat társít hozzá törzs egy adott asszociáció szerint keresztül split_file_alwaystrunk. A változásokra reagálva törzs, Elindul építész névvel a projekted.
ingatlanait itt azért van rá szükség, hogy az adminisztrátor a folyamat tulajdonosaként megkapja a felépítési és tesztelési eredmények levelezési listáit.
Lépés épít-a kijelentkezés képes teljesen törölni a tárhely helyi verziójában található fájlokat Munkás-A. És akkor csináld meg a teljes svn frissítés. Az üzemmód a paraméteren keresztül állítható be mód=teljes, method=friss... Paraméter haltOnTailure azt mondja, hogy ha svn frissítés hibával fog végrehajtani, akkor a teljes építési és tesztelési folyamatot fel kell függeszteni, mivel a további műveleteknek nincs értelme.
6.3 Levél Önnek: a riporterek jogosultak nyilatkozni
riporterek egy szolgáltatás e-mailben történő értesítések küldésére.
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]
MailNotifier e-mailt használ az értesítések küldésére.
sablon_html beállítja a hírlevél szövegsablonját. A HTML-t jelölés létrehozására használják. A motor módosítja jinja2 (összehasonlítható django). BuildBot olyan változókkal rendelkezik, amelyek értékeit behelyettesítik a sablonba az üzenetszöveg generálása során. Ezek a változók {{ dupla kapcsos kapcsos zárójelek }} közé vannak zárva. Például, összefoglalás megjeleníti a befejezett műveletek állapotát, azaz sikert vagy sikertelenséget. A projektek ki fogja adni a projekted. Tehát a vezérlőparancsok használatával jinja2, változók BuildBot-a és python karakterlánc-formázó eszközökkel meglehetősen informatív üzenetet hozhat létre.
MailNotifier a következő érveket tartalmazza.
fromaddr – az a cím, ahonnan mindenki megkapja a hírlevelet.
sendTo InterestedUsersAz =True üzenetet küld a tulajdonosnak és a felhasználónak, aki létrehozta elkövetni.
lookup — egy utótag, amelyet a hírlevelet kapó felhasználók nevéhez kell adni. Így admin hogyan kapja meg a felhasználó a hírlevelet a címen [e-mail védett].
relayhost megadja azt a gazdagépnevet, amelyen a szerver megnyílik smtpEgy smptPort megadja a figyelő port számát smtp szerver.
mode="figyelmeztetés" azt mondja, hogy a postázást csak akkor szabad megtenni, ha van legalább egy lépés épít-a, amely állapothibával vagy figyelmeztetéssel végződött. Siker esetén nem kell hírlevelet küldeni.
extraRecipients tartalmazza azoknak a személyeknek a listáját, akiknek a postai küldeményt el kell küldeni a tulajdonoson és az azt végző személyen kívül elkövetni.
messageFormatter egy olyan objektum, amely meghatározza az üzenet formátumát, a sablonját és a változók készletét, amelyekről elérhető jinja2. Opciók, mint pl wantProperties=Igaz и wantSteps=Igaz definiálja az elérhető változók készletét.
with['services']=[sendMessageToAll] szolgáltatások listáját tartalmazza, amelyek között a miénk is lesz riporter.
Megcsináltuk! Gratulálunk
Megalkottuk saját konfigurációnkat, és láttuk, hogy milyen funkciókra képes. BuildBot. Azt hiszem, ez elég ahhoz, hogy megértsük, szükség van-e erre az eszközre a projekt létrehozásához. Érdekel téged? Hasznos lesz számodra? Kényelmes vele dolgozni? Akkor nem hiába írom ezt a cikket.
És tovább. Szeretném, ha a szakmai közösség használná BuildBot, szélesebb lett, kézikönyveket fordítottak le, és még több volt a példa.