
Непрерывно разгръщане (Continuous Deployment) е специален подход в разработката на софтуер, който се използва за бързо, безопасно и ефективно внедряване на различни функции в софтуера.
Основната идея е създаването на надежден автоматизиран процес, който позволява на разработчика бързо да предоставя готов продукт на потребителя. При това постоянно се внасят изменения в продукционната среда, което се нарича конвейер за непрекъсната доставка (CD Pipeline).
Skillbox препоръчва: Практически курс .
Напомняме: за всички читатели на «Хабра» — отстъпка от 10 000 рубли при записване на всеки курс Skillbox с промокод «Хабр».

За управление на потока може да се използва широк набор от инструменти, сред които има както платени, така и напълно безплатни. В тази статия са описани три от най-популярните решения сред разработчиците, които могат да бъдат полезни на всеки програмист.
Jenkins
Напълно автономен сървър за автоматизация с отворен код. На него е добре да се работи за автоматизация на всички видове задачи, свързани със сглобяването, тестването, доставката или разгръщането на софтуера.
Минимални изисквания за PC:
- 256 МБ RAM, 1 ГБ дисково пространство.
Оптимално:
- 1 ГБ RAM, 50 ГБ на хард диска.
За работа ще е нужно и допълнително софтуерно осигуряване — Java Runtime Environment (JRE) версия 8.
Архитектурата (разпределени изчисления) изглежда по следния начин:

Jenkins Server — инсталация, която отговаря за хостинга на GUI и за организиране и изпълнение на цялото сглобяване.
Jenkins Node/Slave/Build Server — устройства, които могат да бъдат настроени за извършване на работа по сглобяването от името на Master (главния възел).
Инсталация за Linux
Първо трябва да добавите хранилището на Jenkins в системата:
cd /tmp && wget -q -O — | sudo apt-key add — echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Актуализиране на хранилището за пакети:
sudo apt update
Инсталиране на Jenkins:
sudo apt install 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 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, агенти, опашки за сборки, акаунти и разрешения на потребителите. В базата не влизат само журналите на сборката и артефактите.

Инсталация за 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.
Системни изисквания:
- RAM — минимум 1 GB, по-добре повече;
- процесор — двуядрен с тактова честота 2 GHz;
- твърд диск — минимум 1 GB свободно място.
Агент:
- RAM — минимум 128 MB, по-добре повече;
- процесор — минимум 2 GHz.
Сървърът осигурява работа на агентите и предлага удобен интерфейс за потребителя:

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

Инсталация за Linux
echo "deb /” | sudo tee /etc/apt/sources.list.d/gocd.list
curl | 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 работи на :8153.
Силни страни на GoCd:
- отворен код;
- прост процес на инсталиране и конфигуриране;
- добра документация;
- отличен потребителски интерфейс:

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

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

- GoCD оптимизира работния процес на CD в най-популярните облачни среди, включително Docker, AWS;
- инструментът позволява откриване на проблеми в конвейера, за което има проследяване на всяка промяна от комита до внедряване в реално време.
Минуси:
- необходим е поне един агент;
- няма конзола за показване на всички извършени задачи;
- за изпълнение на всяка команда е необходимо да се създаде по една задача в конфигурацията на конвейера;
- за инсталиране на плъгин е необходимо да преместите файла .jar в /plugins/external и да рестартирате сървъра;
- относително малка общност.
Като изход
Това са само три инструмента, всъщност те са много повече. Изборът е труден, затова е важно да се обърне внимание на допълнителните аспекти.
Отвореният код на инструмента дава възможност да се разбере какво представлява, плюс по-бързо добавяне на нови функции. Но ако нещо не работи, трябва да разчитате само на себе си и на помощта на общността. Платените инструменти предлагат поддръжка, която понякога може да се окаже критично важна.
Ако сигурността е най-важна, струва си да работите с локален инструмент. Ако не е, тогава изборът на SaaS решение е добро решение.
И накрая: за да осигурите наистина ефективен процес на непрекъснато разгръщане, е необходимо да се формират критерии, чиято специфика ще позволи да се стесни избора на наличните инструменти.
Skillbox препоръчва:
- Двугодишен практически курс .
- Онлайн курс .
- Практически годишен курс .
Източник: habr.com
