Деплоим как профи: обзор инструментов для непрерывного развёртывания
Статья расскажет о популярных инструментах непрерывной доставки (Continuous Delivery) в продакшн, как коммерческих так и широко доступных.
10К открытий10К показов
Непрерывная доставка (Continuous Delivery или просто CD) — подход к доставке программного обеспечения в продакшн, используемый IT-компаниями для предоставления пользовательских функций более быстрым, безопасным и непрерывным способом.
Идея заключается в создании надёжного и автоматизированного процесса, который доставляет программное обеспечение от разработчика к пользователю. Цель состоит в постоянном внесении изменений в продакшн. Такой подход известен как CD-пайплайн (конвейер непрерывной доставки).
Есть много программных инструментов, которые управляют этим потоком. Некоторые из них бесплатны, а за использование других придётся заплатить. Ниже кратко опишем 3 самых популярных.
Jenkins
Это автономный сервер автоматизации с открытым исходным кодом. Его можно использовать для автоматизации всех видов задач, связанных со сборкой, тестированием, поставкой или развёртыванием программного обеспечения.
Требуемое дополнительное ПО: Java Runtime Environment (JRE) версии 8.
Требования к «железу»:
- минимальные — 256 Мбайт оперативной памяти, 1 Гбайт места на жёстком диске;
- рекомендуемые — 1 Гбайт оперативной памяти, 50 Гбайт места на жёстком диске.
Архитектура основана на модели распределенных вычислений (Master/Slave).
Jenkins Server — это базовая установка, отвечающая за хостинг GUI, организацию и выполнение сборки.
Jenkins Node/Slave/Build Server — устройства, которые могут быть настроены для выполнения функций по сборке от имени главного узла.
Пошаговая установка для Linux
Добавьте репозиторий Jenkins в систему.
Обновите репозиторий пакетов
Установите Jenkins
Теперь Jenkins должен быть доступен в вашей системе по умолчанию через порт 8080.
Перейдите в браузере по адресу http://localhost:8080
. Вам будет предложено ввести начальный пароль пользователя с правами администратора. Найти его можно в файле /var/lib/jenkins/secrets/initialAdminPassword
.
Теперь настройка выполнена и можно начать создавать свои потоки CI/CD. Вот несколько примеров того, как выглядит графический интерфейс.
Преимущества:
- масштабируемость благодаря архитектуре Master/Slave;
- включает в себя REST XML/JSON API;
- подключение большого количества расширений, благодаря плагинам, которые добавляют множество функций;
- большое и активное онлайн-сообщество, которое является хорошим ресурсом поддержки и примеров реализации.
Недостатки:
- нет аналитики;
- устаревший интерфейс по сравнению с другими инструментами.
TeamCity
Это коммерческий сервер для CI/CD от компании JetBrains. Он известен своей простой настройкой и красивым пользовательским интерфейсом. TeamCity имеет мощный набор функций прямо «из коробки» и растущую экосистему плагинов.
Требуемое дополнительное ПО: Java Runtime Environment (JRE) версии 8.
Имея относительно скромный сервер (3,2 Гбайта ОЗУ, двухъядерный процессор 3,2 ГГц, один жёсткий диск и сетевой адаптер с пропускной способностью 1 Гбайт), вы можете получить следующее:
- 60 проектов и 300 конфигураций сборки;
- более 300 сборок в день;
- около 2 Мбайта log-журнала на сборку;
- 50 агентов сборки (компоновки);
- 50 пользователей web-версии и 30 пользователей IDE;
- 100 возможных подключений внешней СКВ (в основном Perforce и Subversion с использованием проверки сервера), средний интервал проверки изменений составляет 120 секунд;
- более 150 изменений в день;
- база данных (MySQL) работает на той же машине;
- серверный процесс TeamCity имеет следующие настройки JVM:
-Xmx1100m -XX:MaxPermSize=120m
.
Требования к агенту в основном определяются запущенными сборками. Задача сервера TeamCity состоит в том, чтобы отслеживать все подключённые агенты, а также распределять сборки из очереди по этим агентам на основе требований совместимости и сообщать о результатах. Агенты могут иметь разные платформы, операционные системы и предварительно сконфигурированные среды.
Вся информация о результатах сборки хранится в базе данных: история и прочие данные, за исключением артефактов и журналов сборки, а также изменения VCS, агенты, очереди сборки, аккаунты и разрешения пользователей.
Пошаговая установка для Linux
Используйте архив TeamCity<номер версии>.tar.gz, чтобы вручную установить TeamCity в комплекте с контейнером сервлета Tomcat. Архив можно скачать отсюда.
При первом запуске TeamCity можно выбрать тип базы данных SQL, в которой будут храниться данные о сборке.
По умолчанию TeamCity работает на http://localhost:8111/ и имеет одного зарегистрированного агента сборки, который работает на той же машине.
Преимущества:
- простота использования/настройки;
- удобный интерфейс;
- встроенные функции;
- служба поддержки;
- предлагает RESTful API;
- хорошо задокументирован;
- хорошая защищённость «из коробки»;
- быстрая и простая установка/настройка.
Недостатки:
- ограниченная интеграция;
- является коммерческим инструментом;
- маленькое сообщество, но оно растёт.
GoCD
Это ещё один инструмент CI/CD с открытым исходным кодом.
Требуемое ПО: Java Runtime Environment (JRE) версии 8.
Требования к «железу».
- Сервер:ОЗУ: минимум 1 Гбайт, рекомендуется 2 Гбайта;Процессор: минимум 2 ядра, 2 ГГц;Жёсткий диск: минимум 1 ГБ свободного места.
- Агент:ОЗУ: минимум 128 Мбайт, рекомендуется 256 Мбайт;Процессор: минимум 2 ГГц.
Сервер предоставляет интерфейс пользователя и работу для агентов. Агенты запускают команды, полученные с сервера.
Схема конвейера (Stages/Jobs/Tasks):
Пошаговая установка для Linux
По умолчанию GoCD работает на http://localhost:8153/.
Преимущества:
- открытый исходный код;
- простая установка;
- подробная документация;
- дружественный графический интерфейс;
- Пошаговое отображение пути развёртывания в одном представлении;
- хороший обзор структуры конвейера;
- GoCD оптимизирует рабочий процесс CD в популярных облачных средах, таких как Kubernetes, Docker, AWS;
- GoCD помогает устранять неисправности в конвейере, отслеживая каждое изменение от коммита до развертывания в режиме реального времени.
Недостатки:
- вам нужно установить хотя бы одного агента;
- нет главной консоли для отображения всех выполненных заданий;
- в конфигурации конвейера вы должны создать по одной задаче для каждой команды, которую вы хотите выполнить;
- чтобы установить плагин, нужно поместить файл
.jar
в<go-server-location>/plugins/external
и перезапустить сервер; - небольшое сообщество.
Подведём итоги
Это всего лишь 3 примера, но есть и много других инструментов, связанных с CD. Выбор правильного для вас может быть непростым, поэтому обратить внимание стоит на важные аспекты, от которых и будет зависеть выбор.
Открытый исходный код позволяет заглянуть «под капот», а также быстрее реализовывать новые функции. Но, если что-то сломается, у вас есть только свой опыт и помощь сообщества. За платное программное обеспечение вы получаете поддержку разработчика, поэтому его легче внедрить и оно стабильнее в работе.
Если вы хотите интегрироваться со сторонней компанией или просто не хотите заботиться о функционировании и масштабировании, можете предпочесть SaaS-решение. С другой стороны, если безопасность является главной заботой или есть юридические ограничения, лучше использовать собственное решение (локальный хостинг).
Уделите больше внимание к особым требованиям вашего развёртывания. Их специфика может помочь сузить список подходящих инструментов и сэкономить время.
10К открытий10К показов