3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

Continuous Deployment (безперервне розгортання) — особливий підхід у розробці програмного забезпечення, який застосовується для швидкого, безпечного та ефективного впровадження різноманітних функцій програмного забезпечення.

Основна ідея - створення надійного автоматизованого процесу, що дозволяє розробнику швидко надавати готовий продукт користувачу. При цьому вносяться постійні зміни до продакшну - це називається конвеєром безперервної доставки (CD Pipeline).

Skillbox рекомендує: Практичний курс «Мобільний розробник PRO».

Нагадуємо: для всіх читачів "Хабра" - знижка 10 000 рублів при записі на будь-який курс Skillbox за промокодом "Хабр".

3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

Для управління потоком можна використовувати широкий ряд інструментів, серед яких є як платні, так і безкоштовні. У цій статті описуються три найпопулярніші серед розробників рішення, які можуть виявитися корисними для кожного програміста.

Дженкінс

Повністю автономний сервер автоматизації з відкритим кодом. З ним варто працювати для автоматизації всіх видів завдань, пов'язаних зі збиранням, тестуванням, постачанням або розгортанням програмного забезпечення.

Мінімальні вимоги до ПК:

  • 256 МБ ОЗП, 1 ГБ файлового простору.

Оптимально:

  • 1 ГБ ОЗП, 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 інсталювати jenkins

Після цього Jenkins буде доступний у системі дефолтного порту 8080.

Для перевірки працездатності потрібно відкрити у браузері адресу локальний: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 ГБ;
  • процесор - двоядерний, 3,2 ГГц;
  • канал зв'язку з пропускною спроможністю 1 Гб/с.

Сервер дозволяє досягти високої продуктивності у роботі:

  • 60 проектів із 300 конфігураціями збірок;
  • виділення 2 МБ на журнал збирання;
  • 50 агентів збирання;
  • можливість роботи 50 користувачів у веб-версії та 30 користувачів у IDE;
  • 100 підключень зовнішньої ВКВ, як правило, 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)

Стандартна конфігурація працює на локальний:8111/ з одним зареєстрованим агентом збирання, запущеним на тому ж ПК.

Сильні сторони TeamCity:

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

Мінуси:

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

GoCD

Open source-проект, для встановлення та роботи якого потрібно Java Runtime Environment (JRE) версії 8.

Системні вимоги:

  • ОЗУ - 1 ГБ мінімум, краще більше;
  • процесор - двоядерний, з частотою роботи ядра 2 ГГц;
  • жорсткий диск – мінімум 1 ГБ вільного місця.

Агент:

  • ОЗУ – мінімум 128 Мбайт, краще більше;
  • процесор - мінімум 2 ГГц.

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

3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

Stages/Jobs/Tasks:

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

apt-get поновлення

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:

  • відкритий вихідний код;
  • просте встановлення та налаштування;
  • гарна документація;

  • відмінний інтерфейс користувача:

3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

  • можливість покрокового відображення шляху розгортання GoCD в одному поданні:

3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

  • чудове відображення структури конвеєра:

3 популярні інструменти для організації безперервного розгортання (Continuous Deployment)

  • GoCD оптимізує робочий процес CD у найбільш затребуваних хмарних середовищах, включаючи Docker, AWS;
  • інструмент дає можливість виправляти несправності в конвеєрі, для чого є відстеження кожної зміни від комміту до розгортання в режимі реального часу.

Мінуси:

  • потрібен хоча б один агент;
  • немає консолі відображення всіх виконаних завдань;
  • до виконання кожної команди необхідно створювати за одним завданням конфігурації конвеєра;
  • для встановлення плагіна потрібно перемістити файл .jar в /plugins/external та перезапустити сервер;
  • відносно невелика спільнота.

Як висновок

Це лише три інструменти, насправді їх набагато більше. Вибирати складно, тож обов'язково потрібно звертати увагу на додаткові аспекти.

Відкритий вихідний код інструменту дає можливість зрозуміти, що він являє собою, плюс швидше додавати нові функції. Але якщо щось не працює, то доводиться сподіватися лише на себе і на допомогу ком'юніті. Платні інструменти надають підтримку, яка може виявитися критично важливою.

Якщо безпека найважливіше, варто працювати з локальним інструментом. Якщо ж ні, то вибір SaaS-рішення – гарний варіант.

І останнє: щоб забезпечити дійсно ефективний процес безперервного розгортання, потрібно сформувати критерії, специфіка яких дасть змогу звузити коло вибору доступних інструментів.

Skillbox рекомендує:

Джерело: habr.com

Додати коментар або відгук