Короткий ответ
Continuous Integration — практика частого слияния изменений в общую ветку с автоматической проверкой на каждый коммит/PR; Continuous Delivery/Deployment — автоматизация доставки проверенного кода до staging (Delivery) или прямо до production (Deployment) без ручных шагов.
Как это работает подробнее
при пуше или открытии PR CI-система запускает pipeline — набор стадий, которые выполняются в изолированном окружении по описанию из YAML-файла конфигурации.
Пример кода
config.yaml
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.12" }
- run: pip install -r requirements.txt
- run: ruff check .
- run: pytest --cov=appЧто использовать на практике
- Рекомендация. типичный пайплайн: установка зависимостей → линтинг/типизация → тесты с покрытием → сборка Docker-образа → публикация образа и автодеплой. Каждая стадия должна давать понятный отчёт об ошибке.
Подводные камни
- Риск. называть «непрерывным деплоем» процесс с обязательным ручным подтверждением (это Delivery, а не Deployment); не разделять быстрые и медленные проверки, из-за чего разработчики начинают игнорировать долгий пайплайн.