Continuous Integration (CI) и Continuous Deployment/Delivery (CD) — это процессы, которые автоматизируют сборку, тестирование и развёртывание приложений. Эти подходы ускоряют разработку, повышают её надёжность и минимизируют человеческие ошибки.
1. Что такое CI/CD?
Continuous Integration (CI)
CI обеспечивает автоматическое тестирование и интеграцию изменений кода. Каждый коммит проверяется, чтобы избежать проблем при объединении изменений.Continuous Deployment/Delivery (CD)
- **Continuous Delivery**: Автоматизация сборки и подготовки к развертыванию, но с ручным одобрением перед релизом. - **Continuous Deployment**: Полная автоматизация процесса, включая развертывание в продакшен.2. Инструменты для CI/CD
Популярные CI/CD платформы
1. **Jenkins**: Самостоятельно настраиваемая платформа. 2. **GitHub Actions**: Встроенные CI/CD решения для репозиториев GitHub. 3. **GitLab CI/CD**: Интеграция с репозиториями GitLab. 4. **CircleCI**: Инструмент с удобным интерфейсом и гибкостью. 5. **Travis CI**: Простое решение для open-source проектов.3. Настройка CI/CD пайплайна
Шаги настройки CI/CD
-
Инициализация проекта:
- Подготовьте проект с конфигурацией для сборки и тестирования.
-
Создание конфигурационного файла:
- В большинстве платформ используется YAML-формат. Пример для GitHub Actions:
yaml
name: CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Build application
run: npm run build
-
Автоматизация тестов:
- Интегрируйте юнит-тесты, интеграционные и E2E тесты в пайплайн.
-
Сборка проекта:
- Добавьте шаг сборки для подготовки артефактов.
-
Деплой:
- Настройте автоматическое развёртывание на staging или production.
Пример для деплоя с использованием Netlify
```yaml - name: Deploy to Netlify uses: nwtgck/actions-netlify@v2 with: publish-dir: ./build production-branch: main netlify-auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }} netlify-site-id: ${{ secrets.NETLIFY_SITE_ID }} ```4. Автоматизация тестирования
Типы тестов в CI/CD
- **Unit Tests**: Проверяют отдельные модули. - **Integration Tests**: Проверяют взаимодействие компонентов. - **End-to-End Tests**: Тестируют приложение с точки зрения пользователя.Настройка тестов в CI/CD
Пример с использованием Jest: ```yaml - name: Run Jest tests run: npm test ```5. Безопасность и управление секретами
Использование секретов
- Храните ключи API, токены и другие чувствительные данные в системах управления секретами. - В GitHub Actions это можно сделать через `Secrets`.Пример использования:
yaml
- name: Use API Token
env:
API_TOKEN: ${{ secrets.API_TOKEN }}
run: curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com
6. Преимущества CI/CD
- Быстрое обнаружение ошибок: Автоматическое тестирование выявляет проблемы на ранних стадиях.
- Ускорение разработки: Меньше времени тратится на ручные проверки.
- Масштабируемость: Процессы легко адаптируются к изменениям команды или проекта.
- Надёжность: Автоматизация снижает вероятность человеческих ошибок.
Итоговые вопросы для подготовки
- Чем отличается Continuous Integration от Continuous Deployment?
- Какие платформы используются для настройки CI/CD?
- Как подключить автоматическое тестирование в CI/CD пайплайн?
- Как использовать секреты в GitHub Actions?
- Какие преимущества CI/CD даёт вашей команде?
Совет: Настройте простой CI/CD пайплайн для вашего текущего проекта, чтобы закрепить знания на практике.