ProHoster > блог > Навіны інтэрнэту > 3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)
3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)
Continuous Deployment (бесперапыннае разгортванне) - асаблівы падыход у распрацоўцы праграмнага забеспячэння, які ўжываецца для хуткага, бяспечнага і эфектыўнага ўкаранення розных функцый у ПЗ.
Асноўная ідэя - стварэнне надзейнага аўтаматызаванага працэсу, які дазваляе распрацоўніку хутка падаваць карыстачу гатовы прадукт. Пры гэтым уносяцца пастаянныя змены ў прадакшн - гэта называецца канвеерам бесперапыннай дастаўкі (CD Pipeline).
Нагадваем:для ўсіх чытачоў "Хабра" - зніжка 10 000 рублёў пры запісе на любы курс Skillbox па промакодзе "Хабр".
Для кіравання струменем можна выкарыстоўваць шырокі шэраг прылад, сярод якіх ёсць як платныя, так і поўнасцю бясплатныя. У гэтым артыкуле апісваюцца тры самых папулярных сярод распрацоўшчыкаў рашэння, якія могуць апынуцца карыснымі кожнаму праграмісту.
Джэнкінс
Цалкам аўтаномны сервер аўтаматызацыі з адкрытым зыходным кодам. З ім варта працаваць для аўтаматызацыі ўсіх відаў задач, звязаных са зборкай, тэсціраваннем, пастаўкай або разгортваннем праграмнага забеспячэння.
Мінімальныя патрабаванні да ПК:
256 МБ АЗП, 1 ГБ файлавай прасторы.
Аптымальна:
1 ГБ АЗП, 50 ГБ на цвёрдым дыску.
Для працы спатрэбіцца яшчэ і дадатковае праграмнае забеспячэнне – Java Runtime Environment (JRE) версіі 8.
Архітэктура (размеркаваныя вылічэнні) выглядае наступным чынам:
Jenkins Server - усталёўка, якая адказвае за GUI-хостынг, а таксама арганізацыю і выкананне ўсёй зборкі.
Jenkins Node/Slave/Build Server - прылады, якія можна наладзіць для выканання працы па зборцы ад імя Master (галоўнага вузла).
Усталёўка для Linux
Спачатку трэба дадаць рэпазітар Jenkins у сістэму:
Пасля гэтага Jenkins будзе даступны ў сістэме па дэфолтным порце 8080.
Для праверкі працаздольнасці трэба адкрыць у браўзэры адрас лакальны:8080. Затым сістэма прапануе ўвесці пачатковы пароль карыстача з root-правамі. Гэты пароль знаходзіцца ў файле /var/lib/jenkins/secrets/initialAdminPassword.
Зараз усё гатова да працы, можна прыступаць да стварэння плыняў CI/CD. Графічны інтэрфейс працоўнага асяроддзя выглядае наступным чынам:
Моцныя бакі Jenkins:
маштабаванасць, якую забяспечвае архітэктура Master/Slave;
наяўнасць REST XML/JSON API;
магчымасць падлучэння вялікай колькасці пашырэнняў дзякуючы плягінам;
актыўнае і пастаянна развіваецца супольнасць.
Мінусы:
адсутнічае аналітычны блок;
не занадта зручны інтэрфейс.
TeamCity
Камерцыйная распрацоўка ад кампаніі JetBrains. Сервер добры просты наладай і выдатным інтэрфейсам. У дэфолтнай канфігурацыі ёсць вялікая колькасць функцый, якія пастаянна павялічваецца колькасць даступных убудоў.
Для працы патрабуецца Java Runtime Environment (JRE) версіі 8.
Патрабаванні сервера да жалеза некрытычныя:
АЗП - 3,2 ГБ;
працэсар - двух'ядравы, 3,2 Ггц;
канал сувязі з прапускной здольнасцю 1 Гб / с.
Сервер дазваляе дасягнуць высокай прадукцыйнасці ў працы:
60 праектаў з 300 канфігурацыямі зборак;
вылучэнне 2 МБ на часопіс зборкі;
50 агентаў зборкі;
магчымасць працы 50 карыстальнікаў у вэб-версіі і 30 карыстальнікаў у IDE;
100 падлучэнняў знешняй СКВ, як правіла, Perforce і Subversion. Сярэдні час змен - 120 секунд;
больш за 150 мадыфікацый у дзень;
праца з БД на адным серверы;
налады сервернага працэсу JVM: -Xmx1100m -XX:MaxPermSize=120m.
Патрабаванні да агента абумоўлены якія працуюць зборкамі. Асноўная задача сервера - адсочванне ўсіх падлучаных агентаў і размеркаванне зборак з чаргі па гэтых агентам на аснове патрабаванняў сумяшчальнасці, з паведамленнем вынікаў. Агенты маюць розныя платформы і аперацыйныя сістэмы, плюс папярэдне сканфігураванае асяроддзе.
Уся інфармацыя аб выніках зборкі захоўваецца ў базе даных. У першую чаргу гэта гісторыя і іншыя падобныя дадзеныя, змены VCS, агенты, чэргі зборкі, уліковыя запісы і дазволы карыстальнікаў. У базу не ўваходзяць толькі часопісы зборкі і артэфакты.
Усталёўка для Linux
Для ручной усталёўкі TeamCity з кантэйнерам сэрвлета Tomcat варта выкарыстоўваць архіў TeamCity: TeamCity .tar.gz. Загрузіць яго можна адсюль.
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Пры першым запуску трэба абраць тып БД, у якой будуць захоўвацца дадзеныя аб зборцы.
Канфігурацыя па змаўчанні працуе на лакальны:8111/ з адным зарэгістраваным агентам зборкі, запушчаным на тым жа ПК.
Моцныя бакі TeamCity:
простая настройка;
зручны інтэрфейс;
вялікая колькасць убудаваных функцый;
служба падтрымкі;
ёсць RESTful API;
нядрэнная дакументацыя;
добрая абароненасць.
Мінусы:
абмежаваная інтэграцыя;
гэта платная прылада;
невялікая супольнасць (якая, зрэшты, расце).
GoCD
Open source-праект, для ўсталёўкі і працы якога патрабуецца Java Runtime Environment (JRE) версіі 8.
Сістэмныя патрабаванні:
АЗП - 1 ГБ мінімум, лепш больш;
працэсар - двух'ядравы, з частатой працы ядра 2 Ггц;
жорсткі дыск - мінімум 1 ГБ вольнага месца.
Агент:
АЗП – мінімум 128 Мбайт, лепш больш;
працэсар - мінімум 2 Ггц.
Сервер забяспечвае працу агентаў і дае зручны інтэрфейс для карыстальніка:
Stages/Jobs/Tasks:
Усталёўка для Linux
рэха "дэб download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list
магчымасць пакрокавага адлюстравання шляху разгортвання GoCD у адным уяўленні:
выдатнае адлюстраванне структуры канвеера:
GoCD аптымізуе працоўны працэс CD у самых запатрабаваных хмарных асяроддзях, уключаючы Docker, AWS;
прылада дае магчымасць выпраўляць няспраўнасці ў канвееры, для чаго ёсць адсочванне кожнай змены ад коммита да разгортванні ў realtime-рэжыме.
Мінусы:
патрэбен хаця б адзін агент;
няма кансолі для адлюстравання ўсіх выкананых задач;
для выканання кожнай каманды трэба ствараць па адной задачы да канфігурацыі канвеера;
для ўсталёўкі плагіна патрабуецца перамясціць файл .jar у /plugins/external і перазапусціць сервер;
адносна невялікая супольнасць.
У якасці вываду
Гэта ўсяго тры інструменты, насамрэч іх значна больш. Выбіраць складана, таму абавязкова трэба зважаць на дадатковыя аспекты.
Адкрыты зыходны код прылады дае магчымасць зразумець, што ён з сябе ўяўляе, плюс хутчэй дадаваць новыя функцыі. Але вось калі нешта не працуе, то даводзіцца спадзявацца толькі на сябе і на дапамогу кам'юніці. Платныя прылады даюць падтрымку, якая можа часам апынуцца крытычна важнай.
Калі бяспека важней за ўсё, варта працаваць з лакальнай прыладай. Калі ж не, то выбар SaaS-рашэнні - добры варыянт.
І апошняе: для таго каб забяспечыць сапраўды эфектыўны працэс бесперапыннага разгортвання, трэба сфарміраваць крытэры, спецыфіка якіх дасць магчымасць звузіць круг выбару даступных прылад.