Учебник веб-разработки
Разделы учебника
На этой странице

Исторический документ: результаты относятся к указанной в тексте дате.

История проекта

Живая приёмка стендов SourceCraft

Проверено на VPS 6 октября 2026 года. Это отчёт о выполненных проверках; релизные ветки, staging и blue-green production в этот этап не входили.

CI и доставка

  • PR №14 исправил выпуск HTTPS через DNS-01. CI №47 проверил точный head fe0a77c; после согласованного одноразового обхода блокирующей проверки PR влит в main da61602.
  • CI №61 собрал и опубликовал Caddy и четыре application-образа из main. Caddy установлен по digest sha256:f4c3f2ff26b9aba05283a825e1e45fc5e596d646c5e6bb8d9f3e0a02800a34d7; OCI revision сверена с полным SHA main. На VPS образы не собирались.
  • Приёмочный PR №13 обновлён до актуальной базы. Автоматический CI №62 на head d0eba69 и базе da61602 прошёл проверки, публикацию четырёх образов и ожидание публичной готовности. PR влит обычным способом, без обхода проверок; main после merge — 2a68a95.

Контент и HTTPS

Test и PR №13 получили собственные PostgreSQL, Garage, Strapi, сайт, Storybook и документацию. Имена Docker volumes отличаются от production и друг от друга. Первоначальный снимок содержит 200 опубликованных документов и 897 медиафайлов из текущей production CMS/Garage; внешний сайт не использовался.

Проверены все пять HTTPS-адресов каждого стенда. Сертификаты выданы Let’s Encrypt, проверка доверия и SAN проходит. Web /api/health возвращает 200, { "status": "ok" } и точный SHA стенда в X-App-Release; CMS /_health — 204, Storybook /index.json и документация — 200. Выбранная фотография доступна в обоих независимых хранилищах; JPEG совпадает побайтно. Штатный upload Strapi оптимизирует изображения, поэтому checksum исходного снимка нельзя использовать как ожидаемый checksum уже загруженного JPEG.

В CMS PR №13 через Document Service создана только черновая редакторская правка. Она сохранилась после обновления четырёх образов; опубликованный Site не изменялся. После выпуска сертификатов временных ACME TXT-записей в проектной зоне не осталось. Временная запись Docker Hub в /etc/hosts удалена.

Холодный режим и удаление

Для проверки 30-минутного простоя сдвинута только отметка последнего обращения собственного PR №13; ждать 30 минут по часам не потребовалось. Обычный runtime остановил все шесть сервисов. Обращение к адресу CMS вернуло 503 / Retry-After: 5 и запустило стенд; после запуска CMS снова ответила 204. Первый ограниченный 20 секундами пробный опрос закончился раньше запуска; последующая проверка подтвердила готовность всех шести сервисов.

После HTTP-пробуждения сохранились ID контейнеров, образы, volumes, отметка импорта, head, generation и lastPushAt. Черновая правка осталась в CMS. Повторный импорт и продление 12-часового срока жизни PR не произошли.

После merge PR №13 контроллер удалил его шесть контейнеров, пять volumes, сеть, локальные данные, runtime state и маршруты всех пяти поддоменов. Журнал подтверждает отзыв каждого из пяти leaf-сертификатов через ACME; cert/key/metadata-файлы удалены, долговечная очередь отзыва пуста. Legacy GitHub PR №1 сохранён. 12-часовое истечение и LRU проверены контрактными тестами; этот отчёт не утверждает 12-часовое ожидание или отдельную живую проверку LRU на VPS.

При установке proxy и очистке кеша сертификатов пересоздавался/перезапускался только Caddy. ID и время запуска шести production-контейнеров остались прежними; production /api/health после обоих этапов отвечает 200.

Что остаётся

Production пока сохраняет прежний GitHub pipeline. Следующий этап: release/* → staging, стабильные релизы → production, blue-green также для Strapi с проверкой совместимости миграций, changelog и руководство по трём Git-платформам. Два небольших замечания DNS-ревью отложены: более строгая проверка поля response завершённой YC operation и соответствие возвращаемого libdns TTL фактическому TTL 60. Живой выпуск и удаление TXT-записей с текущим YC API проверены.