CI/CD для статического сайта не обязан быть сложным. Даже небольшой проект выигрывает от повторяемой сборки: каждый коммит проходит проверку, создаёт одинаковый артефакт и публикуется только после успешных шагов. Главное — разделить код, сборку, публикацию и возможность отката.
Опишите путь от коммита до сайта
Сначала зафиксируйте, где лежит исходный код, какой командой выполняется сборка и в какую папку попадает готовый сайт. Отдельно укажите ветку для публикации и правила работы с запросами на слияние.
Схема должна быть понятна человеку, который не создавал проект. Запишите версии Node.js или другого runtime, менеджер пакетов и обязательные переменные окружения, не размещая чувствительные значения в репозитории.
Зафиксируйте окружение сборки
Одинаковая версия runtime и lock-файл уменьшают расхождения между локальной машиной и CI. Установку зависимостей выполняйте в предсказуемом режиме, а кэш используйте только после того, как базовый запуск работает без него.
Проверьте, что сборка не зависит от случайных файлов в рабочей папке. Все шаблоны, изображения и конфигурация должны быть частью проекта или явно подключаться на этапе конвейера.
Добавьте быстрые проверки
До публикации полезно запускать линтер, проверку ссылок, тест генерации страниц и сборку. Быстрые проверки дают понятную ошибку раньше, чем пользователь увидит пустой экран или битый путь к ресурсу.
Разделяйте обязательные и информационные шаги. Если предупреждение не блокирует выпуск, выводите его отдельно, иначе команда быстро начнёт игнорировать весь журнал.
Соберите и сохраните артефакт
Результат сборки складывают в отдельную папку и проверяют наличие главной страницы, sitemap, robots.txt и статических ресурсов. Полезно сохранять артефакт для конкретного запуска, чтобы повторить публикацию без нового коммита.
Перед отправкой на сервер проверьте относительные пути и базовый URL. Ошибка, незаметная на локальном сервере, часто проявляется после размещения в подкаталоге или на CDN.
Продумайте публикацию и откат
Публикационный шаг должен быть отдельным от сборки и запускаться только после зелёных проверок. Для продакшена ограничьте ветки и добавьте ручное подтверждение, если проект критичен для бизнеса.
Откат — это возврат предыдущего артефакта или версии, а не срочное редактирование файлов на сервере. Проверьте процедуру на тестовой копии и запишите, кто и в какой последовательности её выполняет.

Минимальный конвейер CI/CD
Начните с короткой последовательности, затем расширяйте её по мере необходимости.
- Зафиксировать ветку и триггер запуска.
- Установить версию runtime и зависимости по lock-файлу.
- Запустить линтер и проверку ссылок.
- Собрать статические файлы в чистой директории.
- Проверить обязательные файлы и размер артефакта.
- Опубликовать только успешную сборку.
- Сохранить предыдущую версию для отката.
Шаг и контроль
Каждый этап должен иметь понятный результат.
| Шаг | Проверка | Результат |
|---|---|---|
| Зависимости | Версия и lock-файл | Повторяемая установка |
| Тесты | Команда завершилась без ошибок | Зелёный статус |
| Сборка | Есть index и ресурсы | Готовый артефакт |
| Публикация | URL отвечает 200 | Новая версия доступна |
| Откат | Предыдущий пакет сохранён | Быстрое восстановление |
Как принять выпуск
Откройте главную и несколько внутренних страниц, проверьте стили, изображения, формы и переходы. Сравните размер артефакта с предыдущим запуском: резкое изменение часто указывает на пропавший ресурс или лишний файл.
Посмотрите журнал выполнения и отметьте номер запуска. Если сайт публикуется через CDN, дождитесь обновления кэша и проверьте страницу из другой сети.

Частые ошибки и диагностика
Ошибка — собирать сайт из незакоммиченных файлов, хранить значения окружения в коде и публиковать при красном статусе. Не смешивайте ручные правки на сервере с автоматическим конвейером.
При сбое сравните версии runtime, lock-файл и список входных файлов. Если сборка зелёная, а сайт сломан, проверьте пути, MIME-типы, кэш и правила сервера. Лог конкретного шага полезнее общего сообщения «не работает».
Полезные материалы
Для подготовки окружения пригодится материал о локальном сервере, а для работы с проектом — статья о Git для начинающих.
Хороший CI/CD для статического сайта даёт повторяемую сборку, прозрачные проверки и быстрый откат. Начните с короткого конвейера и расширяйте его только там, где это снижает риск. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник. В рабочем журнале оставьте дату проверки, исходные условия и следующий шаг. Такой протокол помогает повторить процедуру после обновления, смены сезона или изменения требований. Если материал передаётся другому специалисту, укажите ограничения рекомендации и ссылку на первоисточник.