Ответ
CI/CD (Continuous Integration / Continuous Delivery/Deployment) — это набор практик и инструментов для автоматизации жизненного цикла ПО, ключевая часть DevOps.
- Continuous Integration (CI): Автоматическая сборка, тестирование (юнит, интеграционные) и проверка качества кода при каждом коммите в репозиторий. Цель — быстро обнаружить проблемы. Инструменты: Jenkins, GitLab CI, GitHub Actions.
- Continuous Delivery (CD): Автоматизация процесса релиза. После успешного CI артефакт автоматически подготавливается и может быть вручную развернут в production. Это гарантирует, что код всегда находится в готовом к деплою состоянии.
- Continuous Deployment: Расширение Delivery, где каждое успешное изменение автоматически разворачивается в production без ручного вмешательства.
Практический пример пайплайна GitLab CI для Docker-приложения:
# .gitlab-ci.yml
stages:
- test
- build
- deploy
test:
stage: test
image: golang:1.19
script:
- go test ./...
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
deploy_to_staging:
stage: deploy
image: bitnami/kubectl:latest
script:
- kubectl set image deployment/my-app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -n staging
only:
- main
Ключевые преимущества для DevOps: предсказуемость релизов, снижение ручного труда, быстрое исправление багов и откат изменений.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶