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

За управление на потока може да се използва широк набор от инструменти, сред които има както платени, така и напълно безплатни. В тази статия се описват три от най-популярните решения сред разработчиците, които могат да бъдат полезни на всеки програмист.
Jenkins
Напълно автономен сървър за автоматизация с отворен код. С него е добре да се работи за автоматизация на всички видове задачи, свързани със събиране, тестване, доставка или разгръщане на софтуер.
Минимални изисквания за PC:
- 256 MB RAM, 1 GB дисково пространство.
Оптимално:
- 1 GB RAM, 50 GB на твърдия диск.
За работа ще е нужно и допълнително софтуерно обезпечение — 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.
Изискванията на сървъра към хардуера не са критични:
- RAM — 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
Отворен софтуерен проект, за инсталирането и функционирането на който е необходима Java Runtime Environment (JRE) версия 8.
Системни изисквания:
- RAM — минимум 1 ГБ, по-добре повече;
- процесор — двуядрен, с работна честота на ядро 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;
- инструментът дава възможност за отстраняване на неизправности в потока, за което има проследяване на всяка промяна от комит до разширение в реално време.
Недостатъци:
- нужен е поне един агент;
- няма консолa за показване на всички извършени задачи;
- за изпълнение на всяка команда е необходимо да се създава по една задача в конфигурацията на потока;
- за инсталиране на плъгин е необходимо да се премести файла .jar в /plugins/external и да се рестартира сървърът;
- относително малко общество.
В заключение
Това са само три инструмента, всъщност има много повече. Изборът е труден, затова е необходимо да се обърне внимание и на допълнителни аспекти.
Откритият код на инструмента дава възможност да разберем какво представлява, плюс по-бързо добавяне на нови функции. Но ако нещо не работи, трябва да разчитаме само на себе си и на помощта на общността. Платените инструменти предоставят поддръжка, която понякога може да бъде решаваща.
Ако сигурността е най-важна, струва си да работите с локален инструмент. Ако не, изборът на SaaS-решение е добро решение.
И накрая: за да осигурите наистина ефективен процес на непрекъснато разгръщане, е необходимо да се съставят критерии, спецификата на които ще стесни избора на налични инструменти.
Skillbox препоръчва:
- Двугодишен практически курс .
- Онлайн курс .
- Практически годишен курс .
Източник: habr.com
