Deploy — S60 Pulse
Specifika nasazení S60 Pulse. Obecný postup viz Standardní deploy proces.
Kontejnery
| Kontejner | Port | Popis |
|---|---|---|
| s60-pulse | 3100 | NestJS + admin + client + Chromium |
Deploy příkaz
Deploy.sh provede automaticky: git pull → readiness check → npm audit → rsync → scp secrets → docker compose up --build → health check → QA gate.
NIKDY ruční rsync/scp/docker compose
Vždy použít deploy.sh. Viz deploy guard hook.
Postup: Pulse Staging (hub)
-
Je deploy potreba? — Zjisti aktualni verzi na hub:
Pokud uz bezi cilova (nebo novejsi) verze → deploy neni potreba, ukonci task. Pokud ne → vypis Liborovi co je nasazeno vs. co ma byt a pokracuj. -
Git pull na sentinelu —
cd /root/projects/pulse && git pull - Ověřit secrets —
/root/secrets/pulse/.env.hub(required: DATABASE_URL, REDIS_URL, S60_AUTH_*) - Deploy —
./deploy/deploy.sh pulse hub - Health check — deploy.sh ověří automaticky, ale potvrdit:
ssh root@100.68.138.14 "curl -s http://127.0.0.1:3100/health" - Smoke test — pulse.s60hub.cz v prohlížeči (login, dashboard)
- Changelog — zapsat do changelog.md
Postup: Pulse Produkce
Viz pulse-prod.md — schválený postup s QA gate.
Env proměnné
Secrets v /root/secrets/pulse/:
| Proměnná | Popis |
|---|---|
| APP_URL | URL aplikace |
| S60_AUTH_URL, S60_AUTH_CLIENT_ID, S60_AUTH_CLIENT_SECRET, S60_AUTH_SYSTEM_ID | S60Auth OAuth2 |
| DATABASE_URL | PostgreSQL connection string |
| REDIS_URL | Redis |
| ANTHROPIC_API_KEY | Claude AI API klíč |
| OUTPUT_PUBLIC_DIR, OUTPUT_PUBLIC_URL | Adresář a URL pro generované výstupy |
Databáze
| Prostředí | DB | User |
|---|---|---|
| Hub (staging) | s60_pulse_hub | s60_pulse_hub_user |
| Prod | s60_pulse_prod | s60_pulse_prod_user |
Závislosti
Před deploy na cílovém serveru musí existovat:
- [x] Docker network
s60-network - [x] Redis kontejner
s60-redisnas60-network - [x] Nginx reverse proxy s SSL (certbot)
- [x] S60Auth nasazený (OAuth2 provider)
Známé problémy
- npm audit: 3 high vulnerabilities (ne critical) — sledovat
- deploy.yml vs kód: deploy.yml říká
AUTH_*, kód používáS60_AUTH_*— obojí funguje - QA gate: regression testy mohou failnout kvůli QA agent timeout — neblokuje staging deploy