3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Continuous Deployment (бесперапыннае разгортванне) - асаблівы падыход у распрацоўцы праграмнага забеспячэння, які ўжываецца для хуткага, бяспечнага і эфектыўнага ўкаранення розных функцый у ПЗ.

Асноўная ідэя - стварэнне надзейнага аўтаматызаванага працэсу, які дазваляе распрацоўніку хутка падаваць карыстачу гатовы прадукт. Пры гэтым уносяцца пастаянныя змены ў прадакшн - гэта называецца канвеерам бесперапыннай дастаўкі (CD Pipeline).

Skillbox рэкамендуе: Практычны курс «Мабільны распрацоўшчык PRO».

Нагадваем: для ўсіх чытачоў "Хабра" - зніжка 10 000 рублёў пры запісе на любы курс Skillbox па промакодзе "Хабр".

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Для кіравання струменем можна выкарыстоўваць шырокі шэраг прылад, сярод якіх ёсць як платныя, так і поўнасцю бясплатныя. У гэтым артыкуле апісваюцца тры самых папулярных сярод распрацоўшчыкаў рашэння, якія могуць апынуцца карыснымі кожнаму праграмісту.

Джэнкінс

Цалкам аўтаномны сервер аўтаматызацыі з адкрытым зыходным кодам. З ім варта працаваць для аўтаматызацыі ўсіх відаў задач, звязаных са зборкай, тэсціраваннем, пастаўкай або разгортваннем праграмнага забеспячэння.

Мінімальныя патрабаванні да ПК:

  • 256 МБ АЗП, 1 ГБ файлавай прасторы.

Аптымальна:

  • 1 ГБ АЗП, 50 ГБ на цвёрдым дыску.

Для працы спатрэбіцца яшчэ і дадатковае праграмнае забеспячэнне – Java Runtime Environment (JRE) версіі 8.

Архітэктура (размеркаваныя вылічэнні) выглядае наступным чынам:
3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Jenkins Server - усталёўка, якая адказвае за GUI-хостынг, а таксама арганізацыю і выкананне ўсёй зборкі.

Jenkins Node/Slave/Build Server - прылады, якія можна наладзіць для выканання працы па зборцы ад імя Master (галоўнага вузла).

Усталёўка для Linux

Спачатку трэба дадаць рэпазітар Jenkins у сістэму:

cd /tmp && wget -q -O - pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/je

Абнавіць рэпазітар пакетаў:

Суд схілы абнаўленне

Усталяваць Jenkins:

sudo apt ўсталяваць jenkins

Пасля гэтага Jenkins будзе даступны ў сістэме па дэфолтным порце 8080.

Для праверкі працаздольнасці трэба адкрыць у браўзэры адрас лакальны:8080. Затым сістэма прапануе ўвесці пачатковы пароль карыстача з root-правамі. Гэты пароль знаходзіцца ў файле /var/lib/jenkins/secrets/initialAdminPassword.

Зараз усё гатова да працы, можна прыступаць да стварэння плыняў CI/CD. Графічны інтэрфейс працоўнага асяроддзя выглядае наступным чынам:

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Моцныя бакі 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, агенты, чэргі зборкі, уліковыя запісы і дазволы карыстальнікаў. У базу не ўваходзяць толькі часопісы зборкі і артэфакты.

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Усталёўка для Linux

Для ручной усталёўкі TeamCity з кантэйнерам сэрвлета Tomcat варта выкарыстоўваць архіў TeamCity: TeamCity .tar.gz. Загрузіць яго можна адсюль.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

Пры першым запуску трэба абраць тып БД, у якой будуць захоўвацца дадзеныя аб зборцы.

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Канфігурацыя па змаўчанні працуе на лакальны:8111/ з адным зарэгістраваным агентам зборкі, запушчаным на тым жа ПК.

Моцныя бакі TeamCity:

  • простая настройка;
  • зручны інтэрфейс;
  • вялікая колькасць убудаваных функцый;
  • служба падтрымкі;
  • ёсць RESTful API;
  • нядрэнная дакументацыя;
  • добрая абароненасць.

Мінусы:

  • абмежаваная інтэграцыя;
  • гэта платная прылада;
  • невялікая супольнасць (якая, зрэшты, расце).

GoCD

Open source-праект, для ўсталёўкі і працы якога патрабуецца Java Runtime Environment (JRE) версіі 8.

Сістэмныя патрабаванні:

  • АЗП - 1 ГБ мінімум, лепш больш;
  • працэсар - двух'ядравы, з частатой працы ядра 2 Ггц;
  • жорсткі дыск - мінімум 1 ГБ вольнага месца.

Агент:

  • АЗП – мінімум 128 Мбайт, лепш больш;
  • працэсар - мінімум 2 Ггц.

Сервер забяспечвае працу агентаў і дае зручны інтэрфейс для карыстальніка:

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Stages/Jobs/Tasks:

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

Усталёўка для Linux

рэха "дэб download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

завітак download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
add-apt-repository ppa:openjdk-r/ppa

apt-get абнаўлення

apt-get install -y openjdk-8-jre

apt-get install go-server

apt-get install go-agent

/etc/init.d/go-server [start|stop|status|restart]

/etc/init.d/go-agent [start|stop|status|restart]

Па змаўчанні GoCd працуе па лакальны: 8153.

Моцныя бакі GoCd:

  • адкрыты зыходны код;
  • простая ўстаноўка і настройка;
  • добрая дакументацыя;

  • выдатны карыстацкі інтэрфейс:

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

  • магчымасць пакрокавага адлюстравання шляху разгортвання GoCD у адным уяўленні:

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

  • выдатнае адлюстраванне структуры канвеера:

3 папулярных прылады для арганізацыі бесперапыннага разгортвання (Continuous Deployment)

  • GoCD аптымізуе працоўны працэс CD у самых запатрабаваных хмарных асяроддзях, уключаючы Docker, AWS;
  • прылада дае магчымасць выпраўляць няспраўнасці ў канвееры, для чаго ёсць адсочванне кожнай змены ад коммита да разгортванні ў realtime-рэжыме.

Мінусы:

  • патрэбен хаця б адзін агент;
  • няма кансолі для адлюстравання ўсіх выкананых задач;
  • для выканання кожнай каманды трэба ствараць па адной задачы да канфігурацыі канвеера;
  • для ўсталёўкі плагіна патрабуецца перамясціць файл .jar у /plugins/external і перазапусціць сервер;
  • адносна невялікая супольнасць.

У якасці вываду

Гэта ўсяго тры інструменты, насамрэч іх значна больш. Выбіраць складана, таму абавязкова трэба зважаць на дадатковыя аспекты.

Адкрыты зыходны код прылады дае магчымасць зразумець, што ён з сябе ўяўляе, плюс хутчэй дадаваць новыя функцыі. Але вось калі нешта не працуе, то даводзіцца спадзявацца толькі на сябе і на дапамогу кам'юніці. Платныя прылады даюць падтрымку, якая можа часам апынуцца крытычна важнай.

Калі бяспека важней за ўсё, варта працаваць з лакальнай прыладай. Калі ж не, то выбар SaaS-рашэнні - добры варыянт.

І апошняе: для таго каб забяспечыць сапраўды эфектыўны працэс бесперапыннага разгортвання, трэба сфарміраваць крытэры, спецыфіка якіх дасць магчымасць звузіць круг выбару даступных прылад.

Skillbox рэкамендуе:

Крыніца: habr.com

Дадаць каментар