diff --git a/.claude/rules/deploy.md b/.claude/rules/deploy.md index cba0d64f..c01e72de 100644 --- a/.claude/rules/deploy.md +++ b/.claude/rules/deploy.md @@ -27,7 +27,7 @@ Reference incident: PR #346 (2026-05-18) deploy → user сам нашёл prod - `backend/**`, `frontend/**`, `Caddyfile`, `caddy/**`, `docker-compose.prod.yml`, `data/sql/**`, `ops/glitchtip-auth-forwarder/**`, `.forgejo/workflows/deploy.yml` → `deploy.yml` (main Site Finder stack) - trade-in изменения → `deploy-tradein.yml` (отдельный stack; paths-filter base = last deployed SHA → накопленный diff, fail-safe build-all) -- `docker-compose.obsidian.yml`, `scripts/setup-couchdb.sh` → `.github/workflows/deploy-obsidian.yml` +- `docker-compose.obsidian.yml`, `scripts/setup-couchdb.sh`, `docs/obsidian-livesync.md` → `.forgejo/workflows/deploy-obsidian.yml` - `docs/**` alone → НЕ триггерит деплой ## После изменения .env на VPS diff --git a/.github/workflows/deploy-obsidian.yml b/.forgejo/workflows/deploy-obsidian.yml similarity index 86% rename from .github/workflows/deploy-obsidian.yml rename to .forgejo/workflows/deploy-obsidian.yml index 6895a626..1209e8b2 100644 --- a/.github/workflows/deploy-obsidian.yml +++ b/.forgejo/workflows/deploy-obsidian.yml @@ -9,6 +9,14 @@ name: Deploy Obsidian # # Не пересобирает никаких Docker-образов (CouchDB официальный с DockerHub). # Не трогает main-стек (backend / frontend / postgres / worker / beat / caddy). +# +# ИСТОРИЯ (2026-07-05): жил в .github/workflows/ с момента миграции с GitHub +# (16.05.2026), помечен в README как «остался на GitHub» — но живого зеркала +# на github.com с настроенными секретами не оказалось: 0 запусков за всю +# историю Forgejo Actions (12000+ прогонов остальных workflow), контейнер +# не пересоздавался с 17.05 до ручного SSH-фикса 04.07. Перенесён сюда — +# единственная директория, которую реально исполняет этот инстанс. +# См. issue #2416. on: push: @@ -17,7 +25,7 @@ on: - "docker-compose.obsidian.yml" - "scripts/setup-couchdb.sh" - "docs/obsidian-livesync.md" - - ".github/workflows/deploy-obsidian.yml" + - ".forgejo/workflows/deploy-obsidian.yml" workflow_dispatch: concurrency: diff --git a/README.md b/README.md index 4c4e4d66..36f5925d 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,7 @@ docker-compose.uptime.yml Uptime Kuma мониторинг (status.gendsgn.ru - [`.forgejo/workflows/ci.yml`](.forgejo/workflows/ci.yml) — на PR: ruff lint + mypy (selective strict) + pytest. Блокирует merge при провале. - [`.forgejo/workflows/deploy.yml`](.forgejo/workflows/deploy.yml) — main: триггер на `backend/**`, `frontend/**`, `Caddyfile`, `docker-compose.prod.yml`, `data/sql/**`. Build backend lean + worker-with-chromium + frontend → push в приватный GHCR → SSH `git reset --hard`, **auto-apply pending `data/sql/NN_*.sql` через `_schema_migrations`** (idempotent, см. ниже про миграции), sed `SENTRY_RELEASE=$IMAGE_TAG` в `backend/.env.runtime`, `compose pull && up -d`, `caddy reload`, `curl /health`. - [`.forgejo/workflows/deploy-tradein.yml`](.forgejo/workflows/deploy-tradein.yml) — tradein-mvp стек (отдельный пайплайн). -- [`.github/workflows/deploy-obsidian.yml`](.github/workflows/deploy-obsidian.yml) — obsidian (**остался на GitHub**): триггер на `docker-compose.obsidian.yml`, `scripts/setup-couchdb.sh`, `docs/obsidian-livesync.md`. Без сборки образов (couchdb:3 с DockerHub), SSH `compose up -d` + idempotent bootstrap (CORS, DB, лимиты). +- [`.forgejo/workflows/deploy-obsidian.yml`](.forgejo/workflows/deploy-obsidian.yml) — obsidian: триггер на `docker-compose.obsidian.yml`, `scripts/setup-couchdb.sh`, `docs/obsidian-livesync.md`. Без сборки образов (couchdb:3 с DockerHub), SSH `compose up -d` + idempotent bootstrap (CORS, DB, лимиты). *(до 2026-07-05 ошибочно лежал в `.github/workflows/` — там ни разу не исполнился, см. issue #2416; контейнер держался вручную.)* **Forgejo Secrets / Variables:** `DEPLOY_HOST`, `DEPLOY_USER`, `DEPLOY_SSH_KEY`, `DEPLOY_PORT`. Сервер авторизуется в GHCR однократно через PAT с `read:packages`. `COUCHDB_USER`/`COUCHDB_PASSWORD` — в `backend/.env.runtime` на VPS (не в репе). diff --git a/docs/obsidian-livesync.md b/docs/obsidian-livesync.md index e50ef975..699847d3 100644 --- a/docs/obsidian-livesync.md +++ b/docs/obsidian-livesync.md @@ -28,7 +28,7 @@ Obsidian-стек **отделён** от основного приложени |---|---|---| | Compose | `docker-compose.prod.yml` | `docker-compose.obsidian.yml` | | Project | `gendesign` (`docker compose -p gendesign`) | `gendesign-obsidian` | -| Workflow | `.github/workflows/deploy.yml` | `.github/workflows/deploy-obsidian.yml` | +| Workflow | `.forgejo/workflows/deploy.yml` | `.forgejo/workflows/deploy-obsidian.yml` | | Триггер push paths | `backend/**`, `frontend/**`, `Caddyfile`, main compose | `docker-compose.obsidian.yml`, `scripts/setup-couchdb.sh`, docs | | Сервисы | backend, frontend, postgres, redis, worker, beat, caddy | couchdb | | Восстанавливается отдельно | ✓ | ✓ |