Ответ
CI/CD pipeline (конвейер непрерывной интеграции и доставки) — это автоматизированный процесс, который включает этапы сборки, тестирования и развертывания кода при каждом его изменении. Он реализуется с помощью инструментов вроде GitLab CI, Jenkins или GitHub Actions.
Основные этапы (stages):
- Build — компиляция кода, сборка артефактов.
- Test — запуск модульных, интеграционных и других тестов.
- Deploy — развертывание приложения в тестовую, staging или production-среду.
Пример базового .gitlab-ci.yml для Java-проекта:
# Определяем последовательность этапов
stages:
- build
- test
- deploy
# Кэшируем зависимости Maven для ускорения сборок
cache:
paths:
- .m2/repository
# Задание для сборки
build_job:
stage: build
image: maven:3.8-openjdk-17 # Используем конкретный Docker-образ
script:
- mvn clean compile
artifacts:
paths:
- target/ # Сохраняем результаты сборки для следующих этапов
# Задание для тестирования
test_job:
stage: test
image: maven:3.8-openjdk-17
script:
- mvn test
dependencies:
- build_job # Зависит от артефактов этапа build
# Задание для деплоя (пример для staging)
deploy_staging_job:
stage: deploy
image: alpine:latest
script:
- echo "Deploying to staging environment..."
- apk add --no-cache curl
- curl -X POST "$DEPLOY_HOOK_URL" # Вызов webhook для деплоя
only:
- main # Запускается только для коммитов в main ветку
environment:
name: staging
url: https://staging.example.com
Ключевые преимущества:
- Автоматизация — исключает ручные ошибки.
- Раннее обнаружение проблем — тесты запускаются сразу после коммита.
- Скорость и предсказуемость — процесс стандартизирован.
- Воспроизводимость — используется изолированное окружение (Docker).