Набор принципов и система практик, которые позволяют командам разработчиков приложений более оперативно и гарантированно вносить изменения в код.
Непрерывная интеграция (CI) и непрерывная доставка (CD) воплощают в себе набор принципов и систему практик, которые позволяют командам разработчиков приложений более оперативно и гарантированно вносить изменения в код.
Эти принципы являются базовыми практиками Agile, поскольку они позволяет группам разработчиков сосредоточиться на соблюдении бизнес-требований, качестве кода и безопасности за счет автоматизации этапов развертывания.
Непрерывная интеграция (CI)
Непрерывная интеграция - это философия работы с программным кодом и набор практик, требующий от разработчиков вносить небольшие изменения и часто отправлять код в репозитории управления версиями. Поскольку для большинства современных приложений требуется разработка кода на разных платформах и инструментах, команде нужен механизм для интеграции и проверки его изменений.
Техническая цель CI - обеспечить согласованный и автоматизированный способ создания и тестирования приложений. При согласованности процесса интеграции команды с большей вероятностью будут чаще фиксировать изменения кода, что приводит к лучшей координации между ними и качеству итогового программного продукта. В непрерывной интеграции большое внимание уделяется автоматизации тестирования, чтобы убедиться, что новые изменения не навредят продукту и будут функционировать так, как требуется.
Непрерывная доставка (CD)
Непрерывная доставка - это продолжение процесса непрерывной интеграции. Она нужна для быстрого и устойчивого выпуска новых изменений продукта. Помимо автоматизации тестирования - в непрерывной доставке также автоматизирован процесс выпуска и развертывание приложения в любой момент по нажатию кнопки. После сборки, модульного и интеграционного тестирования в CI - непрерывная доставка автоматизирует выпуск этого проверенного участка кода в репозиторий.
Цель непрерывной доставки - иметь подготовленные релизы для развертывания в производственной среде. При непрерывной доставке каждый этап - от объединения изменений кода до доставки готовых к производству сборок - включает автоматизацию тестирования и автоматизацию выпуска кода. В конце этого процесса операционная группа может быстро и легко развернуть приложение в производственной среде.
Инструменты CI/CD
Инструменты CI/CD призваны помочь команде автоматизировать разработку, развертывание и тестирование. Некоторые инструменты обрабатывают функции интеграции (CI), некоторые управляют разработкой и развертыванием (CD), а другие специализируются на непрерывном тестировании или связанных функциях доставки.
- Одним из самых известных инструментов с открытым исходным кодом для CI/CD является сервер автоматизации Jenkins . Jenkins разработан для работы с чем угодно, от простого CI-сервера до полноценного CD-концентратора.
- Tekton Pipelines - это среда CI/CD для платформ Kubernetes, которая обеспечивает стандартный облачный интерфейс CI/CD с контейнерами.
Распространенными (базовыми) инструментами этапов CI/CD являются:
- Системы управления проектами - Trello, Jira, Asana
- Системы контроля версий - GitLab, Bitbucket, GitHub
- Автоматизация сборки - GitLab CI, TeamCity, вышеупомянутый Jenkins
- Доставка и тестирование - Deb, Capistrano, Rpm, Ansible, SE
- Мониторинг и логирование - Zabbix, Prometheus, GrayLog
Что вы получаете при реализации CI/CD
- Связные функции различных участников процесса и разделение ответственности
- Минимизация рисков и подстраховка каждого этапа
- Короткий цикл обратной связи, очень гибкая реакция на потребности рынка
- Единая среда сборки, тестирования, хранения версий и доставки кода в производство
- Высокая степень автоматизации, минимизация человеческого влияния
- Оптимизация затрат ресурсов на решение задач
- Оперативность ввода нового функционала продукта
- Повышение качества продукта за счет тестирования на каждом этапе
Команда EFSOL DevOps готова внедрить необходимые инструменты CI/CD для ваших проектов и взять их на поддержку.
Подробнее об аутсорсинге DevOps читайте здесь.
#разработка приложений #devops #разработчики #developer #cicd