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

@@ -19,10 +19,11 @@
- В ПОЛНОМ прогоне `pytest tests/` секрет протекал между файлами → HMAC включался → webhook-тесты ловили `assert 401 == 200`. По отдельности файл зелёный, вместе — красный.
- **Решение-паттерн:** autouse-фикстура в conftest, сброс протекающего состояния синглтона через monkeypatch перед каждым тестом. НЕ менять сам механизм/защищённые тесты — только навести порядок с изоляцией. `db_path` тоже протекал (get_task_by_repo_branch возвращал stale) — Dev законно добавил и его сброс.
### Развилка по мержу (ждёт кивка Славы на момент флаша)
- **#27** содержит ВСЁ (workflow + все фиксы тестов), зелёный.
- **#26** (ветка `ci/add-gitea-workflow`, только workflow) — поглощён #27.
- **План:** мержить #27 в main, #26 закрыть без мержа как поглощённый. Мерж PR — роль Стрим (ревьюер).
### Мерж ВЫПОЛНЕН ✅ (05.06, Слава дал «да»)
- **PR #27 → MERGED в main** (HTTP 200). main HEAD = `d0a3424` Merge PR #27. Все 3 коммита фиксов в истории main.
- **PR #26 → CLOSED без мержа** (поглощён #27).
- Нюанс: CI на самом main после merge-commit отдельным прогоном не появился (workflow триггерится на push/PR-ветки; merge-commit мог не дёрнуть). Код в main = ровно то, что прогонялось зелёным (294 passed). Гейт на будущих PR работает.
- **Пункт №1 self-hosting (CI-гейт) ЗАКРЫТ.** Осталось: удалить отработанные ветки fix/isolate, ci/add (косметика).
## Staging-среда для orchestrator (ORCH-30..35) — дизайн оформлен, задачи в Backlog

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).