BuildBot ఉపయోగించి నిరంతర ఏకీకరణను అమలు చేయడానికి ఒక ఉదాహరణ

BuildBot ఉపయోగించి నిరంతర ఏకీకరణను అమలు చేయడానికి ఒక ఉదాహరణ
(చిత్రం ద్వారా కంప్యూటరైజర్ నుండి పిక్సాబే)

వందనాలు!

నా పేరు ఎవ్జెనీ చెర్కిన్, నేను మైనింగ్ కంపెనీలో డెవలప్‌మెంట్ టీమ్‌లో ప్రోగ్రామర్‌ని పాలీమెటల్.

ఏదైనా పెద్ద ప్రాజెక్ట్‌ను ప్రారంభించేటప్పుడు, మీరు ఇలా ఆలోచించడం ప్రారంభిస్తారు: "దానిని నిర్వహించడానికి ఏ సాఫ్ట్‌వేర్‌ను ఉపయోగించడం ఉత్తమం?" తదుపరి సంస్కరణను విడుదల చేయడానికి ముందు IT ప్రాజెక్ట్ అనేక దశల గుండా వెళుతుంది. ఈ దశల గొలుసు స్వయంచాలకంగా ఉన్నప్పుడు ఇది మంచిది. IT ప్రాజెక్ట్ యొక్క కొత్త వెర్షన్‌ను విడుదల చేసే స్వయంచాలక ప్రక్రియ అంటారు నిరంతర ఇంటిగ్రేషన్. బిల్డ్‌బాట్ ఈ ప్రక్రియను అమలు చేయడంలో మాకు మంచి సహాయకుడిగా మారారు.

ఈ వ్యాసంలో నేను అవకాశాల యొక్క అవలోకనాన్ని అందించాలని నిర్ణయించుకున్నాను బిల్డ్‌బాట్. ఈ సాఫ్ట్‌వేర్ సామర్థ్యం ఏమిటి? అతనిని ఎలా సంప్రదించాలి మరియు అతనితో సాధారణ ప్రభావవంతమైన పని సంబంధాన్ని ఎలా నిర్మించుకోవాలి? మీ మెషీన్‌లో మీ ప్రాజెక్ట్‌ను నిర్మించడం మరియు పరీక్షించడం కోసం వర్కింగ్ సర్వీస్‌ని సృష్టించడం ద్వారా మీరు మా అనుభవాన్ని మీరే వర్తింపజేయవచ్చు.

కంటెంట్

కంటెంట్

1. బిల్డ్‌బాట్ ఎందుకు?
2. బిల్డ్ మాస్టర్ నేతృత్వంలోని కాన్సెప్ట్
3. సంస్థాపన
4. మొదటి దశలు

5. ఆకృతీకరణ. స్టెప్ బై స్టెప్ రెసిపీ

5.1 BuildmasterConfig
5.2 కార్మికులు
5.3 change_source
5.4 షెడ్యూలర్లు

5.5 బిల్డ్ ఫ్యాక్టరీ
5.6 మంది బిల్డర్లు

6. మీ స్వంత కాన్ఫిగరేషన్ యొక్క ఉదాహరణ

6.1 మీ మాస్టర్‌కి వెళ్లే మార్గంలో.cfg
6.2 svnతో పని చేస్తోంది
6.3 మీకు లేఖ: విలేఖరులకు ప్రకటించడానికి అధికారం ఉంది

మేము చేసాము! అభినందనలు

1. బిల్డ్‌బాట్ ఎందుకు?

గతంలో habr-eలో నేను అమలు గురించి కథనాలను చూశాను నిరంతర ఇంటిగ్రేషన్ ఉపయోగించి బిల్డ్‌బాట్. ఉదా, ఇది నాకు ఇది అత్యంత సమాచారంగా అనిపించింది. మరొక ఉదాహరణ ఉంది - సరళమైనది. ఈ వ్యాసాలు రుచికరం కావచ్చు మాన్యువల్ నుండి ఉదాహరణమరియు ఇది ఆ తర్వాత, ఆంగ్లంలో. కూపే ఒక మంచి ప్రారంభ స్థానం చేస్తుంది. ఈ కథనాలను చదివిన తర్వాత, మీరు వెంటనే ఏదైనా కోరుకోవచ్చు బిల్డ్‌బాట్ చేయడానికి.

ఆపు! ఎవరైనా తమ ప్రాజెక్ట్‌లలో దీన్ని నిజంగా ఉపయోగించారా? ఇది అవును అవుతుంది అనేక దానిని తమ పనుల్లో అన్వయించుకున్నారు. దొరుకుతుంది ఉదాహరణలు ఉపయోగం బిల్డ్‌బాట్ మరియు Google కోడ్ ఆర్కైవ్‌లలో.

కాబట్టి ప్రజలు ఉపయోగించే లాజిక్ ఏమిటి బిల్డ్‌బాట్? అన్ని తరువాత, ఇతర సాధనాలు ఉన్నాయి: క్రూజ్ కంట్రోల్ и జెంకిన్స్. నేను ఈ విధంగా సమాధానం ఇస్తాను. చాలా పనుల కోసం జెంకిన్స్ మరియు నిజం సరిపోతుంది. దాని మలుపులో, బిల్డ్‌బాట్ - మరింత అనుకూలమైనది, అయితే సమస్యలు అక్కడ పరిష్కరించబడతాయి జెంకిన్స్. ని ఇష్టం. కానీ మేము అభివృద్ధి చెందుతున్న లక్ష్య ప్రాజెక్ట్ కోసం ఒక సాధనం కోసం చూస్తున్నందున, ఇంటరాక్టివిటీ మరియు ప్రత్యేకమైన ఇంటర్‌ఫేస్‌ను కలిగి ఉన్న బిల్డ్ సిస్టమ్‌ను పొందేందుకు సాధారణ దశల నుండి ప్రారంభించి అనుమతించే ఒకదాన్ని ఎందుకు ఎంచుకోకూడదు.

లక్ష్యం ప్రాజెక్ట్ పైథాన్‌లో వ్రాయబడిన వారికి, ప్రశ్న తలెత్తుతుంది: “ప్రాజెక్ట్‌లో ఉపయోగించిన భాష పరంగా స్పష్టమైన ఇంటర్‌ఫేస్‌ని కలిగి ఉన్న ఇంటిగ్రేషన్ సిస్టమ్‌ను ఎందుకు ఎంచుకోకూడదు?” మరియు ఇప్పుడు ప్రయోజనాలను ప్రదర్శించే సమయం వచ్చింది బిల్డ్‌బాట్.

కాబట్టి, మా "వాయిద్య చతుష్టయం". నా కోసం, నేను నాలుగు లక్షణాలను గుర్తించాను బిల్డ్‌బాట్:

  1. ఇది GPL లైసెన్స్ క్రింద ఒక ఓపెన్ సోర్స్ ఫ్రేమ్‌వర్క్
  2. ఇది పైథాన్‌ను కాన్ఫిగరేషన్ సాధనంగా ఉపయోగించడం మరియు అవసరమైన చర్యల వివరణ
  3. అసెంబ్లీ జరిగే యంత్రం నుండి ప్రతిస్పందనను స్వీకరించడానికి ఇది ఒక అవకాశం
  4. ఇవి, చివరకు, హోస్ట్‌కి కనీస అవసరాలు. విస్తరణకు పైథాన్ మరియు ట్విస్టెడ్ అవసరం మరియు వర్చువల్ మెషీన్ మరియు జావా మెషీన్ అవసరం లేదు.

2. బిల్డ్ మాస్టర్ నేతృత్వంలోని కాన్సెప్ట్

BuildBot ఉపయోగించి నిరంతర ఏకీకరణను అమలు చేయడానికి ఒక ఉదాహరణ

టాస్క్ డిస్ట్రిబ్యూషన్ ఆర్కిటెక్చర్‌కు ప్రధానమైనది బిల్డ్ మాస్టర్. ఇది ఒక సేవ:

  • ట్రాక్ చేస్తుంది ప్రాజెక్ట్ మూల చెట్టులో మార్పులు
  • పంపుతుంది ప్రాజెక్ట్‌ను నిర్మించడానికి మరియు దానిని పరీక్షించడానికి వర్కర్ సర్వీస్ ద్వారా అమలు చేయవలసిన ఆదేశాలు
  • తెలియజేస్తుంది తీసుకున్న చర్యల ఫలితాల గురించి వినియోగదారులు

బిల్డ్ మాస్టర్ ఫైల్ ద్వారా కాన్ఫిగర్ చేయబడింది master.cfg. ఈ ఫైల్ రూట్‌లో ఉంది బిల్డ్ మాస్టర్. ఈ రూట్ ఎలా సృష్టించబడుతుందో నేను తరువాత చూపిస్తాను. ఫైల్ కూడా master.cfg కాల్‌లను ఉపయోగించే పైథాన్ స్క్రిప్ట్‌ను కలిగి ఉంది బిల్డ్‌బాట్.

తదుపరి అత్యంత ముఖ్యమైన వస్తువు బిల్డ్‌బాట్ ఒక పేరు ఉంది వర్కర్. ఈ సేవ వేరొక హోస్ట్‌లో వేరే OSతో ప్రారంభించబడవచ్చు లేదా ఎక్కడైనా ప్రారంభించవచ్చు బిల్డ్ మాస్టర్. ఇది దాని స్వంత ప్యాకేజీలు మరియు వేరియబుల్స్‌తో ప్రత్యేకంగా సిద్ధం చేయబడిన వర్చువల్ వాతావరణంలో కూడా ఉంటుంది. వంటి పైథాన్ యుటిలిటీలను ఉపయోగించి ఈ వర్చువల్ పరిసరాలను సిద్ధం చేయవచ్చు virtualenv, venv.

బిల్డ్ మాస్టర్ అందరికీ ఆదేశాలను ప్రసారం చేస్తుంది వర్కర్-y, మరియు అతను వాటిని నెరవేరుస్తాడు. అంటే, ప్రాజెక్ట్‌ను నిర్మించడం మరియు పరీక్షించడం ప్రక్రియ కొనసాగుతుందని తేలింది వర్కర్-e Windows మరియు Linux నడుస్తున్న మరొక వర్కర్‌లో నడుస్తోంది.

చెక్అవుట్ ప్రాజెక్ట్ సోర్స్ కోడ్‌లు ఒక్కొక్కటిగా ఉంటాయి వర్కర్-ఇ.

3. సంస్థాపన

కనుక మనము వెళ్దాము. నేను ఉబుంటు 18.04ని హోస్ట్‌గా ఉపయోగిస్తాను. నేను దానిపై ఒకటి ఉంచుతాను బిల్డ్ మాస్టర్-ఒక మరియు ఒకటి వర్కర్-ఎ. అయితే ముందుగా మీరు python3.7ని ఇన్‌స్టాల్ చేయాలి:

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

3.7.2కి బదులుగా python3.7.1 అవసరమైన వారికి, మీరు ఈ క్రింది వాటిని చేయవచ్చు:


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

తదుపరి దశ ఇన్‌స్టాల్ చేయడం అని ట్వీట్ చేశారు и బిల్డ్‌బాట్, అలాగే అదనపు కార్యాచరణను ఉపయోగించడానికి మిమ్మల్ని అనుమతించే ప్యాకేజీలు బిల్డ్‌బాట్-ఎ.


/*Все что под 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. మొదటి దశలు

సృష్టించడానికి సమయం బిల్డ్ మాస్టర్. ఇది మన ఫోల్డర్‌లో ఉంటుంది / home/habr/master.

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

తరువాత ప్రక్రియ. సృష్టిద్దాం వర్కర్. ఇది మన ఫోల్డర్‌లో ఉంటుంది / home/habr/worker.

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

మీరు పరిగెత్తినప్పుడు వర్కర్, అప్పుడు డిఫాల్ట్‌గా అది సృష్టించబడుతుంది / home/habr/worker ప్రాజెక్ట్ పేరుతో ఫోల్డర్, దీనిలో పేర్కొనబడింది master.cfg. మరియు ప్రాజెక్ట్ పేరుతో ఉన్న ఫోల్డర్‌లో అది డైరెక్టరీని సృష్టిస్తుంది నిర్మించడానికి, మరియు దీన్ని కొనసాగిస్తుంది చెక్అవుట్. కోసం వర్కింగ్ డైరెక్టరీ వర్కర్-మరియు అది డైరెక్టరీ అవుతుంది /home/habr/yourProject/build.

"గోల్డెన్ కీ
మరియు ఇప్పుడు నేను మునుపటి పేరాని వ్రాసిన దాని కోసం: ఒక స్క్రిప్ట్ మాస్టర్ నుండి డిమాండ్ చేస్తుంది వర్కర్-మరియు ఈ డైరెక్టరీలో రిమోట్‌గా చేసినది అమలు చేయబడదు ఎందుకంటే స్క్రిప్ట్‌కు అమలు చేయడానికి అనుమతులు లేవు. పరిస్థితిని సరిచేయడానికి, మీకు కీ అవసరం --umask=0o22, ఇది ఈ డైరెక్టరీకి వ్రాయడాన్ని నిషేధిస్తుంది, కానీ ప్రయోగ హక్కులను కలిగి ఉంటుంది. మరియు మనకు కావలసిందల్లా.

బిల్డ్ మాస్టర్ и వర్కర్ ఒకదానితో ఒకటి సంబంధాన్ని ఏర్పరచుకోండి. ఇది విచ్ఛిన్నం అవుతుంది మరియు వర్కర్ నుండి ప్రతిస్పందన కోసం కొంత సమయం వేచి ఉంది బిల్డ్ మాస్టర్-ఎ. ప్రతిస్పందన లేనట్లయితే, కనెక్షన్ పునఃప్రారంభించబడుతుంది. కీ --keepalive=60 ఆ తర్వాత సమయాన్ని సూచించడం అవసరం కనెక్ట్ రీబూట్ చేస్తుంది.

5. ఆకృతీకరణ. స్టెప్ బై స్టెప్ రెసిపీ

ఆకృతీకరణ బిల్డ్ మాస్టర్ మేము ఆదేశాన్ని అమలు చేసిన యంత్రం వైపున నిర్వహించబడుతుంది సృష్టించు-మాస్టర్. మా విషయంలో, ఇది డైరెక్టరీ / home/habr/master. కాన్ఫిగరేషన్ ఫైల్ master.cfg ఇంకా ఉనికిలో లేదు, కానీ కమాండ్ ఇప్పటికే ఫైల్‌ను సృష్టించింది master.cmg.నమూనా. మీరు దీనికి పేరు మార్చాలి master.cfg.నమూనా в master.cfg

mv master.cfg.sample master.cfg

దీన్ని తెరవండి master.cfg. మరియు అది ఏమి కలిగి ఉందో చూద్దాం. మరియు ఆ తర్వాత, మన స్వంత కాన్ఫిగరేషన్ ఫైల్‌ను తయారు చేయడానికి ప్రయత్నిద్దాం.

master.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 - కాన్ఫిగరేషన్ ఫైల్ యొక్క ప్రాథమిక నిఘంటువు. ఇది తప్పనిసరిగా కాన్ఫిగరేషన్ ఫైల్‌లో చేర్చబడాలి. వాడుకలో సౌలభ్యం కోసం, కాన్ఫిగరేషన్ కోడ్‌లో అలియాస్ పరిచయం చేయబడింది "సి". శీర్షికలు కీలు в c["కీఫ్రండిస్ట్"] పరస్పర చర్య కోసం స్థిర అంశాలు బిల్డ్ మాస్టర్. ప్రతి కీకి, సంబంధిత వస్తువు విలువగా భర్తీ చేయబడుతుంది.

5.2 కార్మికులు

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

ఈసారి మేము సూచిస్తాము బిల్డ్ మాస్టర్-y జాబితా వర్కర్-లు. నేనే వర్కర్ మేము సృష్టించాము అధిక, సూచిస్తుంది మీరు-కార్మికుడి పేరు и <span style="font-family: Mandali; "> పాస్‌వర్డ్</span>. ఇప్పుడు వాటికి బదులుగా పేర్కొనబడాలి ఉదాహరణ-కార్మికుడు и పాస్ .

5.3 change_source

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

కీ ద్వారా మార్పు_మూలం డిక్షనరీ c ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్‌తో రిపోజిటరీని పోల్ చేసే ఆబ్జెక్ట్‌ను ఉంచాలనుకుంటున్న జాబితాకు మేము యాక్సెస్‌ను పొందుతాము. ఉదాహరణ నిర్దిష్ట వ్యవధిలో పోల్ చేయబడిన Git రిపోజిటరీని ఉపయోగిస్తుంది.

మొదటి వాదన మీ రిపోజిటరీకి మార్గం.

పనివాడు ప్రక్కన ఉన్న ఫోల్డర్‌కు మార్గాన్ని సూచిస్తుంది వర్కర్- మార్గానికి బంధువు /home/habr/worker/yourProject/build git రిపోజిటరీ యొక్క స్థానిక సంస్కరణను నిల్వ చేస్తుంది.

బ్రాంచ్ అనుసరించాల్సిన రిపోజిటరీలో ఒక నిర్దిష్ట శాఖను కలిగి ఉంటుంది.

పోల్ ఇంటర్వెల్ తర్వాత సెకనుల సంఖ్యను కలిగి ఉంటుంది బిల్డ్ మాస్టర్ మార్పుల కోసం రిపోజిటరీని పోల్ చేస్తుంది.

ప్రాజెక్ట్ యొక్క రిపోజిటరీకి మార్పులను ట్రాక్ చేయడానికి అనేక పద్ధతులు ఉన్నాయి.

సరళమైన పద్ధతి పోలింగ్, ఇది సూచిస్తుంది బిల్డ్ మాస్టర్ క్రమానుగతంగా రిపోజిటరీతో సర్వర్‌ను పోల్ చేస్తుంది. ఉంటే కమిట్ రిపోజిటరీలో మార్పులను ప్రతిబింబిస్తుంది బిల్డ్ మాస్టర్ కొంత ఆలస్యంతో అంతర్గత వస్తువును సృష్టిస్తుంది మార్చు మరియు దానిని ఈవెంట్ హ్యాండ్లర్‌కు పంపండి షెడ్యూలర్, ఇది ప్రాజెక్ట్‌ను నిర్మించడానికి మరియు పరీక్షించడానికి దశలను ప్రారంభిస్తుంది వర్కర్-ఇ. ఈ దశలలో సూచించబడుతుంది నవీకరణ రిపోజిటరీ. సరిగ్గా ఆన్ వర్కర్ఇది రిపోజిటరీ యొక్క స్థానిక కాపీని సృష్టిస్తుంది. ఈ ప్రక్రియ యొక్క వివరాలు తదుపరి రెండు విభాగాలలో క్రింద ఇవ్వబడతాయి. (5.4 и 5.5).

రిపోజిటరీకి మార్పులను ట్రాకింగ్ చేయడానికి మరింత సొగసైన పద్ధతి ఏమిటంటే దానిని హోస్ట్ చేస్తున్న సర్వర్ నుండి నేరుగా సందేశాలను పంపడం బిల్డ్ మాస్టర్- ప్రాజెక్ట్ సోర్స్ కోడ్‌లను మార్చడం గురించి. ఈ సందర్భంలో, డెవలపర్ చేసిన వెంటనే కమిట్, ప్రాజెక్ట్ రిపోజిటరీ ఉన్న సర్వర్ సందేశాన్ని పంపుతుంది బిల్డ్ మాస్టర్-వై. మరియు అతను, ఒక వస్తువును సృష్టించడం ద్వారా దానిని అడ్డగిస్తాడు PBCchangeSource. తరువాత, ఈ వస్తువు బదిలీ చేయబడుతుంది షెడ్యూలర్, ఇది ప్రాజెక్ట్‌ను నిర్మించడానికి మరియు దానిని పరీక్షించడానికి దశలను సక్రియం చేస్తుంది. ఈ పద్ధతిలో ఒక ముఖ్యమైన భాగం పని చేయడం హుక్-రిపోజిటరీలో సర్వర్ స్క్రిప్ట్‌లు. స్క్రిప్ట్‌లో హుక్-a, ప్రాసెసింగ్ చర్యలకు బాధ్యత వహిస్తుంది కమిట్-e, మీరు యుటిలిటీకి కాల్ చేయాలి పంపడం మరియు నెట్‌వర్క్ చిరునామాను పేర్కొనండి బిల్డ్ మాస్టర్-ఎ. మీరు వినే నెట్‌వర్క్ పోర్ట్‌ను కూడా పేర్కొనాలి PBCchangeSource. PBCchangeSource, మార్గం ద్వారా, భాగం బిల్డ్ మాస్టర్-ఎ. ఈ పద్ధతికి అనుమతి అవసరం అడ్మిన్ప్రాజెక్ట్ రిపోజిటరీ ఉన్న సర్వర్‌లో -a. మీరు మొదట రిపోజిటరీ యొక్క బ్యాకప్ చేయవలసి ఉంటుంది.

5.4 షెడ్యూలర్లు


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

షెడ్యూల్ చేసేవారు - ఇది ప్రాజెక్ట్ యొక్క మొత్తం అసెంబ్లీ మరియు టెస్టింగ్ గొలుసును ప్రారంభించే ట్రిగ్గర్‌గా పనిచేసే మూలకం.
BuildBot ఉపయోగించి నిరంతర ఏకీకరణను అమలు చేయడానికి ఒక ఉదాహరణ

ఆ మార్పులు నమోదు చేయబడ్డాయి మార్పు_మూలం, పని ప్రక్రియలో రూపాంతరం చెందింది బిల్డ్‌బాట్-ఆబ్జెక్ట్ చేయడానికి మార్చు మరియు ఇప్పుడు ప్రతి షెడ్యూలర్ వాటి ఆధారంగా, ఇది ప్రాజెక్ట్ నిర్మాణ ప్రక్రియను ప్రారంభించడానికి అభ్యర్థనలను రూపొందిస్తుంది. అయినప్పటికీ, ఈ అభ్యర్థనలు క్యూలో ఎప్పుడు బదిలీ చేయబడతాయో కూడా ఇది నిర్ణయిస్తుంది. ఒక వస్తువు బిల్డర్ అభ్యర్థనల వరుసను నిల్వ చేస్తుంది మరియు ప్రస్తుత అసెంబ్లీ స్థితిని ప్రత్యేకంగా ట్రాక్ చేస్తుంది వర్కర్-ఇ. బిల్డర్ న ఉంది బిల్డ్ మాస్టర్-ఇ మరియు ఆన్ వర్కర్-ఇ. తో పంపిస్తాడు బిల్డ్ మాస్టర్-ఒక ఆన్ వర్కర్-మరియు ఇప్పటికే నిర్దిష్టమైనది నిర్మించడానికి - అనుసరించాల్సిన దశల శ్రేణి.
ప్రస్తుత ఉదాహరణలో మనం చూస్తాము షెడ్యూల్ చేసేవారు 2 ముక్కలు సృష్టించబడతాయి. అంతేకాక, ప్రతి దాని స్వంత రకాన్ని కలిగి ఉంటుంది.

SingleBranchScheduler - షెడ్యూల్‌లో అత్యంత ప్రజాదరణ పొందిన తరగతులలో ఒకటి. ఇది ఒక శాఖను చూస్తుంది మరియు దానిలో నమోదు చేయబడిన మార్పు ద్వారా ప్రేరేపించబడుతుంది. అతను మార్పులను చూసినప్పుడు, అతను బిల్డ్ అభ్యర్థనను పంపడాన్ని ఆలస్యం చేయవచ్చు (ప్రత్యేక పారామీటర్‌లో పేర్కొన్న వ్యవధి కోసం వాయిదా వేయండి చెట్టు స్టేబుల్ టైమర్). ది పేరు ప్రదర్శించబడే షెడ్యూల్ పేరును సెట్ చేస్తుంది బిల్డ్‌బాట్-వెబ్ ఇంటర్ఫేస్. IN చేంజ్ ఫిల్టర్ ఫిల్టర్ సెట్ చేయబడింది, అది పాస్ అయిన తర్వాత బ్రాంచ్‌లో మార్పులు చేస్తే నిర్మాణం కోసం అభ్యర్థనను పంపమని షెడ్యూల్‌ను ప్రాంప్ట్ చేస్తుంది. IN బిల్డర్ పేర్లు పేరు సూచించబడింది బిల్డర్-a, మేము కొంచెం తర్వాత సెట్ చేస్తాము. మా విషయంలో ఉన్న పేరు ప్రాజెక్ట్ పేరు వలె ఉంటుంది: మీ ప్రాజెక్ట్.

ఫోర్స్ షెడ్యూలర్ చాలా సాధారణ విషయం. ఈ రకమైన షెడ్యూల్ మౌస్ క్లిక్ ద్వారా ట్రిగ్గర్ చేయబడుతుంది బిల్డ్‌బాట్-వెబ్ ఇంటర్ఫేస్. పారామితులు లో వలె అదే సారాన్ని కలిగి ఉంటాయి SingleBranchScheduler.

PS నం. 3. బహుశా అది ఉపయోగపడుతుంది
ఆవర్తన నిర్ణీత సమయ-నిర్దిష్ట పౌనఃపున్యం వద్ద అమలు అయ్యే షెడ్యూల్. కాల్ ఇలా కనిపిస్తుంది


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

5.5 బిల్డ్ ఫ్యాక్టరీ


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

ఆవర్తన బిల్డ్ టైమర్ సెకన్లలో ఈ ఆవర్తన సమయాన్ని నిర్దేశిస్తుంది.

బిల్డ్ ఫ్యాక్టరీ నిర్దిష్టతను సృష్టిస్తుంది నిర్మించడానికి, ఇది అప్పుడు బిల్డర్ కు పంపుతుంది వర్కర్. ది బిల్డ్ ఫ్యాక్టరీ అనుసరించాల్సిన దశలను సూచిస్తుంది వర్కర్-వై. పద్ధతిని కాల్ చేయడం ద్వారా దశలు జోడించబడతాయి addStep

ఈ ఉదాహరణలో మొదటి జోడించిన దశ git క్లీన్ -d -f -f –xఅప్పుడు git చెక్అవుట్. ఈ చర్యలు పరామితిలో చేర్చబడ్డాయి పద్ధతి, ఇది స్పష్టంగా పేర్కొనబడలేదు కానీ డిఫాల్ట్ విలువను సూచిస్తుంది తాజా. పరామితి మోడ్='ఇంక్రిమెంటల్' ఫైల్‌లు ఉన్న డైరెక్టరీ నుండి ఉన్నాయని సూచిస్తుంది చెచౌట్, రిపోజిటరీ నుండి తప్పిపోయినప్పుడు, తాకబడకుండా ఉండండి.

రెండవ జోడించిన దశ స్క్రిప్ట్‌కు కాల్ చేయడం విచారణ పరామితితో హలో వైపు వర్కర్-ఎ డైరెక్టరీ నుండి /home/habr/worker/yourProject/build ఎన్విరాన్మెంట్ వేరియబుల్ PATHONPATH=... కాబట్టి, మీరు మీ స్వంత స్క్రిప్ట్‌లను వ్రాసి, వాటిని ప్రక్కన అమలు చేయవచ్చు వర్కర్- ప్రతి అడుగు util.ShellCommand. ఈ స్క్రిప్ట్‌లను నేరుగా రిపోజిటరీలో ఉంచవచ్చు. అప్పుడు వద్ద చెచౌట్-ఇ వారు పడతారు /home/habr/worker/yourProject/build. అయితే, అప్పుడు రెండు "కానీ" ఉన్నాయి:

  1. వర్కర్ ఒక కీతో సృష్టించాలి --ఉమాస్క్ తద్వారా ఇది అమలు హక్కులను నిరోధించదు చెక్అవుట్-ఎ.
  2. వద్ద git push-ఈ స్క్రిప్ట్‌లలో మీరు ప్రాపర్టీని పేర్కొనాలి అమలు చేయదగినకాబట్టి తరువాత చెచౌట్-e Git స్క్రిప్ట్‌ని అమలు చేసే హక్కును కోల్పోలేదు.

5.6 మంది బిల్డర్లు


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

ఉన్నదాని గురించి బిల్డర్ చెప్పబడింది ఇక్కడ. దీన్ని ఎలా సృష్టించాలో ఇప్పుడు నేను మీకు మరింత వివరంగా చెబుతాను. బిల్డర్ కాన్ఫిగర్ ఒక కన్స్ట్రక్టర్ బిల్డర్. లో ఇటువంటి డిజైనర్లు c['బిల్డర్లు'] ఇది వస్తువుల షీట్ అయినందున మీరు అనేకం పేర్కొనవచ్చు బిల్డర్ రకం. ఇప్పుడు ఉదాహరణను తిరిగి వ్రాస్దాం బిల్డ్‌బాట్, దానిని మన పనికి దగ్గరగా తీసుకురావడం.


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

ఇప్పుడు నేను పారామితుల గురించి మీకు చెప్తాను బిల్డర్ కాన్ఫిగర్.

పేరు పేరును నిర్దేశిస్తుంది బిల్డర్-ఎ. ఇక్కడ మేము పేరు పెట్టాము మీ ప్రాజెక్ట్... ఆన్ అని దీని అర్థం వర్కర్- ఈ మార్గం సృష్టించబడుతుంది /home/habr/worker/yourProject/build. షెడ్యూలర్ వెతుకుతున్నారు బిల్డర్ కేవలం ఈ పేరుతో.

పనివారి పేర్లు షీట్ కలిగి ఉంటుంది వర్కర్-లు. వీటిలో ప్రతి ఒక్కటి జోడించబడాలి c['కార్మికులు'].

ఫ్యాక్టరీ - నిర్దిష్ట నిర్మించడానికి, దానితో సంబంధం కలిగి ఉంటుంది బిల్డర్. అతను వస్తువును పంపుతాడు నిర్మించడానికి వర్కర్ దీనిలో చేర్చబడిన అన్ని దశలను పూర్తి చేయడానికి నిర్మించడానికి-ఎ.

6. మీ స్వంత కాన్ఫిగరేషన్ యొక్క ఉదాహరణ

నేను అమలు చేయడానికి ప్రతిపాదించిన ప్రాజెక్ట్ ఆర్కిటెక్చర్ ఉదాహరణ ఇక్కడ ఉంది బిల్డ్‌బాట్
.

మేము సంస్కరణ నియంత్రణ వ్యవస్థగా ఉపయోగిస్తాము svn. రిపోజిటరీ కూడా ఒక రకమైన క్లౌడ్‌లో ఉంటుంది. ఈ క్లౌడ్ చిరునామా ఇక్కడ ఉంది svn.host/svn/yourProject/ట్రంక్. కింద మేఘంలో svn ఖాతా వినియోగదారు పేరు ఉంది: యూజర్, పాస్‌వర్డ్: <span style="font-family: Mandali; "> పాస్‌వర్డ్</span>. దశలను సూచించే స్క్రిప్ట్‌లు నిర్మించడానికి-a శాఖలో కూడా ఉంటుంది svn, ప్రత్యేక ఫోల్డర్‌లో buildbot/worker_linux. ఈ స్క్రిప్ట్‌లు సేవ్ చేయబడిన ప్రాపర్టీతో రిపోజిటరీలో ఉన్నాయి ఎక్జిక్యూటబుల్.

బిల్డ్ మాస్టర్ и వర్కర్ అదే హోస్ట్‌లో అమలు చేయండి ప్రాజెక్ట్.హోస్ట్ .బిల్డ్ మాస్టర్ దాని ఫైల్‌లను ఫోల్డర్‌లో నిల్వ చేస్తుంది / home/habr/master. వర్కర్ ఇది క్రింది మార్గంలో నిల్వ చేయబడుతుంది / home/habr/worker. ప్రాసెస్ కమ్యూనికేషన్ బిల్డ్ మాస్టర్-a మరియు వర్కర్-a ప్రోటోకాల్ ప్రకారం పోర్ట్ 4000 ద్వారా నిర్వహించబడుతుంది బిల్డ్‌బాట్-a, అంటే 'pb' ప్రోటోకాల్.

లక్ష్య ప్రాజెక్ట్ పూర్తిగా పైథాన్‌లో వ్రాయబడింది. పని దాని మార్పులను ట్రాక్ చేయడం, ఎక్జిక్యూటబుల్ ఫైల్‌ను సృష్టించడం, డాక్యుమెంటేషన్‌ను రూపొందించడం మరియు పరీక్షను నిర్వహించడం. విఫలమైతే, డెవలపర్‌లందరూ విఫలమైన చర్య ఉందని పేర్కొంటూ ఇమెయిల్ ద్వారా సందేశాన్ని పంపాలి.

వెబ్ ప్రదర్శన బిల్డ్‌బాట్ మేము పోర్ట్ 80కి కనెక్ట్ చేస్తాము ప్రాజెక్ట్.హోస్ట్. అపాచ్‌ను ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేదు. లైబ్రరీలో భాగంగా వక్రీకృత ఇప్పటికే వెబ్ సర్వర్ ఉంది, బిల్డ్‌బాట్ దానిని ఉపయోగిస్తుంది.

కోసం అంతర్గత సమాచారాన్ని నిల్వ చేయడానికి బిల్డ్‌బాట్ మేము ఉపయోగిస్తాము స్క్లైట్.

మెయిలింగ్ కోసం హోస్ట్ అవసరం smtp.your.domain - ఇది మెయిల్ నుండి లేఖలను పంపడానికి అనుమతిస్తుంది [ఇమెయిల్ రక్షించబడింది] ప్రమాణీకరణ లేకుండా. హోస్ట్‌లో కూడా'SMTP పోస్ట్ 1025లో నిమిషాలు వినబడుతున్నాయి.

ప్రక్రియలో ఇద్దరు వ్యక్తులు పాల్గొంటారు: అడ్మిన్ и యూజర్. అడ్మిన్ నిర్వాహకులు బిల్డ్‌బాట్. వినియోగదారు అంటే కట్టుబడి ఉన్న వ్యక్తి కమిట్-లు.

ఎగ్జిక్యూటబుల్ ఫైల్ ద్వారా రూపొందించబడింది పైన్‌స్టాలర్. డాక్యుమెంటేషన్ ద్వారా రూపొందించబడింది డాక్సిజన్.

ఈ ఆర్కిటెక్చర్ కోసం నేను ఇలా వ్రాసాను: 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"
}

మొదట మీకు కావాలి సృష్టించడానికి బిల్డ్ మాస్టర్-a మరియు వర్కర్-ఎ. అప్పుడు ఈ ఫైల్‌ను అతికించండి master.cfg в / home/habr/master.

తదుపరి దశ సేవను ప్రారంభించడం బిల్డ్ మాస్టర్లు


sudo buildbot start /home/habr/master

అప్పుడు సేవను ప్రారంభించండి వర్కర్-a


buildbot-worker start /home/habr/worker

సిద్ధంగా ఉంది! ఇప్పుడు బిల్డ్‌బాట్ మార్పులను ట్రాక్ చేస్తుంది మరియు ట్రిగ్గర్ చేస్తుంది కమిట్-y ఇన్ svn, పై ఆర్కిటెక్చర్‌తో ప్రాజెక్ట్‌ను నిర్మించడం మరియు పరీక్షించడం వంటి దశలను అమలు చేయడం.

నేను పైన పేర్కొన్న కొన్ని లక్షణాలను క్రింద వివరిస్తాను master.cfg.

6.1 మీ మాస్టర్‌కి వెళ్లే మార్గంలో.cfg


రాస్తున్నప్పుడు నా master.cfg చాలా లోపాలు జరుగుతాయి, కాబట్టి లాగ్ ఫైల్‌ను చదవడం అవసరం. ఇది ఇలా నిల్వ చేయబడుతుంది బిల్డ్ మాస్టర్-ec సంపూర్ణ మార్గం /home/habr/master/twistd.log, మరియు వైపు వర్కర్-a సంపూర్ణ మార్గంతో /home/habr/worker/twistd.log. మీరు లోపాన్ని చదివి దాన్ని పరిష్కరించినప్పుడు, మీరు సేవను పునఃప్రారంభించవలసి ఉంటుంది బిల్డ్ మాస్టర్-ఎ. ఇది ఎలా చేయబడుతుందో ఇక్కడ ఉంది:


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

6.2 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)

ముందుగా, ఒకసారి చూద్దాం svn_poller. ఇది ఇప్పటికీ అదే ఇంటర్‌ఫేస్, నిమిషానికి ఒకసారి రిపోజిటరీని క్రమం తప్పకుండా పోలింగ్ చేస్తుంది. ఈ విషయంలో svn_poller శాఖను మాత్రమే యాక్సెస్ చేస్తుంది ట్రంక్. రహస్యమైన పరామితి split_file=util.svn.split_file_alwaystrunk నియమాలను సెట్ చేస్తుంది: ఫోల్డర్ నిర్మాణాన్ని ఎలా విచ్ఛిన్నం చేయాలి svn శాఖల మీద. అతను వారికి సాపేక్ష మార్గాలను కూడా అందిస్తాడు. దాని మలుపులో స్ప్లిట్_ఫైల్_ఎల్లప్పుడూ స్ట్రంక్ రిపోజిటరీ మాత్రమే కలిగి ఉందని చెప్పడం ద్వారా ప్రక్రియను సులభతరం చేస్తుంది ట్రంక్.

В షెడ్యూలర్లు సూచించబడింది చేంజ్ ఫిల్టర్ఎవరు చూస్తారు గమనిక మరియు దానితో ఒక శాఖను అనుబంధిస్తుంది ట్రంక్ ద్వారా ఇచ్చిన సంఘం ప్రకారం స్ప్లిట్_ఫైల్_ఎల్లప్పుడూ స్ట్రంక్. లో మార్పులకు ప్రతిస్పందించడం ట్రంక్, ప్రారంభిస్తుంది బిల్డర్ పేరుతో మీ ప్రాజెక్ట్.

లక్షణాలు ఇక్కడ ఇది అవసరం కాబట్టి నిర్వాహకుడు ప్రక్రియ యొక్క యజమానిగా బిల్డ్ మరియు టెస్టింగ్ ఫలితాల మెయిలింగ్ జాబితాలను అందుకుంటారు.

దశ నిర్మించడానికి-a చెక్అవుట్ రిపోజిటరీ యొక్క స్థానిక సంస్కరణలో ఉన్న ఏదైనా ఫైల్‌లను పూర్తిగా తొలగించగల సామర్థ్యం వర్కర్-ఎ. ఆపై పూర్తి చేయండి svn నవీకరణ. మోడ్ పారామీటర్ ద్వారా కాన్ఫిగర్ చేయబడింది మోడ్ = పూర్తి, పద్ధతి = తాజా. పరామితి haltOnTailure ఉంటే అని చెప్పింది svn నవీకరణ లోపంతో అమలు చేయబడుతుంది, తదుపరి చర్యలు అర్ధవంతం కానందున, భవనం మరియు పరీక్ష యొక్క మొత్తం ప్రక్రియ నిలిపివేయబడాలి.

6.3 మీకు లేఖ: విలేఖరులకు ప్రకటించడానికి అధికారం ఉంది


విలేకరులతో ఇమెయిల్ ద్వారా నోటిఫికేషన్‌లను పంపే సేవ.


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]

అతను సందేశాలు పంపగలడు వివిధ మార్గాలు.

మెయిల్నోటిఫైయర్ నోటిఫికేషన్‌లను పంపడానికి ఇమెయిల్‌ని ఉపయోగిస్తుంది.

టెంప్లేట్_html వార్తాలేఖ కోసం టెక్స్ట్ టెంప్లేట్‌ను సెట్ చేస్తుంది. మార్కప్ సృష్టించడానికి HTML ఉపయోగించబడుతుంది. ఇది ఇంజిన్ ద్వారా సవరించబడింది జింజా2 (తో పోల్చవచ్చు జంగో). బిల్డ్‌బాట్ సందేశ వచనాన్ని రూపొందించే ప్రక్రియలో టెంప్లేట్‌లో విలువలు భర్తీ చేయబడిన వేరియబుల్స్ సమితిని కలిగి ఉంది. ఈ వేరియబుల్స్ {{ డబుల్ కర్లీ బ్రేస్‌లు }}లో చేర్చబడ్డాయి. ఉదాహరణకి, సారాంశం పూర్తయిన కార్యకలాపాల స్థితిని ప్రదర్శిస్తుంది, అంటే విజయం లేదా వైఫల్యం. ఎ ప్రాజెక్టులు అవుట్‌పుట్ అవుతుంది మీ ప్రాజెక్ట్. కాబట్టి, నియంత్రణ ఆదేశాలను ఉపయోగించడం జింజా2, వేరియబుల్స్ బిల్డ్‌బాట్-a మరియు పైథాన్ స్ట్రింగ్ ఫార్మాటింగ్ సాధనాలు, మీరు చాలా సమాచార సందేశాన్ని సృష్టించవచ్చు.

మెయిల్నోటిఫైయర్ కింది వాదనలను కలిగి ఉంది.

నుండి - ప్రతి ఒక్కరూ వార్తాలేఖను స్వీకరించే చిరునామా.

ఆసక్తి ఉన్న వినియోగదారులకు పంపండి=True చేసిన యజమాని మరియు వినియోగదారుకు సందేశాన్ని పంపుతుంది కమిట్.

పైకి చూడు — వార్తాలేఖను స్వీకరించే వినియోగదారుల పేర్లకు తప్పనిసరిగా జోడించబడే ప్రత్యయం. కాబట్టి అడ్మిన్ చిరునామాలో వినియోగదారు వార్తాలేఖను ఎలా స్వీకరిస్తారు [ఇమెయిల్ రక్షించబడింది].

రిలేహోస్ట్ సర్వర్ తెరవబడిన హోస్ట్ పేరును నిర్దేశిస్తుంది SMTPఒక smptPort వినే పోర్ట్ సంఖ్యను నిర్దేశిస్తుంది SMTP సర్వర్.

మోడ్="హెచ్చరిక" కనీసం ఒక అడుగు ఉంటేనే మెయిలింగ్ చేయాలి అని చెప్పింది నిర్మించడానికి-a, ఇది స్థితి వైఫల్యం లేదా హెచ్చరికతో ముగిసింది. విజయం విషయంలో, వార్తాలేఖను పంపవలసిన అవసరం లేదు.

అదనపు గ్రహీతలు యజమాని మరియు మెయిలింగ్‌ను నిర్వహించిన వ్యక్తికి అదనంగా మెయిలింగ్ పంపవలసిన వ్యక్తుల జాబితాను కలిగి ఉంటుంది కమిట్.

messageFormatter సందేశ ఆకృతి, దాని టెంప్లేట్ మరియు నుండి అందుబాటులో ఉన్న వేరియబుల్స్ సమితిని పేర్కొనే వస్తువు జింజా2. వంటి ఎంపికలు కావలసిన లక్షణాలు=నిజం и wantSteps=నిజం ఈ అందుబాటులో ఉన్న వేరియబుల్స్ సెట్‌ని నిర్వచించండి.

తో['సేవలు']=[sendMessageToAll] సేవల జాబితాను అందిస్తుంది, వాటిలో మాది కూడా ఉంటుంది విలేఖరి.

మేము చేసాము! అభినందనలు

మేము మా స్వంత కాన్ఫిగరేషన్‌ని సృష్టించాము మరియు దాని సామర్థ్యం ఉన్న కార్యాచరణను చూశాము. బిల్డ్‌బాట్. మీ ప్రాజెక్ట్‌ను రూపొందించడానికి ఈ సాధనం అవసరమా అని అర్థం చేసుకోవడానికి ఇది సరిపోతుందని నేను భావిస్తున్నాను. మీరు అతనిపై ఆసక్తి కలిగి ఉన్నారా? అది మీకు ఉపయోగపడుతుందా? అతను పని చేయడం సౌకర్యంగా ఉందా? అలాంటప్పుడు నేను ఈ వ్యాసం వృథాగా రాయడం లేదు.

మరియు మరింత. నేను ప్రొఫెషనల్ కమ్యూనిటీని ఉపయోగించాలనుకుంటున్నాను బిల్డ్‌బాట్, విస్తృతమైంది, మాన్యువల్లు అనువదించబడ్డాయి మరియు మరిన్ని ఉదాహరణలు ఉన్నాయి.

మీ దృష్టికి అందరికీ ధన్యవాదాలు. అదృష్టవంతులు.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి