- admin-owner-from-config первой строкой: сервис заводит владельца панели по ключу конфига; задача отменяет требование спеки storage, и это названо в рамках - dev-run-task следом: task dev поднимает сервис и заглушку разом, гасит оба по Ctrl+C; зависит от ключа конфига
3.9 KiB
3.9 KiB
🧹 Поднимать сервис и заглушку одной командой
- Тип: chore
- Категория: Очередь — шаг dev заводит владельца панели тем самым ключом — до него команду не собрать
- Зачем: Локальная проверка требует двух терминалов, ручной остановки обоих процессов и чистки каталога данных; учётную запись заводят проходом по браузеру.
Шаг task dev CONFIG=<путь> USER=<почта> поднимает сервис и подставной
провайдер OIDC разом, кладёт данные во временный каталог, заводит учётные записи
и гасит оба процесса по Ctrl+C.
Задуманное устройство:
- конфиг пишет человек и передаёт путём — шаг его не сочиняет;
- шаг подменяет каталог данных: кладёт копию переданного конфига во временный
каталог со своим
data_dir, чтобы прогон начинался с пустой базы независимо от того, что написано в конфиге. Временное живёт в/tmp— вdata/писать запрещено (CLAUDE.md, «Запреты»); - оба процесса идут одной группой,
trapнаINTиTERMгасит их разом,waitдержит терминал; - шаг заводит обычную учётную запись входом: поднимает
cmd/oidcstubс-emailизUSER, сам проходит цепочку входа и тем создаёт запись; - владельца панели заводит ключ конфига, который приносит admin-owner-from-config. До неё шаг владельца панели завести не может — отсюда и место в списке.
Затрагивает
Taskfile.yml— шагdevс переменнымиCONFIGиUSER;- скрипт запуска в
scripts/— он попадает под шагshellгейта; CLAUDE.md, раздел «Команды»;README.md, раздел про локальный запуск.
Критерии приёмки
- Команда поднимает оба процесса и печатает адрес, по которому открывать приложение. Оракул: прогон с тестовым конфигом — сервис и заглушка слушают свои порты.
- Ctrl+C гасит обоих и не оставляет висящих процессов. Оракул:
pgrepпо обоим именам после остановки — пусто. - После запуска в базе есть учётная запись с переданной почтой. Оракул: запрос к коллекции пользователей во временной базе.
- Каталог данных лежит во временном месте, а
data/не тронут. Оракул: путь базы из журнала подъёма иgit statusпосле прогона. task gateостаётся зелёным, скрипт проходитshellcheck. Оракул: прогон гейта целиком.
Рамки
Шаг локальный: наружу не ходит, боевых ключей не требует и в образ не попадает. Распознавание при выдуманных ключах не работает — это остаётся как есть, шаг его не подменяет.