6.7 KiB
Deploy And Staging Smoke
1. Назначение
Этот документ фиксирует обязательный post-deploy smoke pass для Community staging или production-like окружения.
Он нужен для двух задач:
- быстро проверить, что свежий deploy реально жив, а не просто
docker compose up -dзавершился без ошибок; - дать оператору и следующему агенту один канонический сценарий проверки после релиза.
Для Community-поставки source of truth для runtime manifests:
deploy/community/docker-compose.ymldeploy/community/.env.example
Результаты прохождения этого checklist нужно заносить в staging-regression-notes.md.
Для полного browser-authenticated прохода использовать отдельный документ:
2. Когда использовать
Запускать после:
- merge в
mainи успешногоDeploy; - изменений
nginxили routing; - изменений auth/session;
- изменений
mcp-server; - изменений secrets/auth profiles;
- изменений UI routing и login flow;
- изменений
deploy/community/*.
3. Предусловия
Нужно иметь:
- задеплоенный стек
ui,admin-api,mcp-server,postgres; - корректный
.envна сервере; - валидная сборка и доставка образов в выбранной инфраструктуре;
- server deployment path, собранный из
deploy/community/docker-compose.yml; CRANK_DEMO_SEED=true, если нужен предзаполненный smoke state;- bootstrap admin credentials для входа в UI.
3.1. Быстрый automated smoke
Есть helper script:
just staging-smoke https://<domain>
или напрямую:
bash scripts/staging-smoke.sh https://<domain>
Он проверяет:
- public routes;
/api/auth/sessionJSON contract;/mcp/health;- legacy
/html/...redirects.
Это не заменяет ручной smoke pass ниже, а только быстро отсеивает грубые deploy или routing поломки.
4. Server-side smoke
На сервере:
cd /opt/rmcp
docker compose ps
docker compose logs --tail=100 admin-api
docker compose logs --tail=100 mcp-server
Ожидаемо:
admin-apiвUpилиhealthy;mcp-serverвUpилиhealthy;- нет циклических restart-ов;
- нет
password authentication failed,panic,invalid transitionи аналогичных fatal ошибок.
Проверка health endpoints:
curl --fail --silent http://127.0.0.1:3001/health
curl --fail --silent http://127.0.0.1:3002/health
5. Reverse proxy smoke
Проверить снаружи:
curl -I https://<domain>/
curl -I https://<domain>/login
curl -I https://<domain>/agents
curl -I https://<domain>/secrets
curl -I https://<domain>/wizard/
curl -I https://<domain>/api/auth/session
curl -I https://<domain>/mcp/health
Ожидаемо:
/,/login,/agents,/secrets,/wizard/->200;/api/auth/session->200или401с JSON, но не HTML fallback;/mcp/health->200;- старые
/html/...пути редиректят на clean routes.
Дополнительно проверить:
curl -I https://<domain>/html/login.html
curl -I https://<domain>/html/agents.html
curl -I https://<domain>/html/wizard/
Ожидаемо:
302на/login,/agents,/wizard/.
6. UI smoke
В браузере:
- Открыть
/login - Проверить:
- нет redirect loop;
- invalid login показывает ошибку;
- страница честно помечает password-only flow;
- Выполнить login.
- Проверить navbar:
- workspace switch;
- user identity;
- clean routing без
/html/....
7. Core page smoke
После входа открыть и проверить:
//agents/api-keys/secrets/logs/usage/workspace-setup/settings/wizard/
Для каждой страницы:
- данные грузятся;
- нет бесконечных spinners;
- нет console errors;
- empty/loading/error states выглядят корректно;
- language switch не ломает layout.
8. Auth and secrets smoke
Обязательная связка:
- Открыть
/secrets - Создать secret
- Создать или выбрать auth profile
- Открыть
/wizard/ - На шаге 2:
- выбрать existing auth profile;
- проверить quick-create secret;
- проверить quick-create auth profile;
- Сохранить upstream
- Выполнить
Test run
Smoke считается успешным, если:
- wizard не требует
${secrets.*}; auth_profile_refреально доезжает до execution path;- plaintext не возвращается после create или rotate.
9. MCP and REST smoke
Использовать пример из public-smoke-targets.md.
Обязательный ручной кейс:
REST->Open-Meteo
Порядок:
- создать operation;
- выполнить
Test run; - publish;
- привязать к agent;
- проверить MCP path;
- выполнить
tools/listиtools/call.
10. Acceptance criteria
Deploy или staging smoke считается успешным, если:
- server health зеленый;
- reverse proxy отдает правильные routes;
- login/session живы;
- все core pages открываются;
- связка
Secrets -> Auth Profiles -> Wizard -> Test runработает; - минимум один
RESToperation проходитcreate -> test-run -> publish -> MCP call; - нет критичных JS ошибок в браузере.
11. Если что-то падает
Порядок разбора:
docker compose psdocker compose logs --tail=100 admin-apidocker compose logs --tail=100 mcp-servercurlлокальных/healthcurl -Iпубличных routes- browser devtools:
- network;
- console;
/api/auth/session;- page-specific API requests
Не надо сразу трогать БД, env или nginx, пока не найден точный failing layer.