Что такое Continuous Integration (CI)?

«Что такое Continuous Integration (CI)?» — вопрос из категории CI/CD и DevOps, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Continuous Integration (CI, Непрерывная интеграция) — это практика разработки, при которой разработчики часто (несколько раз в день) сливают свои изменения кода в общую основную ветку (main/master). Каждое такое слияние автоматически проверяется с помощью сборки и набора тестов для немедленного выявления ошибок интеграции.

Основные цели и преимущества:

  • Раннее обнаружение ошибок: Конфликты и баги выявляются сразу после коммита, а не через недели.
  • Снижение рисков интеграции: Частые небольшие слияния проще, чем одно большое в конце спринта.
  • Повышение качества кода: Автоматические проверки (линтеры, тесты) становятся обязательным этапом.
  • Ускорение обратной связи: Разработчик быстро узнает, если его изменения сломали сборку.

Ключевые элементы CI-процесса:

  1. Система контроля версий (VCS): Git (GitHub, GitLab, Bitbucket).
  2. CI-сервер/инструмент: Запускает пайплайн (GitHub Actions, GitLab CI/CD, Jenkins, CircleCI).
  3. Автоматизированный пайплайн: Скрипт, который выполняется при каждом пуше/пулл-реквесте.

Типичные шаги CI-пайплайна:

# Пример конфигурации .github/workflows/ci.yml для GitHub Actions
name: CI Pipeline
on: [push, pull_request]

jobs:
  build-and-test:
    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: '18'

      - name: Install dependencies
        run: npm ci

      - name: Run linter
        run: npm run lint

      - name: Run unit tests
        run: npm test

      - name: Build project
        run: npm run build

CI является фундаментом для Continuous Delivery (CD) — автоматизации развертывания готового кода в среду.