ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Continuous Deployment (непрерывное развертывание) — особый подход в разработке программного обеспечения, который применяется для быстрого, безопасного и эффективного внедрения различных функций в ПО.

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

Skillbox সুপারিশ করে: ব্যবহারিক কোর্স "মোবাইল ডেভেলপার প্রো".

আমরা মনে করিয়ে দিচ্ছি: "Habr"-এর সকল পাঠকদের জন্য - "Habr" প্রচারমূলক কোড ব্যবহার করে যেকোনো Skillbox কোর্সে নথিভুক্ত করার সময় 10 রুবেল ছাড়।

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Для управления потоком можно использовать широкий ряд инструментов, среди которых есть как платные, так и полностью бесплатные. В этой статье описываются три самых популярных среди разработчиков решения, которые могут оказаться полезными каждому программисту.

জেনকিন্স

Полностью автономный сервер автоматизации с открытым исходным кодом. С ним стоит работать для автоматизации всех видов задач, связанных со сборкой, тестированием, поставкой или развертыванием программного обеспечения.

ন্যূনতম পিসি প্রয়োজনীয়তা:

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

সর্বোত্তম:

  • 1 ГБ ОЗУ, 50 ГБ на жестком диске.

Для работы понадобится еще и дополнительное программное обеспечение — Java Runtime Environment (JRE) версии 8.

Архитектура (распределенные вычисления) выглядит следующим образом:
ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

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

Обновить репозиторий пакетов:

সুডো আপডেটের আপডেট

Установить Jenkins:

sudo apt install jenkins

После этого Jenkins будет доступен в системе по дефолтному порту 8080.

Для проверки работоспособности нужно открыть в браузере адрес স্থানীয় হোস্ট:8080. Затем система предложит ввести начальный пароль пользователя с root-правами. Этот пароль находится в файле /var/lib/jenkins/secrets/initialAdminPassword.

Теперь все готово к работе, можно приступать к созданию потоков CI/CD. Графический интерфейс рабочей среды выглядит следующим образом:

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Сильные стороны 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টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Установка для Linux

Для ручной установки TeamCity с контейнером сервлета Tomcat следует использовать архив TeamCity: TeamCity .tar.gz. Загрузить его можно отсюда.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

При первом запуске нужно выбрать тип БД, в которой будут храниться данные о сборке.

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Конфигурация по умолчанию работает на স্থানীয় হোস্ট:8111/ с одним зарегистрированным агентом сборки, запущенным на том же ПК.

Сильные стороны TeamCity:

  • সহজ সেটআপ;
  • ব্যবহারকারীর ইন্টারফেস;
  • большое количество встроенных функций;
  • служба поддержки;
  • есть RESTful API;
  • неплохая документация;
  • хорошая защищенность.

কনস:

  • ограниченная интеграция;
  • это платный инструмент;
  • небольшое сообщество (которое, впрочем, растет).

GoCD

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

সিস্টেম প্রয়োজনীয়তা:

  • ОЗУ — 1 ГБ минимум, лучше больше;
  • процессор — двухъядерный, с частотой работы ядра 2 ГГц;
  • жесткий диск — минимум 1 ГБ свободного места.

প্রতিনিধি:

  • ОЗУ — минимум 128 Мбайт, лучше больше;
  • процессор — минимум 2 ГГц.

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

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Stages/Jobs/Tasks:

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

Установка для 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 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টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

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

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

  • отличное отображение структуры конвейера:

ধারাবাহিক স্থাপনা সংগঠিত করার জন্য 3টি জনপ্রিয় সরঞ্জাম (কন্টিনিউয়াস ডিপ্লয়মেন্ট)

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

কনস:

  • нужен хотя бы один агент;
  • нет консоли для отображения всех выполненных задач;
  • для выполнения каждой команды нужно создавать по одной задаче к конфигурации конвейера;
  • для установки плагина требуется переместить файл .jar в <go-server-location>/plugins/external и перезапустить сервер;
  • относительно небольшое сообщество.

উপসংহার হিসেবে

Это всего три инструмента, на самом деле их гораздо больше. Выбирать сложно, поэтому обязательно нужно обращать внимание на дополнительные аспекты.

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

Если безопасность важнее всего, стоит работать с локальным инструментом. Если же нет, то выбор SaaS-решения — хороший вариант.

И последнее: для того чтобы обеспечить действительно эффективный процесс непрерывного развертывания, нужно сформировать критерии, специфика которых даст возможность сузить круг выбора доступных инструментов.

Skillbox সুপারিশ করে:

উত্স: www.habr.com

একটি মন্তব্য জুড়ুন