infra: автодеплой бота на VPS vobot #12
Notifications
Due Date
No due date set.
Blocks
Depends on
Reference: HSE/tgit#12
Reference in New Issue
Block a user
Описание
CD бота по ARCHITECTURE §6, по образцу meditron (
/srv/ptsr,ptsr-deploy). Хост —vobot(72.56.247.166), рядом прод Vobot: ресурсы ограничены (~1,9 ГБ RAM свободно).Желаемый результат
tgit-deploy(группа docker), каталог/srv/tgitс.envтолько на сервере.infra/deploy/deploy.sh [ref]— тот же скрипт руками и из CI; хост —DEPLOY_HOST.deployв.sourcecraft/ci.yamlна push вmainпослеcheck; smoke — healthcheck контейнера.DEPLOY_HOST, без правки кода.Подзадачи
authorized_keysinfra/deploy/deploy.sh(git archive → scp → атомарная замена → compose up → healthcheck → REVISION, ретраи SSH)infra/deploy/docker-compose.server.yml— лимиты,restart: unless-stopped, ротация логовDEPLOY_SSH_KEY,DEPLOY_HOSTв репозитории (через API)deploydocs/dev/DEPLOY.md— как развернуть руками и откатитьсяАнализ
Затрагиваемые файлы
infra/deploy/.sourcecraft/ci.yamldocs/dev/DEPLOY.mdОграничения и риски
Не трогать контейнеры и nginx Vobot/meditron. Compose-проект строго
-p tgit. Хост режет часть SSH — ретраи обязательны.Как проверить
Мерж в
main→ CI деплоит →ssh vobot docker ps | grep tgit→ бот отвечает;cat /srv/tgit/app/REVISION= sha.Лог выполнения
2026-10-16
.gitea/workflows/deploy.yml, как в Vobot/meditron), SourceCraft отложен.dev→/srv/tgit/dev,main→/srv/tgit/prod(prod — когда появится свой токен бота; один токен = один polling).HSE/tgit-uploadsв Gitea (deploy key бота добавляется через API); при возврате к SourceCraft меняется толькоGIT_UPLOADS_URL.tgit-deploy(docker) на хосте Vobot,/srv/tgit/dev+ серверный.env(секреты только там), CI-ключtgit-cd@giteaвauthorized_keysи в секретах Gitea (DEPLOY_SSH_KEY,DEPLOY_HOST).infra/deploy/deploy.sh <env> [ref]+remote.sh(атомарная заменаapp/,app.oldдля отката, ожидание healthy,REVISION; окружение без.envпропускается)..gitea/workflows/deploy.yml— pushdev/main, guard «актуален ли пуш», ключ черезenv:.api.telegram.orgнедоступен (ни v4, ни v6) →TELEGRAM_PROXY_URL(тот же прокси, что у meditron;aiohttp-socks). Бот в простое ~190 МБ → лимит 256m → 384m.bot healthy @ 526eb56 (dev),Run polling for bot @tgit_duemon_bot. Бот работает с сервера.HSE/tgit-uploads(Gitea), deploy key бота добавлен через API; запись проверена ключом бота с-F /dev/null.docs/dev/DEPLOY.md, ADR-015. Автодеплой по мержу проверится на первом пуше вdevпосле мержа.