О чем этот материал
Что такое CI и CD, как выглядит типичный pipeline и какие инструменты используют команды.
Это адаптированная версия учебной презентации: слайды разобраны в формате обычной статьи, чтобы материал было легче читать с телефона и возвращаться к нужным блокам позже.
Что внутри
Ниже краткий план материала. По нему удобно понять, в каком порядке разбирать тему.
- Что такое CI/CD
- Зачем?
- Инструменты
- Плюсы и минусы
AC/DC CI/CD continuous integration and continuous delivery/deployment
CI/CD
CI (Continuous Integration):
разработчиков в общий проект.
CD (Continuous Delivery/Deployment):
(тестовую, продакшн).
- Автоматизация интеграции изменений кода от нескольких
- Постоянная проверка и сборка кода при каждом изменении.
- Автоматизация доставки проверенного кода в различные среды
- Обеспечение готовности кода к развертыванию в любое время.
Зачем
рутинных задач.
тесты.
изменений.
приложения.
- Ускорение разработки благодаря автоматизации
- Быстрое обнаружение ошибок через автоматические
- Упрощение командной работы при объединении
- Повышение качества кода и надежности
А если без этого
поздних этапах.
- Ручная сборка и развертывание занимают много времени.
- Конфликты при слиянии кода от разных разработчиков.
- Задержки в обнаружении ошибок, которые выявляются на
- Трудности с поддержанием стабильной версии продукта.
Как работает CI
версий (например, Git).
проверки кода.
тестирования.
- Коммит изменений в систему контроля
- Автоматический запуск сборки проекта.~
- Запуск автоматических тестов для
- Получение отчета о результате сборки и
Как работает CD
доставке.
или продакшн-среду.
стабильности.
- После успешной интеграции код готов к
- Автоматическое развертывание в тестовую
- Мониторинг приложения для обеспечения
Преимущества CI/CD
кода.
- Экономия времени на ручных процессах
- Своевременная обратная связь о качестве
- Снижение числа ошибок в продакшене.
- Более частые и стабильные релизы.
Популярные инструменты CI/CD
Jenkins
- Описание:
- Открытый и бесплатный инструмент для автоматизации.
- Широко используется и имеет большое сообщество.
- Особенности:
- Множество плагинов для расширения функциональности.
- Гибкая настройка под любые проекты.
GitLab CI/CD
- Описание:
- Интегрированная система CI/CD в GitLab.
- Позволяет управлять кодом и процессами в одном месте.
- Особенности:
- Простая конфигурация через файл .gitlab-ci.yml.
- Хорошо подходит для проектов, размещенных на GitLab.
GitHub Actions
Описание:
развертывания.
Особенности:
Шаги:
- Инструмент автоматизации от GitHub.
- Позволяет создавать workflows для сборки, тестирования и
- Глубокая интеграция с репозиториями GitHub.
- Большое количество готовых действий от сообщества.
- Создать каталог .github/
- Добавить файл ci.yml с
- Коммитить и пушить изменения
Контейнеризация
Технология, которая позволяет упаковать приложение и все его зависимости в изолированный контейнер.
Контейнеры обеспечивают:
машинами.
- Повторяемость среды для разработки и продакшена.
- Легкую переносимость между разными серверами и облаками.
- Меньшую потребность в ресурсах по сравнению с виртуальными
Docker
— наиболее популярный инструмент для контейнеризации.
Особенности:
развертывания контейнеров.
- Простота создания контейнеров и управления ими.
- Широкое сообщество и множество готовых контейнеров.
- Интеграция с CI/CD инструментами для автоматического создания и
Kubernetes (K8s)
— это система для управления контейнеризированными приложениями.
Основные функции K8s:
перезапускает).
- Автоматическое развертывание и масштабирование контейнеров.
- Управление состоянием приложения (если контейнер падает, K8s его
- Балансировка нагрузки и распределение ресурсов.
ArgoCD это инструмент для автоматизированного развертывания приложений на Kubernetes через GitOps.
GitOps: Подход, при котором конфигурации приложения и инфраструктуры хранятся в репозиториях Git, а изменения автоматически применяются на кластере.
Преимущества ArgoCD:
- Простота управления состоянием кластера через Git.
- Мгновенная обратная связь и мониторинг состояния развертывания.
- Полная автоматизация CI/CD на базе Kubernetes.
ArgoCD
Заключение
на рутинных задачах.
внесении изменений
- CI/CD — ключ к эффективной и современной разработке.
- Автоматизация помогает сосредоточиться на написании кода, а не
- Автоматизация помогает не перепроверять все приложение при
- Освоение CI/CD повышает вашу ценность как разработчика.
- Для вашего первого Pet проекта вам скорее всего не надо :)
- Но знать все надо, потому что на собеседованиях точно спросят