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

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

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

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

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

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

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

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

Jenkins

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

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

  • 256 MB RAM, 1 GB дисково пространство.

Оптимално:

  • 1 GB RAM, 50 GB на твърдия диск.

За работа ще е нужно и допълнително софтуерно обезпечение — 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.

Изискванията на сървъра към хардуера не са критични:

  • 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, агенти, опашки за сборки, потребителски акаунти и разрешения. В базата не влизат само журналите на сборките и артефактите.

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

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

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

  • RAM — минимум 1 ГБ, по-добре повече;
  • процесор — двуядрен, с работна честота на ядро 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;
  • инструментът дава възможност за отстраняване на неизправности в потока, за което има проследяване на всяка промяна от комит до разширение в реално време.

Недостатъци:

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

В заключение

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

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

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

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

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

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

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