Концептуально CI/CD делится на два основных этапа:
-
Continuous Integration (CI):
- Commit (Фиксация изменений): Разработчики фиксируют изменения в общем репозитории кода (например, Git).
- Build (Сборка): Автоматически запускается сборка приложения из исходного кода.
- Test (Тестирование): Прогоняются автоматизированные тесты (юнит, интеграционные, статические анализаторы).
-
Continuous Delivery/Deployment (CD):
- Deploy to Staging (Развертывание на Stage): Успешно собранный и протестированный артефакт развертывается в промежуточной среде (Stage), имитирующей продакшен.
- Automated Acceptance Testing (Автоматическое приемочное тестирование): На Stage-среде выполняются автоматизированные приемочные тесты для проверки бизнес-логики.
- Manual Testing/Exploratory Testing (Ручное/Исследовательское тестирование): При необходимости проводится ручное тестирование на Stage.
- Deploy to Production (Развертывание в Production): При успешном прохождении всех предыдущих этапов артефакт развертывается в продакшен-среде. В случае Continuous Deployment этот этап полностью автоматизирован. В случае Continuous Delivery, может требоваться ручное подтверждение.
- Monitoring and Feedback (Мониторинг и Обратная связь): После развертывания ведется мониторинг работы приложения в продакшене для выявления проблем и сбора обратной связи.
Вот пример пайплайна в Jenkinsfile:
groovy