CI/CD
Что такое CI/CD
CI/CD — это практики автоматизации сборки, тестирования и доставки кода. Они сокращают время от изменения в репозитории до работающей версии в продакшене и снижают риск ошибок.
Аббревиатура складывается из трёх понятий:
- CI (Continuous Integration). Код часто сливается в общую ветку, каждая интеграция автоматически собирается и проверяется тестами.
- CD (Continuous Delivery). Код всегда готов к выкладке, но сам шаг развёртывания выполняется вручную.
- CD (Continuous Deployment). Каждое успешное изменение автоматически попадает в продакшен без ручного шага.
Этапы пайплайна
Типовой пайплайн состоит из последовательных стадий:
| Стадия | Что происходит |
|---|---|
build | Сборка приложения и зависимостей |
test | Юнит- и интеграционные тесты |
package | Упаковка артефакта (образ, архив) |
deploy | Выкладка в окружение (staging/prod) |
verify | Проверка после деплоя |
Пример пайплайна
Упрощённый конвейер, который собирает образ и выкладывает его:
stages:
- build
- test
- deploy
build:
stage: build
script:
- docker build -t app:$CI_COMMIT_SHA .
test:
stage: test
script:
- docker run --rm app:$CI_COMMIT_SHA npm test
deploy:
stage: deploy
script:
- docker push registry.example.com/app:$CI_COMMIT_SHA
only:
- main
Инструменты
Системы CI/CD и смежные инструменты:
- CI-системы: GitLab CI, GitHub Actions, Jenkins.
- Артефакты: реестры образов (Docker Registry, Harbor) и пакетные репозитории.
- Контроль версий: Git как основа любого пайплайна.
Полезные мелочи
- Держите пайплайн быстрым: чем дольше обратная связь, тем реже коммиты.
- Артефакт должен собираться один раз и проходить все окружения без пересборки.
- Секреты храните в хранилище секретов, а не в коде.