Ответ
Continuous Delivery (CD) — это практика разработки, при которой любое изменение кода, прошедшее автоматизированные тесты в конвейере CI, может быть развернуто в production-среду быстро, безопасно и в любой момент одним действием (часто — нажатием кнопки). Ключевая цель — всегда иметь готовый к релизу артефакт.
Основные принципы и компоненты CD-пайплайна:
- Полная автоматизация сборки, тестирования и развертывания. После коммита в основную ветку запускается цепочка, не требующая ручного вмешательства до самого релиза.
- Деплой в production-like среды. Код автоматически разворачивается в staging/предпродакшн-среду, идентичную продакшену, для финального приемочного тестирования.
- Ручное утверждение релиза. Решение о развертывании в прод принимает человек (тимлид, менеджер). Это ключевое отличие от Continuous Deployment, где деплой в прод также полностью автоматизирован.
Пример этапов CD-пайплайна в GitLab CI:
stages:
- build
- test
- deploy:staging
- deploy:production # Триггерится вручную
build_job:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
deploy_to_staging:
stage: deploy:staging
script:
- kubectl set image deployment/myapp app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -n staging
environment:
name: staging
url: https://staging.myapp.com
# Этот джоб требует ручного запуска через UI GitLab
release_to_production:
stage: deploy:production
script:
- kubectl set image deployment/myapp app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -n production
environment:
name: production
url: https://myapp.com
when: manual # Критичный параметр для Delivery
Преимущества CD: Снижение рисков релиза (мелкие инкрементальные изменения), быстрое получение фидбека, возможность выпускать фичи по требованию бизнеса.