simbiot-harness/docs/DEPLOY-LANDING.md

86 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 команда
```bash
# из корня 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.
Если хочется руками (то же самое по шагам):
```bash
# 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. Верификация без скрипта
```bash
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-стилей.