Что означает аббревиатура CI/CD?

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

Ответ

CI/CD (Continuous Integration / Continuous Delivery или Deployment) — это набор практик и инструментов для автоматизации этапов разработки программного обеспечения с целью частой и надежной доставки изменений.

CI (Непрерывная интеграция):

  • Цель: Раннее обнаружение ошибок за счет автоматической сборки и тестирования каждого изменения в коде.
  • Практика: Разработчики часто сливают свои изменения в общую ветку (main/master). Каждое слияние запускает автоматизированный пайплайн.
  • Пример этапов CI:
    1. git push -> Запуск пайплайна (Jenkins, GitLab CI).
    2. Сборка проекта (mvn clean compile).
    3. Запуск модульных и интеграционных тестов.
    4. Создание артефакта (например, JAR-файла).

CD (Непрерывная доставка/развертывание):

  • Continuous Delivery: Автоматическая подготовка артефакта к релизу в любое время. Развертывание в прод — ручной шаг.
  • Continuous Deployment: Полная автоматизация, где каждое успешное изменение автоматически развертывается в production.

Пример простого пайплайна в GitHub Actions (.github/workflows/ci-cd.yml):

name: CI/CD Pipeline
on: [push]
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
      - name: Build and Run Tests
        run: mvn clean verify
      - name: Deploy to Staging
        if: success() && github.ref == 'refs/heads/main'
        run: ./deploy-script.sh staging

Преимущества: Ускорение обратной связи, снижение рисков при релизах, высвобождение времени разработчиков от рутинных операций.