Ответ
CI/CD (Continuous Integration / Continuous Delivery или Deployment) — это набор практик и инструментов для автоматизации этапов разработки программного обеспечения с целью частой и надежной доставки изменений.
CI (Непрерывная интеграция):
- Цель: Раннее обнаружение ошибок за счет автоматической сборки и тестирования каждого изменения в коде.
- Практика: Разработчики часто сливают свои изменения в общую ветку (main/master). Каждое слияние запускает автоматизированный пайплайн.
- Пример этапов CI:
git push-> Запуск пайплайна (Jenkins, GitLab CI).- Сборка проекта (
mvn clean compile). - Запуск модульных и интеграционных тестов.
- Создание артефакта (например, 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
Преимущества: Ускорение обратной связи, снижение рисков при релизах, высвобождение времени разработчиков от рутинных операций.