Написать нам в Telegram

Что такое CI/CD простыми словами и зачем он вашему проекту

Разработка
19 сентября 2026 г.
Фото Максим Козлов
Максим КозловРуководитель отдела разработки

CI/CD — это автоматический конвейер, который проводит каждое изменение кода по одному и тому же маршруту: собрать проект, проверить тестами и линтерами, выложить на тестовый сервер, а затем на боевой. Если простыми словами, CI/CD это когда сайт обновляет не человек руками по FTP или SSH, а скрипт, который каждый раз делает одно и то же и не забывает шаги.

Что такое CI/CD простыми словами: расшифровка

Аббревиатура состоит из двух частей, и у второй два значения — отсюда половина путаницы.

  • CI — Continuous Integration, непрерывная интеграция. Разработчики часто вливают изменения в общую ветку, и каждое вливание автоматически проверяется: сборка, тесты, статический анализ. Ошибка находится через минуты после коммита, а не через неделю на проде.
  • CD — Continuous Delivery, непрерывная доставка. Каждая проверенная версия автоматически упаковывается и готова к выкладке; на боевой сервер она уходит по кнопке.
  • CD — Continuous Deployment, непрерывное развёртывание. То же самое, но без кнопки: прошла все проверки — сама уехала в production.
Если коротко: CI отвечает на вопрос «не сломали ли мы что-то», CD — на вопрос «как быстро и безопасно довезти изменение до пользователя». CI/CD — не программа, а практика, которую реализуют конкретными инструментами: GitLab CI, GitHub Actions, Jenkins и другими.

Continuous Delivery и Continuous Deployment: в чём отличие

Разница — в последнем шаге. Большинству сайтов разумно начинать с Delivery: рутину делает автоматика, решение «выкатываем» — за человеком.

ПараметрContinuous DeliveryContinuous Deployment
Выкладка на productionПо кнопке после проверки на stageАвтоматически после прохождения тестов
Кто решает, когда релизЧеловек (тимлид, менеджер продукта)Пайплайн
Требования к тестамДостаточно базового покрытия и ручной проверки на stageВысокое покрытие автотестами, мониторинг, быстрый откат
Кому подходитКорпоративные сайты, магазины, CRM, большинство веб-проектовПродукты с сильной командой и частыми релизами (десятки в день)
Главный рискРелизы копятся, если кнопку жмут редкоОшибка, не пойманная тестами, сразу у пользователей

Как работает CI/CD-пайплайн: этапы от коммита до прода

Пайплайн (конвейер) — описанная в конфигурационном файле последовательность этапов. Типовой маршрут для веб-проекта:

  1. Коммит и push. Изменения в ветке или merge request (pull request) запускают пайплайн.
  2. Сборка. Ставятся зависимости (composer, npm), собирается фронтенд, при необходимости — Docker-образ.
  3. Тесты и линтеры. Юнит- и интеграционные тесты, проверка стиля кода, статический анализ (PHPStan, ESLint, TypeScript), поиск уязвимых зависимостей. Это «гейт»: красный результат блокирует слияние и выкладку.
  4. Артефакт. Результат сборки сохраняется как неизменяемый пакет — архив или Docker-образ с версией. Выкладывается именно он, а не «пересобранное на сервере».
  5. Деплой на stage. Тестовая копия сайта с тем же окружением, что и боевая: здесь изменения смотрят глазами.
  6. Деплой на production. По кнопке (Delivery) или автоматически (Deployment), часто с миграциями базы данных.
  7. Откат. Если после релиза что-то пошло не так, возвращается предыдущий артефакт — за минуту.

Задания выполняют раннеры (runner, agent) — машины или контейнеры, облачные от платформы или собственные на вашем сервере.

Что CI/CD даёт бизнесу, а не только программистам

  • Нет релизов «выкатили в пятницу вечером и упали». Сломанный код останавливается на тестах, а если проблема проскочила — откат занимает минуты.
  • Правки доезжают быстрее. Поправить баг в корзине или выкатить акцию — это десятки минут от готового кода до прода, а не «полдня на релиз».
  • Меньше ручных ошибок. Забыли залить один файл, перезаписали конфиг боевой базы тестовым, не очистили кеш — классика ручного деплоя, которая исчезает, когда шаги выполняет скрипт.
  • Процесс не зависит от одного человека. Инструкция по выкладке записана в репозитории, а не в голове фрилансера.
Заливка файлов на сервер по FTP — антипаттерн. Нет истории, нет отката, нет проверки, файлы могут записаться наполовину, а пароль FTP часто передаётся открытым текстом.

Инструменты CI/CD: GitLab CI, GitHub Actions, Jenkins и российские платформы

Выбор инструмента определяется тем, где хранится код: пайплайн живёт рядом с репозиторием.

ИнструментЧто этоКонфигНюансы для РФ в 2026
GitLab CI/CDВстроен в GitLab; есть реестр образов, окружения, кнопка отката.gitlab-ci.ymlСамый распространённый вариант — self-hosted GitLab на своём сервере; платные тарифы GitLab.com российской картой не оплатить
GitHub ActionsВстроен в GitHub; огромный каталог готовых actions.github/workflows/*.ymlБесплатный тариф работает, платные тарифы российской картой не оплатить; зафиксированы блокировки аккаунтов компаний под санкциями
JenkinsСамостоятельный open source сервер автоматизации с тысячами плагиновJenkinsfileСтавится на свой сервер, от вендоров не зависит, но требует администрирования
TeamCityCI-сервер от JetBrainsUI или Kotlin DSLJetBrains в 2022 году прекратила продажи в России, загрузка с российских IP блокируется — для новых проектов не рассматриваем
GitFlicРоссийская платформа для хранения кода со встроенным CI/CD, есть в реестре отечественного ПОgitflic-ci.yamlОблачная и серверная версии, подходит для импортозамещения
SourceCraft (Яндекс)Платформа разработки с репозиториями, CI/CD и ИИ-ассистентом, интеграция с Yandex Cloud.sourcecraft/ci.yamlЗапущена в 2025 году, есть тарифы Free и Pro с разными лимитами минут CI/CD

Если проект уже живёт в GitLab или GitHub и это не противоречит требованиям безопасности — переезжать ради CI/CD не нужно. Где важна независимость от зарубежных сервисов или реестр отечественного ПО, логичны self-hosted GitLab, GitFlic или SourceCraft. Собственный раннер на своём сервере — стандартная часть настройки CI/CD под проект: пайплайн не зависит от лимитов облачной платформы, а доступ к боевым серверам не выходит за периметр.

Не держите единственную копию кода только в зарубежном облаке. Регулярное зеркалирование репозитория на свой сервер или в российскую платформу — дешёвая страховка от внезапной блокировки аккаунта.

Пример .gitlab-ci.yml для Node.js-сайта

Минимальный пайплайн для сайта со статической сборкой (Vite, Astro): тесты, сборка, выкладка на stage автоматически из develop, на production — по кнопке из основной ветки. Каждая версия кладётся в свою папку, «текущая» переключается симлинком — это и есть простейший откат.

stages:
  - test
  - build
  - deploy

default:
  image: node:22

variables:
  npm_config_cache: "$CI_PROJECT_DIR/.npm"

cache:
  key:
    files:
      - package-lock.json
  paths:
    - .npm/

lint_and_test:
  stage: test
  script:
    - npm ci
    - npm run lint
    - npm test

build:
  stage: build
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/
    expire_in: 1 week

.deploy:
  stage: deploy
  image: alpine:3.20
  before_script:
    - apk add --no-cache openssh-client rsync
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh && echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
  script:
    - RELEASE="$DEPLOY_PATH/releases/$CI_COMMIT_SHORT_SHA"
    - ssh "$DEPLOY_USER@$DEPLOY_HOST" "mkdir -p $RELEASE"
    - rsync -az --delete dist/ "$DEPLOY_USER@$DEPLOY_HOST:$RELEASE/"
    - ssh "$DEPLOY_USER@$DEPLOY_HOST" "ln -sfn $RELEASE $DEPLOY_PATH/current"

deploy_staging:
  extends: .deploy
  environment: staging
  rules:
    - if: $CI_COMMIT_BRANCH == "develop"

deploy_production:
  extends: .deploy
  environment: production
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: manual

Что здесь важно:

  • Переменные SSH_PRIVATE_KEY, SSH_KNOWN_HOSTS, DEPLOY_HOST, DEPLOY_USER, DEPLOY_PATH задаются в настройках проекта (Settings → CI/CD → Variables) с областью действия по окружению — так staging и production получают разные серверы и ключи, а в коде нет ни одного пароля.
  • npm ci ставит зависимости строго по lock-файлу — сборка воспроизводима.
  • Откат: старые релизы остаются в releases/, поэтому достаточно вернуть симлинк current на предыдущую папку — по SSH или повторным запуском прошлого деплоя в разделе Environments GitLab (пока не истекли артефакты сборки, см. expire_in). Для Node-приложения с сервером после переключения добавляют перезапуск процесса (например, pm2 reload).

Для PHP-проекта на GitHub минимальный CI-этап выглядит так — проверка на каждый push в main и каждый pull request:

name: CI
on:
  push:
    branches: [main]
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
      - run: composer install --no-interaction --prefer-dist
      - run: vendor/bin/phpunit

CI/CD для Битрикс и WordPress: что не кладут в git

У CMS часть «кода» живёт в базе данных и загруженных файлах, а не в репозитории, — это надо учитывать.

1С-Битрикс

  • В git — папка /local/ (свои компоненты, шаблоны, модули) и собственный код. Ядро /bitrix/ обычно не версионируют: оно обновляется штатной системой обновлений и весит гигабайты.
  • /upload/ и база данных — вне git и вне пайплайна: пайплайн не должен их перезаписывать.
  • Изменения структуры (инфоблоки, свойства, почтовые шаблоны, агенты) оформляются миграциями, например модулем sprint.migration, и накатываются пайплайном на этапе деплоя.
  • .settings.php и dbconn.php с доступами к базе — на сервере, не в репозитории.

WordPress

  • В git — своя тема и свои плагины; сторонние плагины и ядро удобно подключать через Composer (подход Bedrock), чтобы версии были зафиксированы.
  • wp-content/uploads и база — вне git. wp-config.php с паролями — на сервере или собирается из переменных окружения.
  • Боль WordPress — настройки в таблице опций: то, что поменяли в админке на stage, само на прод не поедет. Критичные настройки фиксируют в коде или переносят скриптами WP-CLI.
Правило для любой CMS: пайплайн выкладывает код, но никогда не копирует базу и загрузки со stage на прод. Данные пользователей и заказы живут только на боевом сервере — их переносят в обратную сторону, с прода на stage, и обезличивают.

Секреты в CI/CD: где хранить пароли и ключи

Самая частая утечка паролей и токенов — не взлом, а файл .env, случайно закоммиченный в репозиторий, или пароль, напечатанный в логе пайплайна.

  • Храните секреты в защищённых переменных платформы: masked и protected variables в GitLab, Secrets в GitHub Actions, либо во внешнем хранилище (HashiCorp Vault, Lockbox в Yandex Cloud).
  • Разводите секреты по окружениям: ключ от production не должен быть доступен заданиям из feature-веток.
  • Для деплоя — отдельный SSH-ключ и отдельный пользователь на сервере с правами только на папку сайта, не root.
  • Если секрет хоть раз попал в git, удалить коммит мало — его нужно сменить.
  • После ухода разработчика или подрядчика меняйте ключи деплоя и токены. Подробнее о том, что делать, если доступы остались у одного человека, — в статье «Сайт перестал работать, а программиста нет».

Сколько стоит внедрить CI/CD и от чего зависит цена

Стоимость определяется состоянием проекта: есть ли git, тесты, stage-сервер, насколько запутано окружение. Ориентиры на 2026 год:

Объём работСтоимостьСрок
Базовый пайплайн: сборка, тесты, деплой в одно окружение20 000–30 000 ₽3–7 дней
CI/CD под ключ: Docker, реестр образов, staging и production, автодеплойот 60 000 ₽1–2 недели
Откаты, хранилище секретов, проверки безопасности в пайплайнеот 40 000 ₽ к базев составе проекта
Несколько окружений, матрица сборок, инфраструктура как кодот 180 000 ₽от 3 недель
Аудит и починка существующего пайплайнаот 25 000 ₽2–5 дней

Если пайплайн настраивается сразу в составе разработки сайта, базовый вариант обходится в 10 000 ₽. Итог зависит от стека, числа окружений и объёма подготовки. Точный состав и смету на настройку CI/CD имеет смысл считать после аудита репозитория. Если параллельно нужно подготовить сам сервер — пользователи, веб-сервер, Docker, мониторинг, — это отдельный блок работ по настройке сервера и DevOps; для небольшого сайта обычно хватает VPS, на виртуальном хостинге без SSH полноценный CI/CD не построить.

Типичные ошибки при внедрении CI/CD

  • Автоматизировать хаос. Если на проде правят файлы руками «по горячему», пайплайн при следующей выкладке молча затрёт эти правки. Сначала — единый источник правды в git, потом автоматика.
  • Сразу на прод без stage. Continuous Deployment без тестов и тестового окружения — это просто быстрый способ ронять сайт.
  • Тесты, которые можно пропустить. Флажок allow_failure на тестах или «временно отключили линтер» превращают гейт в декорацию.
  • Сборка на боевом сервере. git pull && npm install прямо на проде — это не CI/CD: версия зависимостей может отличаться от проверенной, а сайт недоступен, пока идёт сборка.
  • Нет отрепетированного отката. Кнопка отката, которую ни разу не нажимали, в день аварии не сработает. Проверьте её на stage заранее.
  • Чёрный ящик после подрядчика. Пайплайн без документации и доступа у заказчика — такой же риск, как его отсутствие.

Если код проекта настолько запутан, что его не удаётся покрыть даже базовыми тестами, начинать приходится с наведения порядка — об этом в статье про рефакторинг кода.

Чек-лист: готов ли проект к CI/CD

  • Весь код, кроме ядра CMS, загрузок и секретов, лежит в git, а на сервере никто не правит файлы вручную
  • Репозиторий и все доступы к нему оформлены на компанию, а не на личный аккаунт разработчика
  • Есть сервер с SSH-доступом (VPS или облако), а не только FTP на виртуальном хостинге
  • Есть отдельный stage-сервер или хотя бы отдельная копия сайта для проверки
  • Проект собирается одной командой, зависимости зафиксированы lock-файлом
  • Есть хотя бы минимальные тесты или линтер, которые можно поставить гейтом
  • Пароли и ключи вынесены из кода в переменные окружения
  • Изменения структуры базы оформляются миграциями, а не кликами в админке
  • Понятно, кто нажимает кнопку релиза на production и как выполнить откат

CI/CD — способ сделать выкладку сайта скучной и предсказуемой. Начинать стоит с простого: git как единственный источник кода, проверки на каждый коммит, stage и деплой на прод по кнопке с понятным откатом. Continuous Deployment, Docker-реестры и инфраструктуру как код добавляют потом.

Частые вопросы
CI — Continuous Integration, непрерывная интеграция: автоматическая сборка и проверка кода при каждом изменении. CD — Continuous Delivery (непрерывная доставка, выкладка по кнопке) или Continuous Deployment (непрерывное развёртывание, выкладка автоматически). Вместе это конвейер от коммита до работающего сайта.
Если сайт меняют раз в полгода, полноценный конвейер избыточен. Но как только правки идут хотя бы раз в месяц или над проектом работают двое и больше разработчиков, базовый пайплайн с деплоем по кнопке и откатом окупается быстро: он убирает ручные ошибки и зависимость от одного человека.
На виртуальном хостинге с доступом только по FTP полноценный CI/CD не построить: нет SSH, нельзя атомарно переключать версии и делать откат. Минимальное требование — VPS или облачный сервер с SSH-доступом.
DevOps — общий подход, при котором разработка и эксплуатация работают как одна команда, с автоматизацией, мониторингом и инфраструктурой как кодом. CI/CD — одна из ключевых практик внутри DevOps, отвечающая за автоматическую сборку, проверку и выкладку кода.
Бесплатные тарифы технически доступны, но платные российской картой не оплатить, а аккаунты компаний под санкциями блокировались. Для бизнеса надёжнее self-hosted GitLab на своём сервере или российские платформы GitFlic и SourceCraft, а также регулярное зеркалирование репозитория.
Проверка коммита занимает минуты, а не десятки минут; сломанный код не проходит на прод; выкладка и откат делаются кнопкой; в репозитории нет паролей; конфигурация задокументирована, и её может поддерживать любой разработчик, а не только автор.
Настройка ci cd
Поможем с этой задачей под ключ — от идеи до результата. Рассчитаем стоимость и сроки под вашу задачу.
Читать подробнее
Услуги по теме
Настраиваем CI/CD-пайплайны на GitLab CI и GitHub Actions: автосборка, тесты, автодеплой на staging и production, откат к рабочей версии в один клик. Релизы становятся предсказуемыми, а выкатка по SSH руками уходит в прошлое. Под ключ, на фикс-смете, от студии с 2008 года.
Настраиваем Linux-серверы, поднимаем CI/CD, контейнеры, мониторинг и бэкапы — чтобы инфраструктура работала 24/7, релизы выкатывались в один клик, а вы спали спокойно. DevOps под ключ от студии с 2008 года.
Берём ваш сайт на абонентское обслуживание: мониторинг доступности, бэкапы, обновления и безопасность, доработки по часам и реакция на инциденты по SLA. Студия с 2008 года — поддерживаем сайты на любой CMS и самописном коде.
Технический аудит веб-сайта изнутри: код, архитектура, зависимости, база данных, сервер, деплой и доступы. Не SEO-чеклист, а инженерная экспертиза — за 5–15 рабочих дней вы узнаёте, в каком состоянии проект, сколько стоит техдолг и что выгоднее: дорабатывать или переписать.