3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

Непрерывно разгръщане (Continuous Deployment) е специален подход в разработката на софтуер, който се използва за бързо, безопасно и ефективно внедряване на различни функции в софтуера.

Основната идея е създаването на надежден автоматизиран процес, който позволява на разработчика бързо да предоставя готов продукт на потребителя. При това постоянно се внасят изменения в продукционната среда, което се нарича конвейер за непрекъсната доставка (CD Pipeline).

Skillbox препоръчва: Практически курс «Мобилен разработчик ПРО».

Напомняме: за всички читатели на «Хабра» — отстъпка от 10 000 рубли при записване на всеки курс Skillbox с промокод «Хабр».

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

За управление на потока може да се използва широк набор от инструменти, сред които има както платени, така и напълно безплатни. В тази статия са описани три от най-популярните решения сред разработчиците, които могат да бъдат полезни на всеки програмист.

Jenkins

Напълно автономен сървър за автоматизация с отворен код. На него е добре да се работи за автоматизация на всички видове задачи, свързани със сглобяването, тестването, доставката или разгръщането на софтуера.

Минимални изисквания за PC:

  • 256 МБ RAM, 1 ГБ дисково пространство.

Оптимално:

  • 1 ГБ RAM, 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

Актуализиране на хранилището за пакети:

sudo apt update

Инсталиране на Jenkins:

sudo apt install jenkins

След това Jenkins ще бъде наличен в системата на подразбиращия се порт 8080.

За проверка на работоспособността трябва да отворите в браузъра адрес localhost: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 GB;
  • процесор — двуядрен, 3,2 GHz;
  • канал за връзка с пропускна способност 1 Gb/s.

Сървърът предоставя висока производителност в работата:

  • 60 проекта с 300 конфигурации на сборки;
  • разпределение на 2 MB на журнал на сборката;
  • 50 агента за сборка;
  • възможност за работа на 50 потребители в уеб версията и 30 потребители в IDE;
  • 100 свързвания към външна SCM, обикновено 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)

Стандартната конфигурация работи на localhost:8111/ с един регистриран агент за сборка, стартиран на същия ПК.

Силни страни на TeamCity:

  • лесна настройка;
  • удобен интерфейс;
  • голямо количество вградени функции;
  • обслужване на клиенти;
  • има RESTful API;
  • добра документация;
  • добра защита.

Минуси:

  • ограничена интеграция;
  • това е платен инструмент;
  • малка общност (която, впрочем, расте).

GoCD

Open source проект, за инсталиране и работа на който е необходим Java Runtime Environment (JRE) версия 8.

Системни изисквания:

  • RAM — минимум 1 GB, по-добре повече;
  • процесор — двуядрен с тактова честота 2 GHz;
  • твърд диск — минимум 1 GB свободно място.

Агент:

  • RAM — минимум 128 MB, по-добре повече;
  • процесор — минимум 2 GHz.

Сървърът осигурява работа на агентите и предлага удобен интерфейс за потребителя:

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

Степени/Работи/Задачи:

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

Инсталация за Linux

echo "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add —
add-apt-repository ppa:openjdk-r/ppa

apt-get update

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 работи на localhost:8153.

Силни страни на GoCd:

  • отворен код;
  • прост процес на инсталиране и конфигуриране;
  • добра документация;

  • отличен потребителски интерфейс:

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

  • възможност за стъпково представяне на пътя на внедряване на GoCD в едно представяне:

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

  • отлично представяне на структурата на конвейера:

3 популярни инструмента за организиране на непрекъснато разгръщане (Continuous Deployment)

  • GoCD оптимизира работния процес на CD в най-популярните облачни среди, включително Docker, AWS;
  • инструментът позволява откриване на проблеми в конвейера, за което има проследяване на всяка промяна от комита до внедряване в реално време.

Минуси:

  • необходим е поне един агент;
  • няма конзола за показване на всички извършени задачи;
  • за изпълнение на всяка команда е необходимо да се създаде по една задача в конфигурацията на конвейера;
  • за инсталиране на плъгин е необходимо да преместите файла .jar в /plugins/external и да рестартирате сървъра;
  • относително малка общност.

Като изход

Това са само три инструмента, всъщност те са много повече. Изборът е труден, затова е важно да се обърне внимание на допълнителните аспекти.

Отвореният код на инструмента дава възможност да се разбере какво представлява, плюс по-бързо добавяне на нови функции. Но ако нещо не работи, трябва да разчитате само на себе си и на помощта на общността. Платените инструменти предлагат поддръжка, която понякога може да се окаже критично важна.

Ако сигурността е най-важна, струва си да работите с локален инструмент. Ако не е, тогава изборът на SaaS решение е добро решение.

И накрая: за да осигурите наистина ефективен процес на непрекъснато разгръщане, е необходимо да се формират критерии, чиято специфика ще позволи да се стесни избора на наличните инструменти.

Skillbox препоръчва:

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster