auto-sync: 2026-06-05 07:40:01

This commit is contained in:
Stream
2026-06-05 07:40:01 +03:00
parent 0d522884e5
commit f2e062c972
2 changed files with 96 additions and 4 deletions

View File

@@ -0,0 +1,91 @@
# Dev Report: ORCH-31 Staging-инфраструктура (порт 8501, изолированная БД)
Дата: 2026-06-05
Статус: DONE
## Задача
Добавить compose-service `orchestrator-staging` под профилем `staging`, `.env.staging.example`, обновить `.gitignore`, создать `docs/STAGING.md`. Ветка `feature/ORCH-31-staging-infra` из свежего origin/main. Только инфра-обвязка (ORCH-31, этап 1 из 5).
## Сделано
- [x] Подключён к серверу, изучен текущий docker-compose.yml (факты совпали с ТЗ)
- [x] Создана ветка `feature/ORCH-31-staging-infra` из свежего origin/main (d0a3424)
- [x] Добавлен service `orchestrator-staging` в docker-compose.yml под профилем `staging`
- [x] Создан `.env.staging.example` со всеми ключами и комментариями
- [x] Обновлён `.gitignore`: добавлены `.env.staging` и `data/staging/`
- [x] Создан `docs/STAGING.md`: как поднять, архитектура, роадмап
- [x] Проверен `docker compose config` (без профиля — staging НЕ виден)
- [x] Проверен `docker compose --profile staging config` (staging виден под профилем)
- [x] Коммит `6c1e5ff` + push + PR #28 создан
## Изменённые файлы
- `docker-compose.yml` — добавлен service `orchestrator-staging` (profiles: [staging], port 8501, volume ./data/staging, command override)
- `.gitignore` — добавлены `.env.staging` и `data/staging/`
- `.env.staging.example` — новый файл, шаблон с ключами и плейсхолдерами
- `docs/STAGING.md` — новый файл, документация по staging
## Результат
### Ветка
`feature/ORCH-31-staging-infra`
### Коммит
`6c1e5fff5291297f6ab1573b144390f36b135cbe`
`feat(staging): add isolated orchestrator-staging service (port 8501, separate DB)`
### PR
**#28** — https://git.mva154.duckdns.org/admin/orchestrator/pulls/28
---
### Пруф 1: docker compose config (без профиля) — staging НЕ поднимается
```
services:
orchestrator: ← только прод, staging отсутствует ✅
```
### Пруф 2: docker compose --profile staging config — staging виден
```
services:
orchestrator:
orchestrator-staging: ← виден под профилем staging ✅
profiles:
- staging
command:
- uvicorn
- src.main:app
- --host
- 0.0.0.0
- --port
- "8501" ← порт 8501 ✅
volumes:
source: /home/slin/repos/orchestrator/data/staging ← изолированная БД ✅
```
### Пруф 3: git log origin/main..origin/feature/ORCH-31-staging-infra
```
6c1e5ff feat(staging): add isolated orchestrator-staging service (port 8501, separate DB)
```
✅ Один коммит поверх main, после push.
---
## Архитектура решения
| | Production | Staging |
|---|---|---|
| Port | 8500 | 8501 |
| Container | `orchestrator` | `orchestrator-staging` |
| DB (host) | `./data/orchestrator.db` | `./data/staging/orchestrator.db` |
| DB (container) | `/app/data/orchestrator.db` | `/app/data/orchestrator.db` |
| env file | `.env` | `.env.staging` |
| Profile | *(default)* | `staging` |
Изоляция БД достигается через отдельный volume mount `./data/staging:/app/data`, а не изменением `ORCH_DB_PATH`.
## Проблемы и решения
1. **Нет `.env.staging` для `docker compose config --profile staging`** — ожидаемо (файл создаётся при выкате, не коммитится). Для проверки использован временный `.env.staging` с placeholder-значениями, сразу удалён. В репо не закоммичен.
2. **Bash heredoc + backticks** в SSH-команде для JSON тела PR — экранирование конфликтовало. Решено через Python-скрипт (`/tmp/pr_payload.json`).
## Следующий шаг (ORCH-32)
Создать изолированный Plane-проект и Gitea-репозиторий для staging, настроить webhook для staging-инстанса (порт 8501).