BuildBot ஐப் பயன்படுத்தி தொடர்ச்சியான ஒருங்கிணைப்பை செயல்படுத்துவதற்கான எடுத்துக்காட்டு

BuildBot ஐப் பயன்படுத்தி தொடர்ச்சியான ஒருங்கிணைப்பை செயல்படுத்துவதற்கான எடுத்துக்காட்டு
(படம் மூலம் கணினிமயமாக்குபவர் இருந்து பிக்சபே)

வாழ்த்துக்கள்!

என் பெயர் எவ்ஜெனி செர்கின், நான் ஒரு சுரங்க நிறுவனத்தில் ஒரு மேம்பாட்டுக் குழுவில் ஒரு புரோகிராமர் பாலிமெட்டல்.

எந்தவொரு பெரிய திட்டத்தையும் தொடங்கும் போது, ​​நீங்கள் சிந்திக்கத் தொடங்குகிறீர்கள்: "அதைச் சேவை செய்ய எந்த மென்பொருளைப் பயன்படுத்துவது சிறந்தது?" ஒரு தகவல் தொழில்நுட்பத் திட்டம் அடுத்த பதிப்பை வெளியிடுவதற்கு முன் பல நிலைகளைக் கடந்து செல்கிறது. இந்த நிலைகளின் சங்கிலி தானியங்கியாக இருக்கும்போது நல்லது. ஒரு IT திட்டத்தின் புதிய பதிப்பை வெளியிடும் தானியங்கு செயல்முறை அழைக்கப்படுகிறது தொடர்ச்சியான ஒருங்கிணைப்பு. BuildBot இந்த செயல்முறையை செயல்படுத்துவதில் எங்களுக்கு ஒரு நல்ல உதவியாளராக மாறியது.

இந்த கட்டுரையில் நான் சாத்தியக்கூறுகளின் கண்ணோட்டத்தை வழங்க முடிவு செய்தேன் BuildBot. இந்த மென்பொருள் என்ன திறன் கொண்டது? அவரை எவ்வாறு அணுகுவது மற்றும் அவருடன் ஒரு சாதாரண பயனுள்ள பணி உறவை எவ்வாறு உருவாக்குவது? உங்கள் கணினியில் உங்கள் திட்டத்தை உருவாக்குவதற்கும் சோதனை செய்வதற்கும் பணிபுரியும் சேவையை உருவாக்குவதன் மூலம் எங்கள் அனுபவத்தை நீங்களே பயன்படுத்தலாம்.

உள்ளடக்கம்

உள்ளடக்கம்

1. ஏன் BuildBot?
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. ஏன் BuildBot?

முன்பு habr-e இல் செயல்படுத்துவது பற்றிய கட்டுரைகளைக் கண்டேன் தொடர்ச்சியான ஒருங்கிணைப்பு உடன் BuildBot. К примеру, இது ஒன்று நான் அதை மிகவும் தகவலறிந்ததாகக் கண்டேன். மற்றொரு உதாரணம் உள்ளது - எளிதாக. இந்தக் கட்டுரைகள் சுவையூட்டப்படலாம் கையேட்டில் இருந்து உதாரணம்மற்றும் அது அதன் பிறகு, ஆங்கிலத்தில். கூபே ஒரு நல்ல தொடக்க புள்ளியாக உள்ளது. இந்த கட்டுரைகளைப் படித்த பிறகு, நீங்கள் உடனடியாக ஏதாவது செய்ய விரும்புவீர்கள் BuildBot செய்.

நிறுத்து! யாராவது உண்மையில் தங்கள் திட்டங்களில் இதைப் பயன்படுத்தினார்களா? அது ஆம் என்று மாறிவிடும் பல அதை தங்கள் பணிகளில் பயன்படுத்தினார்கள். காணலாம் உதாரணங்கள் использования BuildBot மற்றும் Google குறியீடு காப்பகங்களில்.

எனவே மக்கள் பயன்படுத்தும் தர்க்கம் என்ன பில்ட்போட்? எல்லாவற்றிற்கும் மேலாக, பிற கருவிகள் உள்ளன: குரூஸ் கண்ட்ரோல் и ஜென்கின்ஸ். நான் இப்படி பதில் சொல்கிறேன். பெரும்பாலான பணிகளுக்கு ஜென்கின்ஸ் மற்றும் உண்மை போதுமானதாக இருக்கும். அதையொட்டி, BuildBot - மிகவும் தகவமைப்பு, அதே சமயம் சிக்கல்கள் அங்கு எளிமையாக தீர்க்கப்படுகின்றன ஜென்கின்ஸ். தேர்வு உங்களுடையது. ஆனால் வளரும் இலக்கு திட்டத்திற்கான கருவியை நாங்கள் தேடுவதால், எளிய படிகளில் தொடங்கி, ஊடாடும் திறன் மற்றும் தனித்துவமான இடைமுகம் கொண்ட ஒரு கட்டமைப்பைப் பெற அனுமதிக்கும் ஒன்றை ஏன் தேர்வு செய்யக்கூடாது.

இலக்கு திட்டம் பைத்தானில் எழுதப்பட்டவர்களுக்கு, கேள்வி எழுகிறது: "திட்டத்தில் பயன்படுத்தப்படும் மொழியின் அடிப்படையில் தெளிவான இடைமுகத்தைக் கொண்ட ஒருங்கிணைப்பு அமைப்பை ஏன் தேர்வு செய்யக்கூடாது?" இப்போது நன்மைகளை வழங்குவதற்கான நேரம் இது BuildBot.

எனவே, எங்கள் "கருவி குவார்டெட்". என்னைப் பொறுத்தவரை, நான் நான்கு அம்சங்களை அடையாளம் கண்டுள்ளேன் BuildBot:

  1. இது GPL உரிமத்தின் கீழ் ஒரு திறந்த மூல கட்டமைப்பாகும்
  2. இது பைத்தானை உள்ளமைவு கருவியாகவும் தேவையான செயல்களின் விளக்கமாகவும் பயன்படுத்துகிறது
  3. சட்டசபை நடைபெறும் இயந்திரத்திலிருந்து பதிலைப் பெற இது ஒரு வாய்ப்பு
  4. இவை இறுதியாக, ஒரு ஹோஸ்டுக்கான குறைந்தபட்ச தேவைகள். வரிசைப்படுத்துவதற்கு பைதான் மற்றும் ட்விஸ்டெட் தேவைப்படுகிறது, மேலும் மெய்நிகர் இயந்திரம் மற்றும் ஜாவா இயந்திரம் தேவையில்லை.

2. பில்ட்மாஸ்டர் தலைமையிலான கருத்து

BuildBot ஐப் பயன்படுத்தி தொடர்ச்சியான ஒருங்கிணைப்பை செயல்படுத்துவதற்கான எடுத்துக்காட்டு

பணி விநியோக கட்டமைப்பின் மையமானது பில்ட்மாஸ்டர். இது ஒரு சேவை:

  • கண்காணிக்கிறது திட்ட மூல மரத்தில் மாற்றங்கள்
  • அனுப்புகிறது திட்டத்தை உருவாக்க மற்றும் அதைச் சோதிக்க தொழிலாளர் சேவையால் செயல்படுத்தப்பட வேண்டிய கட்டளைகள்
  • அறிவிக்கிறது எடுக்கப்பட்ட நடவடிக்கைகளின் முடிவுகளைப் பற்றி பயனர்கள்

பில்ட்மாஸ்டர் கோப்பு வழியாக கட்டமைக்கப்பட்டது master.cfg. இந்த கோப்பு ரூட்டில் உள்ளது பில்ட்மாஸ்டர். இந்த ரூட் எவ்வாறு உருவாக்கப்படுகிறது என்பதை பின்னர் காண்பிப்பேன். கோப்பு தானே master.cfg அழைப்புகளைப் பயன்படுத்தும் பைதான் ஸ்கிரிப்ட் உள்ளது BuildBot.

அடுத்த மிக முக்கியமான பொருள் BuildBot ஒரு பெயர் உள்ளது பணியாளர். இந்தச் சேவையை வேறொரு ஹோஸ்டில் அல்லது வேறொரு OS இல் தொடங்கலாம் பில்ட்மாஸ்டர். இது அதன் சொந்த தொகுப்புகள் மற்றும் மாறிகளுடன் சிறப்பாக தயாரிக்கப்பட்ட மெய்நிகர் சூழலில் இருக்கலாம். பைதான் பயன்பாடுகளைப் பயன்படுத்தி இந்த மெய்நிகர் சூழல்களைத் தயாரிக்கலாம் virtualenv, venv.

பில்ட்மாஸ்டர் அனைவருக்கும் கட்டளைகளை ஒளிபரப்புகிறது பணியாளர்-y, மற்றும் அவர், அவற்றை நிறைவேற்றுகிறார். அதாவது, ஒரு திட்டத்தை உருவாக்கி சோதிக்கும் செயல்முறை தொடரலாம் என்று மாறிவிடும் பணியாளர்-e விண்டோஸில் இயங்குகிறது மற்றும் லினக்ஸ் இயங்கும் மற்றொரு பணியாளரில்.

சரிபார் திட்ட மூல குறியீடுகள் ஒவ்வொன்றிலும் ஏற்படும் பணியாளர்-இ.

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

அடுத்த படி நிறுவ வேண்டும் ட்வீட் செய்துள்ளார் и BuildBot, அத்துடன் கூடுதல் செயல்பாட்டைப் பயன்படுத்த உங்களை அனுமதிக்கும் தொகுப்புகள் BuildBot-அ.


/*Все что под 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 # Собственно сдесь и создаем

அடுத்த அடி. உருவாக்குவோம் பணியாளர். அது நமது கோப்புறையில் இருக்கும் /வீடு/ஹப்ர்/வேலை செய்பவர்.

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

நீங்கள் ஓடும்போது பணியாளர், பின்னர் இயல்பாக அது உருவாக்கப்படும் /வீடு/ஹப்ர்/வேலை செய்பவர் திட்டப் பெயருடன் கோப்புறை, அதில் குறிப்பிடப்பட்டுள்ளது 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["keyFromDist"] உடன் தொடர்பு கொள்வதற்கான நிலையான கூறுகள் பில்ட்மாஸ்டர். ஒவ்வொரு விசைக்கும், தொடர்புடைய பொருள் ஒரு மதிப்பாக மாற்றப்படும்.

5.2 தொழிலாளர்கள்

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

இந்த நேரத்தில் நாங்கள் குறிப்பிடுகிறோம் பில்ட்மாஸ்டர்-y பட்டியல் பணியாளர்-கள். நானே பணியாளர் நாங்கள் உருவாக்கினோம் அதிக, குறிக்கிறது நீங்கள்-தொழிலாளர்-பெயர் и கடவுச்சொல். இப்போது அவர்கள் பதிலாக குறிப்பிட வேண்டும் உதாரணம்-தொழிலாளி и கடந்து .

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 ஐப் பயன்படுத்தி தொடர்ச்சியான ஒருங்கிணைப்பை செயல்படுத்துவதற்கான எடுத்துக்காட்டு

பதிவு செய்யப்பட்ட மாற்றங்கள் மாற்றம்_மூலம், வேலை செயல்பாட்டில் மாற்றப்பட்டது BuildBot-ஒரு பொருள் மாற்றம் இப்போது ஒவ்வொரு ஷெடுலர் அவற்றின் அடிப்படையில், இது திட்ட உருவாக்க செயல்முறையைத் தொடங்குவதற்கான கோரிக்கைகளை உருவாக்குகிறது. இருப்பினும், இந்தக் கோரிக்கைகள் எப்போது வரிசைக்கு மாற்றப்படும் என்பதையும் இது தீர்மானிக்கிறது. ஒரு பொருள் பில்டர் கோரிக்கைகளின் வரிசையை சேமித்து, தற்போதைய சட்டசபையின் நிலையை தனித்தனியாக கண்காணிக்கிறது பணியாளர்-இ. பில்டர் அன்று உள்ளது பில்ட்மாஸ்டர்-இ மற்றும் அன்று பணியாளர்-இ. உடன் அனுப்புகிறார் பில்ட்மாஸ்டர்-ஒரு அன்று பணியாளர்- மற்றும் ஏற்கனவே குறிப்பிட்டது உருவாக்க - பின்பற்ற வேண்டிய படிகளின் தொடர்.
தற்போதைய உதாரணத்தில் நாம் பார்க்கிறோம் திட்டமிடுபவர்கள் 2 துண்டுகள் உருவாக்கப்படுகின்றன. மேலும், ஒவ்வொன்றும் அதன் சொந்த வகையைக் கொண்டுள்ளன.

SingleBranchScheduler - அட்டவணையில் மிகவும் பிரபலமான வகுப்புகளில் ஒன்று. இது ஒரு கிளையைப் பார்க்கிறது மற்றும் அதில் பதிவு செய்யப்பட்ட மாற்றத்தால் தூண்டப்படுகிறது. அவர் மாற்றங்களைக் கண்டால், உருவாக்கக் கோரிக்கையை அனுப்புவதை தாமதப்படுத்தலாம் (சிறப்பு அளவுருவில் குறிப்பிடப்பட்டுள்ள காலத்திற்கு ஒத்திவைக்கவும் மரம் ஸ்டேபிள் டைமர்). தி பெயர் காட்டப்படும் அட்டவணையின் பெயரை அமைக்கிறது BuildBot- இணைய இடைமுகம். IN மாற்று வடிகட்டி ஒரு வடிகட்டி அமைக்கப்பட்டது, அதைக் கடந்து சென்ற பிறகு, கிளையில் ஏற்படும் மாற்றங்கள் கட்டுமானத்திற்கான கோரிக்கையை அனுப்ப அட்டவணையைத் தூண்டும். IN பில்டர் பெயர்கள் பெயர் குறிப்பிடப்பட்டுள்ளது கட்டடம்-a, சிறிது நேரம் கழித்து அமைப்போம். எங்கள் விஷயத்தில் உள்ள பெயர், திட்டத்தின் பெயரைப் போலவே இருக்கும்: உங்கள் திட்டம்.

ForceScheduler மிகவும் எளிமையான விஷயம். இந்த வகை அட்டவணையானது மவுஸ் கிளிக் மூலம் தூண்டப்படுகிறது BuildBot- இணைய இடைமுகம். அளவுருக்கள் உள்ளதைப் போலவே அதே சாரத்தைக் கொண்டுள்ளன 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": "."}))

periodicBuildTimer இந்த கால இடைவெளியின் நேரத்தை நொடிகளில் குறிப்பிடுகிறது.

கட்டுமான தொழிற்சாலை ஒரு குறிப்பிட்ட உருவாக்குகிறது உருவாக்க, அது பின்னர் கட்டடம் க்கு அனுப்புகிறது பணியாளர். தி கட்டுமான தொழிற்சாலை பின்பற்ற வேண்டிய படிகளைக் குறிக்கிறது பணியாளர்-ஒய். முறையை அழைப்பதன் மூலம் படிகள் சேர்க்கப்படுகின்றன addStep

இந்த எடுத்துக்காட்டில் முதல் சேர்க்கப்பட்ட படி git clean -d -f -f –xபின்னர் ஜிட் செக் அவுட். இந்த செயல்கள் அளவுருவில் சேர்க்கப்பட்டுள்ளன முறை, இது தெளிவாகக் கூறப்படவில்லை ஆனால் இயல்புநிலை மதிப்பைக் குறிக்கிறது புதிய. அளவுரு முறை='அதிகரிக்கும்' கோப்புகள் கோப்பகத்திலிருந்து வந்தவை என்பதைக் குறிக்கிறது chechout, களஞ்சியத்திலிருந்து விடுபட்டாலும், தீண்டப்படாமல் இருங்கள்.

இரண்டாவது சேர்க்கப்பட்ட படி ஸ்கிரிப்டை அழைக்கிறது விசாரணை அளவுருவுடன் ஹலோ பக்கத்தில் பணியாளர்-ஒரு கோப்பகத்திலிருந்து /home/habr/worker/yourProject/build சுற்றுச்சூழல் மாறி PATHONPATH=... எனவே, நீங்கள் உங்கள் சொந்த ஸ்கிரிப்ட்களை எழுதி பக்கத்தில் அவற்றை இயக்கலாம் பணியாளர்- ஒவ்வொரு அடியும் util.ShellCommand. இந்த ஸ்கிரிப்ட்களை நேரடியாக களஞ்சியத்தில் வைக்கலாம். பின்னர் மணிக்கு chechout- அவர்கள் விழுவார்கள் /home/habr/worker/yourProject/build. இருப்பினும், இரண்டு "ஆனால்" உள்ளன:

  1. பணியாளர் ஒரு விசையுடன் உருவாக்கப்பட வேண்டும் --உமாஸ்க் அதன் பிறகு செயல்படுத்தும் உரிமைகளைத் தடுக்காது புதுப்பித்து-அ.
  2. மணிக்கு git pushஇந்த ஸ்கிரிப்ட்களில் -e நீங்கள் சொத்தை குறிப்பிட வேண்டும் தீர்க்கக்கூடியஅதனால் பின்னர் chechout-e Git ஸ்கிரிப்டை இயக்கும் உரிமையை இழக்கவில்லை.

5.6 பில்டர்கள்


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

என்ன பற்றி பில்டர் கூறப்பட்டது இங்கே. அதை எவ்வாறு உருவாக்குவது என்பது பற்றி இப்போது நான் உங்களுக்கு விரிவாக கூறுவேன். BuilderConfig ஒரு கட்டமைப்பாளர் கட்டடம். அத்தகைய வடிவமைப்பாளர்கள் c['பில்டர்கள்'] நீங்கள் பலவற்றைக் குறிப்பிடலாம், ஏனெனில் இது பொருள்களின் தாள் கட்டடம் வகை. இப்போது உதாரணத்தை மீண்டும் எழுதுவோம் BuildBot, அதை எங்கள் பணிக்கு நெருக்கமாகக் கொண்டுவருகிறது.


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

இப்போது நான் அளவுருக்கள் பற்றி சொல்கிறேன் BuilderConfig.

பெயர் பெயரைக் குறிப்பிடுகிறது கட்டடம்-அ. இதோ பெயரிட்டோம் உங்கள் திட்டம். இதன் பொருள் அன்று பணியாளர்- இந்த பாதை உருவாக்கப்படும் /home/habr/worker/yourProject/build. ஷெடுலர் தேடுகிறது கட்டடம் இந்த பெயரில் தான்.

தொழிலாளர் பெயர்கள் தாள் கொண்டுள்ளது பணியாளர்-கள். அவை ஒவ்வொன்றும் சேர்க்கப்பட வேண்டும் c['தொழிலாளர்கள்'].

தொழிற்சாலை - குறிப்பிட்ட உருவாக்க, இது தொடர்புடையது கட்டடம். பொருளை அனுப்புவார் உருவாக்க மீது பணியாளர் இதில் உள்ள அனைத்து படிகளையும் முடிக்க உருவாக்க-அ.

6. உங்கள் சொந்த கட்டமைப்புக்கான எடுத்துக்காட்டு

நான் செயல்படுத்த முன்மொழியும் திட்டக் கட்டமைப்பின் உதாரணம் இங்கே BuildBot
.

பதிப்புக் கட்டுப்பாட்டு அமைப்பாகப் பயன்படுத்துவோம் svn. களஞ்சியமே ஒருவித மேகக்கூட்டத்தில் அமைந்திருக்கும். இந்த மேகத்தின் முகவரி இதோ svn.host/svn/yourProject/trunk. கீழ் மேகத்தில் svn கணக்கு பயனர் பெயர் உள்ளது: பயனர், passwd: கடவுச்சொல். படிகளைக் குறிக்கும் ஸ்கிரிப்ட்கள் உருவாக்க-a கிளையிலும் இருக்கும் svn, ஒரு தனி கோப்புறையில் buildbot/worker_linux. இந்த ஸ்கிரிப்டுகள் சேமிக்கப்பட்ட சொத்துடன் களஞ்சியத்தில் அமைந்துள்ளன இயங்கக்கூடியது.

பில்ட்மாஸ்டர் и பணியாளர் அதே ஹோஸ்டில் இயக்கவும் திட்டம்.புரவலன் .பில்ட்மாஸ்டர் அதன் கோப்புகளை ஒரு கோப்புறையில் சேமிக்கிறது / home/habr/master. பணியாளர் இது பின்வரும் பாதையில் சேமிக்கப்படுகிறது /வீடு/ஹப்ர்/வேலை செய்பவர். செயல்முறை தொடர்பு பில்ட்மாஸ்டர்-a மற்றும் பணியாளர்-a நெறிமுறையின்படி போர்ட் 4000 மூலம் மேற்கொள்ளப்படுகிறது BuildBot-a, அதாவது 'pb' நெறிமுறை.

இலக்கு திட்டம் முற்றிலும் பைத்தானில் எழுதப்பட்டுள்ளது. பணி அதன் மாற்றங்களைக் கண்காணிப்பது, இயங்கக்கூடிய கோப்பை உருவாக்குதல், ஆவணங்களை உருவாக்குதல் மற்றும் சோதனை நடத்துதல். தோல்வியுற்றால், அனைத்து டெவலப்பர்களும் தோல்வியுற்ற செயலை மின்னஞ்சல் மூலம் அனுப்ப வேண்டும்.

இணைய காட்சி BuildBot போர்ட் 80 உடன் இணைப்போம் திட்டம்.புரவலன். Apatch ஐ நிறுவ வேண்டிய அவசியமில்லை. நூலகத்தின் ஒரு பகுதியாக முறுக்கப்பட்ட ஏற்கனவே ஒரு இணைய சேவையகம் உள்ளது, BuildBot அதை பயன்படுத்துகிறது.

உள் தகவல்களைச் சேமிக்க BuildBot использовать ஸ்க்லைட்.

அஞ்சல் அனுப்புவதற்கு ஒரு புரவலன் தேவை smtp.your.domain - இது அஞ்சல் மூலம் கடிதங்களை அனுப்ப அனுமதிக்கிறது [மின்னஞ்சல் பாதுகாக்கப்பட்டது] அங்கீகாரம் இல்லாமல். ஹோஸ்டிலும்'SMTP 1025 இல் நிமிடங்கள் கேட்கப்படுகின்றன.

செயல்பாட்டில் இரண்டு பேர் ஈடுபட்டுள்ளனர்: நிர்வாகம் и பயனர். நிர்வாக நிர்வாகிகள் BuildBot. பயனர் என்பது செய்யும் நபர் செய்து-கள்.

இயங்கக்கூடிய கோப்பு இதன் மூலம் உருவாக்கப்படுகிறது பைன்ஸ்டாலர். ஆவணங்கள் மூலம் உருவாக்கப்படுகிறது டாக்சிஜன்.

இந்த கட்டிடக்கலைக்கு நான் இதை எழுதினேன்: 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 будет совершено немало ошибок, потому потребуется чтение log-файла. Он храниться как на பில்ட்மாஸ்டர்-இசி முழுமையான பாதை /home/habr/master/twistd.log, மற்றும் பக்கத்தில் பணியாளர்ஒரு முழுமையான பாதையுடன் /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 (உடன் ஒப்பிடலாம் ஜாங்கோ). BuildBot செய்தி உரையை உருவாக்கும் செயல்பாட்டின் போது வார்ப்புருவில் மதிப்புகள் மாற்றியமைக்கப்படும் மாறிகளின் தொகுப்பைக் கொண்டுள்ளது. இந்த மாறிகள் {{ இரட்டை சுருள் பிரேஸ்கள் }} இல் இணைக்கப்பட்டுள்ளன. உதாரணத்திற்கு, சுருக்கம் முடிக்கப்பட்ட செயல்பாடுகளின் நிலையை காட்டுகிறது, அதாவது வெற்றி அல்லது தோல்வி. ஏ திட்டங்கள் வெளியிடும் உங்கள் திட்டம். எனவே, கட்டுப்பாட்டு கட்டளைகளைப் பயன்படுத்தவும் ஜின்ஜா2, மாறிகள் BuildBot-a மற்றும் python string formatting tools, நீங்கள் மிகவும் தகவலறிந்த செய்தியை உருவாக்கலாம்.

அஞ்சல் நோட்டிஃபையர் பின்வரும் வாதங்களைக் கொண்டுள்ளது.

fromaddr - ஒவ்வொருவரும் செய்திமடலைப் பெறும் முகவரி.

ஆர்வமுள்ள பயனர்களுக்கு அனுப்பவும்=True отсылает сообщение владельцу и пользователю, который сделал செய்து.

பார்வை — செய்திமடலைப் பெறும் பயனர்களின் பெயர்களுடன் சேர்க்கப்பட வேண்டிய பின்னொட்டு. அதனால் நிர்வாகம் முகவரியில் பயனர் செய்திமடலை எவ்வாறு பெறுவார் [மின்னஞ்சல் பாதுகாக்கப்பட்டது].

ரிலே ஹோஸ்ட் சேவையகம் திறக்கப்பட்ட ஹோஸ்ட்பெயரை குறிப்பிடுகிறது SMTP, க்கு smptPort கேட்கும் போர்ட் எண்ணைக் குறிப்பிடுகிறது SMTP சர்வர்.

முறை="எச்சரிக்கை" குறைந்தபட்சம் ஒரு படி இருந்தால் மட்டுமே அஞ்சல் அனுப்ப வேண்டும் என்று கூறுகிறார் உருவாக்க-a, இது நிலை தோல்வி அல்லது எச்சரிக்கையுடன் முடிந்தது. வெற்றியின் விஷயத்தில், செய்திமடலை அனுப்ப வேண்டிய அவசியமில்லை.

கூடுதல் பெறுநர்கள் உரிமையாளருக்கும் அதைச் செய்த நபருக்கும் கூடுதலாக அஞ்சல் அனுப்பப்பட வேண்டிய நபர்களின் பட்டியல் உள்ளது. செய்து.

செய்தி வடிவம் செய்தி வடிவம், அதன் டெம்ப்ளேட் மற்றும் கிடைக்கக்கூடிய மாறிகளின் தொகுப்பைக் குறிப்பிடும் ஒரு பொருள் ஜின்ஜா2. போன்ற விருப்பங்கள் wantProperties=True и வேண்டும் படிகள்=உண்மை கிடைக்கக்கூடிய மாறிகளின் தொகுப்பை வரையறுக்கவும்.

உடன் ['சேவைகள்']=[sendMessageToAll] சேவைகளின் பட்டியலை வழங்குகிறது, அவற்றில் எங்களுடையது இருக்கும் நிருபர்.

நாம் அதை செய்தோம்! வாழ்த்துகள்

நாங்கள் எங்கள் சொந்த உள்ளமைவை உருவாக்கி, அதன் திறன் கொண்ட செயல்பாட்டைப் பார்த்தோம். BuildBot. உங்கள் திட்டத்தை உருவாக்க இந்த கருவி தேவையா என்பதைப் புரிந்துகொள்ள இது போதுமானது என்று நான் நினைக்கிறேன். நீங்கள் அவர் மீது ஆர்வமாக உள்ளீர்களா? அது உங்களுக்கு பயனுள்ளதாக இருக்குமா? அவர் வேலை செய்ய வசதியாக இருக்கிறாரா? அப்படியானால் நான் இந்தக் கட்டுரையை வீணாக எழுதவில்லை.

மேலும் மேலும். தொழில்முறை சமூகம் பயன்படுத்த விரும்புகிறேன் BuildBot, விரிவடைந்தது, கையேடுகள் மொழிபெயர்க்கப்பட்டன, இன்னும் பல எடுத்துக்காட்டுகள் இருந்தன.

உங்கள் கவனத்திற்கு அனைவருக்கும் நன்றி. நல்ல அதிர்ஷ்டம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்