Phone icon Связаться с нами

DevOps и облака

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

CI/CD — это автоматический конвейер, через который проходит каждое изменение в коде: сборка, запуск тестов и доставка новой версии на серверы. Разработчик отправляет код в репозиторий, а всё остальное происходит без ручной работы.

Цель — находить ошибки как можно раньше и выпускать изменения без стресса. Ошибка, которую конвейер нашёл через пять минут после коммита, стоит гораздо дешевле, чем та же ошибка, которую через неделю обнаружил пользователь.

Типичный пайплайн: получить код, собрать проект, запустить тесты, проверить качество и безопасность, собрать контейнер, развернуть в тестовой среде и после проверки выпустить в продакшен. Настраивают это в GitHub Actions, GitLab CI, Jenkins и похожих системах.

Где применяется

Конвейер строят вокруг репозитория: после каждого изменения запускаются линтеры, тесты и сборка, а после слияния в основную ветку новая версия попадает на тестовый стенд или в продакшен. Инструмент обычно выбирают по тому, где хранится код: GitHub Actions, GitLab CI, Jenkins, Azure DevOps.

Это касается не только DevOps-инженера. QA-автоматизатор добавляет в конвейер свои тесты, разработчик видит результаты проверок прямо в запросе на слияние, а тимлид устанавливает правило: без успешной сборки изменения не попадают в основную ветку. Поэтому знание CI/CD требуют почти в каждой технической вакансии.

Пример

Разработчик отправляет исправление в репозиторий и уходит на обед. Пока его нет, конвейер собирает проект, запускает несколько сотен тестов, создаёт образ контейнера и разворачивает его на тестовом сервере. Когда разработчик возвращается, в чате уже есть ссылка на готовую версию.

name: build
on:
  push:
    branches: [main]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test
Конвейер GitHub Actions: после каждого пуша проект собирается и проходит тесты.

CI и CD — это разные вещи

CI (Continuous Integration, непрерывная интеграция) — код всех разработчиков регулярно объединяется в общую ветку, и каждое изменение автоматически собирается и тестируется. CD означает либо continuous delivery (версия всегда готова к выпуску, но запускает его человек), либо continuous deployment (выпуск происходит автоматически). CI отвечает за качество кода, CD — за его доставку.

Частые вопросы

Чем CI отличается от CD?

CI — это автоматическая сборка и проверка тестами каждого изменения. CD — доставка или развёртывание готовой версии на тестовый стенд или в продакшен. CI отвечает на вопрос «работает ли код?», а CD — «дошла ли новая версия до пользователей?».

Нужен ли CI/CD небольшой команде?

Да, и он быстро окупается. Даже конвейер из двух шагов — запуск тестов и сборка — экономит время и убирает проблемы вроде «а у меня на компьютере всё работало». Настроить простой пайплайн можно за несколько часов.

Какой инструмент CI/CD выбрать?

Проще всего — тот, что встроен в сервис, где хранится код: GitHub Actions для GitHub, GitLab CI для GitLab. Jenkins выбирают компании со сложными процессами, которым нужно держать всё на собственных серверах. Принципы везде одинаковые, отличается только синтаксис.

Что делать, если сборка часто падает?

Сначала найти причину: нестабильные тесты, зависимость от внешних сервисов, различия между средами. Конвейер, который постоянно падает и который все привыкли игнорировать, вредит больше, чем его отсутствие: команда перестаёт доверять результатам и выпускает изменения в обход процесса.

Обучение DevOps в OWU

Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс