simbiot-harness/docs/DEPLOY-LANDING.md

5.8 KiB
Raw Blame History

DEPLOY-RUNBOOK: лендинг simbiot.cil.by

Создан day-тиком 2026-10-05 (эскалация e-261004110909-bd70b0). Отвечает на вопрос «как лендинг попадает на прод и кто что правит». Обновлять при изменении топологии.

1. Топология (факты, проверены 2026-10-04…05)

Что Где Проверка
Прод-хост 204.168.232.21, Caddy (server: Caddy, h3) getent hosts simbiot.cil.by
На проде живут cil.by (портал, /root/coop), git.cil.by (Forgejo), simbiot.cil.by (лендинг, docroot в главном Caddyfile — simbiot в RESERVED_SUBDOMAINS, это НЕ sites/*) curl
Хост харнеса hermes-mon = 94.130.177.31 (Hetzner) — этот хост, НЕ прод hostname -I
Docroot лендинга на проде, точный путь — в блоке simbiot.cil.by /etc/caddy/Caddyfile (см. §4 шаг 1) —

2. Источник истины лендинга

Файл Статус
simbiot-harness: docs/simbiot-landing-v2-live.html ✅ канон. Синхронизирован с продом 2026-10-04 + фикс showcase-стилей (коммит d5aff30, в origin/master). Все 4 фикса аудита t-261002151425 + стили секции live-product в основном <style>
portal-репо: sites/simbiot/index.html ❌ протух (версия от 2026-08-25, d2e6d79a; 28.7KB vs прод 41.1KB). НЕ эталон. Править только если вернуть prod→repo pull-деплой (см. §6)
Прод /…/index.html текущая живая версия; changable только с прода

Правки лендинга всегда начинать с канона в harness-репо, не с прода.

3. Почему харнес не деплоит сам (осознанное ограничение)

  • SSH-ключей на хосте харнеса нет по политике (KEYS-REGISTRY §3–4: ~/.ssh пуст, доступ наружу по SSH не хранится).
  • Портал (cil.by) имеет write-API на прод (/api/project/*/repo/*, Caddy-patch), но требует человеческую session-логин — и правильно.
  • Auto-commit прода (scripts/auto_commit.sh в portal-репо) только пушит prod→git; pull-деплоя лендинга нет вообще.
  • ⇒ Деплой в docroot = одна ручная команда владельца прода (§4).

4. Деплой (Alex / любой, у кого SSH на прод) — 1 команда

# из корня simbiot-harness на hermes-mon:
ssh root@204.168.232.21 'bash -s' < scripts/deploy_landing.sh

Скрипт сам: найдёт docroot в /etc/caddy/Caddyfile → забэкапит (держит 10 последних) → скачает канон из git.cil.by (токен берёт из FORGEJO_PULL_TOKEN env или /root/coop/.alfa_env на прода; можно передать inline) → проверит содержимое (noscript чист, стили/мета на месте; при провале — откат, ничего не ставит) → установит → проверит живой сайт. Идемпотентен. Caddy перезагружать не нужно (file_server отдаёт сразу), кэш браузера — Ctrl-F5.

Если хочется руками (то же самое по шагам):

# 1) docroot: grep -A4 'simbiot.cil.by' /etc/caddy/Caddyfile  → root * /path
# 2) curl -fsSL -H "Authorization: token <read-токен Forgejo>" \
#      https://git.cil.by/symbiot/simbiot-harness/raw/branch/master/docs/simbiot-landing-v2-live.html \
#      -o <DOCROOT>/index.html
# 3) верификация: ./scripts/landing_verify.sh   # exit 0 = прод == канону

Бэкап перед деплоем (по желанию): на проде cp <DOCROOT>/index.html index.html.bak-$(date +%F).

5. Верификация без скрипта

curl -s https://simbiot.cil.by/ | grep -c 'SHOWCASE'        # 0 = ок (стили не в noscript)
curl -s https://simbiot.cil.by/ | grep -c 'prefers-reduced-motion'  # >0
curl -s https://simbiot.cil.by/ | awk '/<noscript>/,/<\/noscript>/' | grep -c moc-grid  # 0
curl -sI https://simbiot.cil.by/og.png | head -1            # 200
sha256sum <(curl -s https://simbiot.cil.by/) docs/simbiot-landing-v2-live.html  # равные

6. Долгосрочное лечение дрейфа (бэклог, L-кандидат)

Прод деплоится руками → источник в git протухает → «прод ≠ репо». Варианты:

  1. deploy-hook в портале: кнопка/эндпоинт «redeploy simbiot landing» = curl из git.cil.by в docroot (использует уже существующий на прода git+forgejo);
  2. перенести docroot лендинга в /root/coop/sites/simbiot/ (сейчас RESERVED) — тогда auto-commit прода начнёт его сам зеркалить в git, а правки можно вести через harness-репо + один ручной rsync/checkout;
  3. оставить как есть + этот runbook (мин-цикл верифицирует дрейф скриптом §4.3).

7. Чangelog

  • 2026-10-05: создан; git-push канал харнеса восстановлен (pushurl на admin-токен Forgejo, см. KEYS-REGISTRY §1), висящие коммиты cbacc99..0d5dd17 запушены. Ожидается ручной деплой d5aff30 на прод (§4) — фикс showcase-стилей.