Что такое CI/CD?

«Что такое CI/CD?» — вопрос из категории CI/CD, который задают на 43% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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: предсказуемость релизов, снижение ручного труда, быстрое исправление багов и откат изменений.

Видео-ответы