3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

Ҷойгиркунии доимӣ як равиши махсус дар таҳияи нармафзор аст, ки барои зуд, бехатар ва самаранок иҷро кардани вазифаҳои гуногун дар нармафзор истифода мешавад.

Идеяи асосй ба вучуд овардани процесси боэътимоди автоматиконидашуда мебошад, ки ба таҳиякунанда имкон медиҳад, ки маҳсулоти тайёрро зуд ба корбар расонад. Дар баробари ин, дар истеҳсолот тағйироти доимӣ ворид карда мешавад - ин қубури интиқоли доимӣ (CD Pipeline) номида мешавад.

Skillbox тавсия медиҳад: Курси амалӣ "Таҳиягари мобилӣ PRO".

Мо ба шумо хотиррасон мекунем: барои ҳамаи хонандагони "Habr" - тахфифи 10 000 рубл ҳангоми номнавис шудан ба курсҳои Skillbox бо истифода аз рамзи таблиғотии "Habr".

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

Барои назорат кардани ҷараён шумо метавонед як қатор асбобҳоро истифода баред, аз ҷумла ҳам пулакӣ ва ҳам комилан ройгон. Ин мақола се ҳалли маъмултаринро дар байни таҳиягарон тавсиф мекунад, ки метавонанд барои ҳар як барномасоз муфид бошанд.

Ҷенкинс

Сервери автоматикунонии манбаи кушодаи комилан мустақил. Барои автоматикунонии ҳама гуна вазифаҳои марбут ба сохтан, озмоиш, интиқол ё ҷойгиркунии нармафзор кор кардан бамаврид аст.

Талаботи ҳадди аққали компютер:

  • 256 MB RAM, 1 ГБ фазои файл.

Беҳтарин:

  • 1 ГБ RAM, 50 ГБ диски сахт.

Барои кор, ба шумо инчунин нармафзори иловагӣ лозим аст - Java Runtime Environment (JRE) версияи 8.

Меъморӣ (компютерҳои тақсимшуда) чунин менамояд:
3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

Jenkins Server як насбест, ки барои хостинги GUI, инчунин ташкил ва иҷрои тамоми сохтмон масъул аст.

Ҷенкинс Node/Slave/Build Server - дастгоҳҳое, ки метавонанд барои иҷрои корҳои сохтмонӣ аз номи Мастер танзим карда шаванд (гиреҳи асосӣ).

Насб барои Linux

Аввалан ба шумо лозим аст, ки анбори Ҷенкинсро ба система илова кунед:

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable бинарй/' | sudo tee -a /etc/apt/sources.list.d/je

Навсозии анбори бастаҳо:

Садо Ояндасоз

Ҷенкинсро насб кунед:

sudo apt Ҷенкинсро насб кунед

Пас аз ин, Ҷенкинс дар система тавассути бандари пешфарз 8080 дастрас хоҳад шуд.

Барои санҷидани функсия, шумо бояд суроғаро дар браузер кушоед localhost: 8080. Пас аз он система аз шумо хоҳиш мекунад, ки пароли ибтидоии корбари решаро ворид кунед. Ин парол дар файли /var/lib/jenkins/secrets/initialAdminPassword ҷойгир аст.

Ҳоло ҳама чиз барои рафтан омода аст, шумо метавонед ба эҷоди ҷараёнҳои CI/CD шурӯъ кунед. Интерфейси графикии мизи корӣ чунин менамояд:

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

Ҷонибҳои Ҷенкинс:

  • миқёспазирӣ аз ҷониби меъмории Master/Slave таъмин карда мешавад;
  • мавҷудияти REST XML/JSON API;
  • қобилияти пайваст кардани шумораи зиёди васеъшавӣ ба туфайли плагинҳо;
  • ҷомеаи фаъол ва доимо инкишофёбанда.

Эзоҳ:

  • блоки таҳлилӣ вуҷуд надорад;
  • Интерфейси хеле барои истифодабаранда ќулай нест.

TeamCity

Рушди тиҷоратӣ аз JetBrains. Сервер бо танзимоти оддӣ ва интерфейси аъло хуб аст. Конфигуратсияи пешфарз дорои шумораи зиёди функсияҳо мебошад ва шумораи плагинҳои дастрас мунтазам меафзояд.

Нусхаи 8 Java Runtime Environment (JRE) -ро талаб мекунад.

Талаботи сахтафзори сервер муҳим нестанд:

  • RAM - 3,2 ГБ;
  • протсессори дугона-аслӣ, 3,2 ГГц;
  • канали алоқа бо иқтидори 1 Гб/с.

Сервер ба шумо имкон медиҳад, ки иҷрои баландро ба даст оред:

  • 60 лоиҳа бо 300 конфигуратсияи сохтмон;
  • Ҷудо кардани 2 МБ барои сабти сохтмон;
  • 50 агентҳои сохтмонӣ;
  • қобилияти кор кардан бо 50 корбар дар версияи веб ва 30 корбар дар IDE;
  • 100 пайвасти VCS беруна, одатан 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 [оғоз|ист]

Вақте ки шумо бори аввал оғоз мекунед, шумо бояд навъи махзани маълумотро интихоб кунед, ки дар он маълумоти ҷамъбаст нигоҳ дошта мешавад.

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

Конфигуратсияи пешфарз кор мекунад localhost: 8111/ бо як агенти бақайдгирифташуда дар як компютер кор мекунад.

Тарафҳои тавонои TeamCity:

  • танзими осон;
  • интерфейси истифодабаранда;
  • шумораи зиёди функсияҳои дарунсохт;
  • Хадамоти дастгирӣ;
  • API RESTful мавҷуд аст;
  • ҳуҷҷатҳои хуб;
  • амнияти хуб.

Эзоҳ:

  • ҳамгироии маҳдуд;
  • Ин воситаи пулакӣ аст;
  • як ҷомеаи хурд (ки, аммо, меафзояд).

GoCD

Лоиҳаи кушодаасос, ки барои насб ва истифода версияи Java Runtime Environment (JRE) 8-ро талаб мекунад.

Талабот ба система:

  • RAM - 1 ГБ ҳадди ақал, бештар беҳтар аст;
  • протсессори дугона-аслӣ, бо басомади асосии 2 ГГц;
  • диски сахт - на камтар аз 1 ГБ фазои озод.

Агент:

  • RAM - на камтар аз 128 MB, бештар беҳтар аст;
  • протсессори - на камтар аз 2 ГГц.

Сервер кори агентҳоро таъмин мекунад ва интерфейси қулайро барои корбар таъмин мекунад:

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

Марҳилаҳо/Ҷойҳо/Вазифаҳо:

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-apt-repository ppa: openjdk-r/ppa

навсозии apt-get

apt-get install -y openjdk-8-jre

apt-get насб кардани go-server

apt-get install go-agent

/etc/init.d/go-server [оғоз|қатъ|статус|бозоғоз кардан]

/etc/init.d/go-agent [оғоз|қатъ|статус|бозоғоз кардан]

Бо нобаёнӣ GoCd кор мекунад localhost: 8153.

Тарафҳои тавонои GoCd:

  • манбаи кушода;
  • насб ва конфигуратсияи оддӣ;
  • ҳуҷҷатҳои хуб;

  • Интерфейси бузурги корбар:

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

  • қобилияти нишон додани қадам ба қадам роҳи ҷойгиркунии GoCD дар як намуд:

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

  • Намоиши аълои сохтори қубур:

3 абзори маъмул барои ташкили густариши доимӣ (Continuous Deployment)

  • GoCD ҷараёни кори CD-ро дар маъмултарин муҳитҳои абрӣ, аз ҷумла Docker, AWS оптимизатсия мекунад;
  • асбоб имкон медиҳад, ки мушкилот дар лӯла ислоҳ карда шаванд, ки барои онҳо ҳар як тағирот аз ӯҳдадорӣ то ҷойгиркунӣ дар вақти воқеӣ пайгирӣ карда мешавад.

Эзоҳ:

  • ҳадди аққал як агент лозим аст;
  • барои намоиш додани ҳама вазифаҳои иҷрошуда ягон консол вуҷуд надорад;
  • барои иҷрои ҳар як фармон, шумо бояд як вазифаро барои конфигуратсияи қубур эҷод кунед;
  • Барои насб кардани плагин ба шумо лозим аст, ки файли .jar-ро ба /plugins/external ва серверро бозоғоз намоед;
  • ҷомеаи нисбатан хурд.

Хамчун хулоса

Инҳо танҳо се асбоб ҳастанд, дар асл бисёр чизҳои дигар ҳастанд. Интихоб кардан душвор аст, бинобар ин шумо бешубҳа бояд ба ҷанбаҳои иловагӣ диққат диҳед.

Рамзи кушодаи асбоб имкон медиҳад, ки фаҳмем, ки он чӣ аст ва илова бар он хусусиятҳои навро зудтар илова кунед. Аммо агар чизе кор накунад, пас шумо бояд танҳо ба худ ва кӯмаки ҷомеа такя кунед. Воситаҳои пулакӣ дастгирӣ мекунанд, ки баъзан метавонанд муҳим бошанд.

Агар амният афзалияти аввалиндараҷаи шумо бошад, он бамаврид аст, ки бо асбоби маҳаллӣ кор кунед. Агар не, пас интихоби ҳалли SaaS як варианти хуб аст.

Ва ниҳоят, барои таъмини раванди воқеии самараноки пайвастаи ҷойгиркунӣ, шумо бояд меъёрҳоеро таҳия кунед, ки хусусиятҳои онҳо ба шумо имкон медиҳанд, ки доираи асбобҳои дастрасро маҳдуд кунед.

Skillbox тавсия медиҳад:

Манбаъ: will.com

Илова Эзоҳ