Руководства

Что такое CI/CD? Непрерывная интеграция и доставка простыми словами

CI/CD — это способ выпуска программного обеспечения, при котором каждое изменение кода автоматически собирается, тестируется и — если проходит проверку — готовится к выпуску или выпускается. CI (непрерывная интеграция) означает, что изменения часто объединяются и каждый раз проверяются автоматическими тестами. CD (непрерывная доставка или развёртывание) означает, что прошедшие проверку изменения упаковываются и передаются пользователям с небольшим участием человека или без него.

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

Почему CI/CD важен, когда вы создаёте приложение с ИИ

ИИ-конструкторы вносят изменения в код быстро. Один промпт может затронуть десять файлов. Эта скорость отлична, пока изменение страницы оплаты незаметно не сломает страницу входа, и никто этого не заметит, пока пользователь не напишет вам письмо.

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

  • Собирается ли приложение без ошибок?
  • Проходят ли автоматические тесты?
  • Соответствует ли код правилам проекта (типы, форматирование, проверки безопасности)?

Если какая-либо проверка не проходит, изменение останавливается до того, как попадёт к пользователям. Чем быстрее меняется ваш код, тем ценнее проверка, которая не устаёт и не пропускает шаги.

Бытовая аналогия

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

  • Без CI/CD каждый пекарь неделю экспериментирует с рецептом по-своему, а в пятницу вечером все смешивают свои изменения и надеются, что хлеб поднимется. Когда не поднимается, никто не знает, чья правка виновата.
  • С CI каждое небольшое изменение рецепта сразу выпекается как пробная буханка и проверяется: вкус, вес, форма. Плохое изменение ловится в тот же день, и вы точно знаете, какое оно было.
  • С CD буханки, прошедшие проверку, сразу уходят в фургон доставки, упакованные и подписанные каждый раз одинаково, а не упаковываются вручную в пять утра.

Проверка не делает пекарей лучше. Она делает их ошибки дешёвыми.

Как работает конвейер CI/CD

Конвейер (pipeline) — это список шагов, которые сервис CI/CD автоматически выполняет, когда что-то происходит, обычно когда код отправляется в репозиторий вроде GitHub. Типичный конвейер выглядит так:

ШагЧто происходитЧто ловит
1. ЗапускКод отправлен или открыт pull request—
2. УстановкаЧистая машина скачивает код и его зависимостиОтсутствующие или сломанные пакеты
3. СборкаПриложение компилируется или упаковываетсяСинтаксические и типовые ошибки, сломанные импорты
4. ТестыЗапускаются автоматические тестыФункции, которые перестали работать
5. ПроверкиЛинтинг, форматирование, сканирование безопасностиПроблемы стиля, известные уязвимые пакеты, утёкшие ключи
6. Развёртывание на стейджингПриложение уходит на тестовую копию продакшенаПроблемы, которые проявляются только в реальном окружении
7. Развёртывание в продакшенПриложение выходит в эксплуатацию — автоматически или после одобрения—

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

Шаги описаны в файле конфигурации, который лежит рядом с кодом. В GitHub Actions, например, это YAML-файл в папке .github/workflows репозитория.

Непрерывная доставка и непрерывное развёртывание

«CD» неоднозначно, и люди используют его в обоих значениях:

Непрерывная доставкаНепрерывное развёртывание
Тесты запускаются автоматическиДаДа
Релиз упаковывается автоматическиДаДа
Выходит в продакшен автоматическиНет — человек нажимает «выпустить»Да — каждое прошедшее изменение выходит сразу
Подходит дляБольшинства небольших команд, приложений с платящими пользователямиКоманд с хорошим покрытием тестами и мониторингом

Непрерывное развёртывание работает хорошо только при качественных тестах. Если тесты не покрывают оплату, непрерывное развёртывание с удовольствием выпустит сломанную оплату.

Пример: приложение записи с конвейером

Допустим, у вас есть приложение записи в салон, и его код лежит в репозитории GitHub. Вы просите ИИ-конструктор: «Добавь скидку 10% для новых клиентов».

  1. Изменение отправляется в новую ветку, и открывается pull request.
  2. Запускается конвейер. Он устанавливает пакеты и собирает приложение — этап проходит.
  3. Он запускает тесты. Один тест, «постоянный клиент платит полную цену», падает: скидка применяется ко всем.
  4. В pull request появляется красный крестик. Изменение нельзя слить.
  5. Вы просите ИИ исправить. Он отправляет исправление; конвейер запускается снова, и всё проходит.
  6. Изменение сливается. Конвейер развёртывает его на стейджинг-окружении, где вы делаете тестовую запись.
  7. Вы одобряете, и оно развёртывается в продакшен.

Без конвейера шаг 3 произошёл бы с кошельками ваших клиентов.

Ключевые термины

ТерминЗначение
Конвейер (pipeline)Автоматическая последовательность шагов, которая выполняется для каждого изменения.
Сборка (build)Превращение исходного кода в то, что может работать.
Автоматический тестКод, который проверяет, что другой код делает то, что должен.
Pull request (PR)Предлагаемое изменение, которое проверяют другие (и конвейер) до слияния. См. что такое GitHub.
Ветка (branch)Отдельная линия изменений, чтобы незавершённая работа не влияла на основной код.
Стейджинг (staging)Закрытая копия вашего приложения, повторяющая продакшен, для проверки изменений до того, как их увидят пользователи.
Продакшен (production)Живое приложение, которым пользуются ваши клиенты.
Откат (rollback)Возврат к предыдущей рабочей версии, когда выпуск пошёл не так.
Зелёная / красная сборкаЗапуск конвейера, который прошёл / провалился.

Распространённые заблуждения

  • «CI/CD означает, что мое приложение протестировано». Конвейер запускает только те тесты, которые у вас есть. Если тестов нет, CI доказывает лишь то, что приложение собирается, — и ничего больше. Попросите ИИ написать тесты для самых важных сценариев.
  • «CI/CD нужен только крупным компаниям». Такие инструменты, как GitHub Actions, настраиваются коротким файлом конфигурации, и небольшие команды используют их постоянно. Усилия уходят на тесты, а не на инструменты.
  • «Автоматическое развёртывание означает, что никто ничего не проверяет». Хорошие конвейеры добавляют проверки, а не убирают их. Многие команды оставляют шаг ручного одобрения перед продакшеном.
  • «Если конвейер зелёный, приложение работает». Это значит, что автоматические проверки прошли. Изменение всё равно стоит попробовать самому — желательно в превью или на стейджинге.
  • «CI/CD заменяет резервные копии». Нет. Плохая миграция базы, которая проходит тесты, всё равно может испортить реальные данные. Храните резервные копии и способ откатиться.

Что спросить у вашего ИИ-конструктора

  • «Напиши автоматические тесты для регистрации, входа и оплаты и покажи, как их запустить».
  • «Настрой workflow GitHub Actions, который устанавливает зависимости, собирает приложение и запускает тесты на каждом pull request».
  • «Добавь в конвейер проверку типов и линтер и сделай так, чтобы он падал при ошибках».
  • «Объясни простыми словами, что делает каждый шаг конвейера».
  • «Что произойдёт, если развёртывание сломается на полпути? Как откатиться?»
  • «Проверь, что секреты не записаны жёстко в репозитории и не выводятся в логи конвейера».

Если ваше приложение использует API-ключи, они нужны и конвейеру — их храните как зашифрованные секреты в инструменте CI, но никогда в файле конфигурации. См. переменные окружения и секреты.

CI/CD и Mythex

Mythex не запускает за вас конвейер CI, но закрывает несколько похожих задач по-своему:

  • Контрольные точки. После каждого успешного хода агента Mythex сохраняет git-чекпоинт, и Вернуться к этой точке откатывает проект, если изменение пошло не так. См. Чат.
  • App Testing. Введите /test, и агент пройдёт по вашему живому превью, как пользователь, и сообщит о сломанных сценариях — полезно перед каждой публикацией. См. App Testing.
  • Публикация — осознанный шаг. Изменения сначала появляются в закрытом превью; публичное приложение обновляется только когда вы публикуете снова — это ближе к непрерывной доставке, чем к непрерывному развёртыванию.
  • Синхронизация с GitHub (Pro). Синхронизируйте проект с репозиторием GitHub, и вы сможете добавить свои workflow GitHub Actions, которые запускают тесты при каждой отправке. См. GitHub и экспорт.

Список того, что проверить вручную перед запуском, см. в статье как протестировать приложение перед запуском, а по работе с системой контроля версий — как использовать Git с приложением, созданным с ИИ.

Вопросы

Что означает CI/CD?

CI — это непрерывная интеграция: каждое изменение кода часто вливается в общую базу и автоматически собирается и тестируется. CD — это непрерывная доставка или непрерывное развёртывание: изменения, прошедшие тесты, автоматически готовятся к выпуску (доставка) или выпускаются пользователям без ручного шага (развёртывание).

В чём разница между непрерывной доставкой и непрерывным развёртыванием?

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

Нужен ли CI/CD для небольшого приложения, созданного с ИИ?

Не в первый день. Небольшое приложение с горсткой пользователей может обойтись тестированием в превью и публикацией вручную. CI/CD окупается, когда над кодом работают несколько человек, когда от приложения зависят реальные клиенты или когда вы постоянно ломаете то, что раньше работало.

Какие инструменты используются для CI/CD?

Распространённые варианты: GitHub Actions, GitLab CI/CD, CircleCI и Jenkins, а также встроенные конвейеры развёртывания хостинговых платформ. Все они выполняют одну базовую задачу: автоматически запускают список шагов при каждом изменении кода.

Mythex · Pricing · Создавайте что угодно с ИИ · Шаблоны сайтов и приложений · Сравнения Mythex · Глоссарий по созданию приложений с ИИ · Бесплатные инструменты для создания приложений с ИИ · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)