Статья опубликована в рамках: LXXIV Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 11 февраля 2019 г.)
Наука: Технические науки
Секция: Технологии
Скачать книгу(-и): Сборник статей конференции
ИССЛЕДОВАНИЕ СОВРЕМЕННЫХ CI/CD ИНСТРУМЕНТОВ И ВНЕДРЕНИЕ ИХ В КРУПНЫЕ WEB-ПРОЕКТЫ НА ПРИМЕРЕ JENKINS
Введение
В настоящее время CI/CD (Continuous Integration, Continuous Delivery) занимают неотъемлемую часть в IT компаниях. Набор инструментов CI/CD позволяет ускорить процесс разработки и снижает трудозатраты команды путем автоматизации. Continuous Integration(непрерывная интеграция) позволяет автоматизировать сборки проекта для быстрого выявления проблем. Тем самым предоставляя актуальную и готовую к тестам версию. Continuous Delivery (непрерывная доставка) реализует доставку обновлений для конечного пользователя. При частом использовании данной технологии можно легко поддерживать актуальную версию и проще отслеживать ошибки благодаря тому, что объем изменений небольшой.
Актуальной проблемой для исследования является возможность объединения функционала разнообразных платных и бесплатных инструментов CI/CD в одну систему.
Получение подобной системы предоставит возможность использования универсального сборщика кода.
Постановка задачи
Предметом разработки является скрипты для Jenkins.
Целью работы является исследование современных CI/CD инструментов и внедрение в крупные web-проекты на примере Jenkins, с обязательным условием использование системы Windows.
Поставлены следующие задачи:
- обзор аналогичных методов и продуктов;
- реализация в web-проекте;
- тестирование в реальных условиях;
- разработка итогового решения.
Сравнение инструментов CI/CD
Jenkins
Инструмент CI с открытым исходным кодом, написанный на Java и выпущенный под лицензией MIT. Первоначально являлся частью проекта Hudson, принадлежавшего компании Oracle. Впервые был выпущен 2 февраля 2011 года.
Jenkins представляет из себя достаточно гибкую систему автоматизации задач, связанных с программным обеспечением. Почти весь функционал реализован с помощью плагинов. Хоть это обеспечивает большую гибкость, но в то же время может и являться большим минусом из-за конфликтов с определёнными версиями или остановкой поддержки плагина.
Jenkins pipeline(трубопровод) доступен в виде плагина с 2016 года. Использует язык Groovy, хранимый в удаленном репозитории или же в локальных файлах Jenkins. Основной минус Jenkins заключается в том, что возможность определять groovy-скрипты вне репозитория и использование определенных плагинов для реализации нужного функционала, затрудняют внедрение на других системах Jenkins.
GitLab CI
Инструмент CI, встроенный в GitLab, написанный на на Ruby and Go и выпущены под лицензией MIT. Изначально был выпущен как самостоятельный проект. В дальнейшем интегрирован в основное программное обеспечение GitLab в сентябре 2015 года.
Процесс CI/CD в GitLab CI определяется отдельным файлом в самом хранилище кода с использованием синтаксиса конфигурации YAML. Для выполнения задач используется изолированные виртуальные машины, называемые «GitLab CI runners». Они являются кроссплатформенными.
Главный минус GitLab CI заключается в том, что он привязан к GitLab, что не позволяет использовать другие репозитории. Плюсом является то, что для настройки среды CI/CD не требуется установка и изучение дополнительного инструментария. Нужно всего лишь включить несколько параметров в веб-интерфейсе, зарегистрировать «GitLab CI runner» и добавить файл с синтаксисом конфигурации YAML в репозиторий.
Buildbot
Инструмент CI, написанный на Python и выпускаемый под лицензией GPL. Выпущен в 2003 году в качестве альтернативы проекту Tinderbox в Mozilla. Первоначально являлся инструментом автоматизации тестирования сборки.
Основной минус и одновременно плюс в том, что конфигурация Buildbot полностью написана на Python, что значительно сложнее, чем в других системах, но в то же время это дает больше возможностей для разработки идеального рабочего процесса.
Drone
Современный инструмент CI/CD, основанный на pipeline, написан на Go и выпускаемый под лицензией Apache. Весь рабочий процесс основан на Docker контейнерах. Имеет встроенную поддержку для настройки сертификатов SSL с Let's Encrypt.
Как и в GitLab CI, для конфигурации задач используется синтаксис YAML в репозитории.
Как и в Jenkins, присутствует система плагинов, но представлена она в виде специальных контейнеров Docker, в которых предварительно сконфигурированы задачи для рабочего процесса. Это является несравненным плюсом. Но Docker-контейнеры не всегда удобно использовать на Windows системах.
Заключение
В ходе краткого сравнения, проведенного в данной статье, получено представление об итоговом инструменте: это полностью функционирующая система Continuous Integration, основанная только на открытом программном обеспечении, готовая к моментальной миграции в другие web-проекты и позволяющая множеству разработчиков без создания критических ситуаций доставлять свой код на web-сервер.
Список литературы:
- GitLab Continuous Integration (GitLab CI/CD) [Электронный ресурс] // Gitlab. – Режим доступа: https://docs.gitlab.com/ce/ci/ – Заглавие с экрана. – (Дата обращения: 02.12.2018).
- Jenkins Documentation [Электронный ресурс] // Jenkins. – Режим доступа: https://jenkins.io/doc/ – Заглавие с экрана. – (Дата обращения: 02.12.2018).
- Drone Documentation [Электронный ресурс] // Drone. – Режим доступа: https://docs.drone.io/ – Заглавие с экрана. – (Дата обращения: 02.12.2018).
- Buildbot Documentation [Электронный ресурс] // Buildbot. – Режим доступа: http://docs.buildbot.net/current/index.html – Заглавие с экрана. – (Дата обращения: 02.12.2018).
- Выстраиваем процесс разработки и CI pipeline, или как разработчику стать DevOps для QA [Электронный ресурс] // Хабрахабр. – Режим доступа: https://habr.com/post/330366/ – Заглавие с экрана. – (Дата обращения: 02.12.2018).
- Феншуйная автоматизация CI & CD с помощью Jenkins и Jira [Электронный ресурс] // Хабрахабр. – Режим доступа: https://habr.com/company/yamoney/blog/328092/ – Заглавие с экрана. – (Дата обращения: 02.12.2018).
Оставить комментарий