feat(infra): шаблон репозитория загрузок tgit-uploads — CI/CD, служебные скрипты, демо-сервис
- .sourcecraft/ci.yaml: push в main → check (compile · ruff мягкий · bandit · pytest по сервисам) → deploy - .tgit/changed_services.py: изменённые services/<name>/ (без родителя — все сервисы) - .tgit/run_tests.py: pytest каждого сервиса со своими requirements.txt - deploy пока заглушка со списком сервисов — tgit-runner в #13 - services/hello: демо-сервис с тестом; tgit.yaml — формат настроек сервиса Refs #7 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# tgit-uploads
|
||||
|
||||
Общий репозиторий команды [tgit](https://gitea.24studbank.ru/HSE/tgit): бот коммитит сюда изменения из Telegram
|
||||
(раздел «📝 Коммит»), каждый push в `main` запускает CI, а изменённые сервисы разворачиваются на хосте (CD).
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
services/<name>/ сервис = папка; имя — ^[a-z][a-z0-9-]{1,30}$
|
||||
main.py точка входа (python main.py)
|
||||
requirements.txt зависимости (необязательно)
|
||||
test_*.py тесты pytest (необязательно, запускаются в CI)
|
||||
tgit.yaml настройки запуска: health_url, network (необязательно)
|
||||
.sourcecraft/ci.yaml CI/CD — из Telegram не редактируется
|
||||
.tgit/ служебные скрипты CI — из Telegram не редактируются
|
||||
ruff.toml мягкий набор правил линтера
|
||||
```
|
||||
|
||||
## CI/CD (`check-and-deploy`, push в `main`)
|
||||
|
||||
| Шаг | Что делает | Падает, если |
|
||||
|---|---|---|
|
||||
| `compile` | `python -m compileall` | синтаксическая ошибка |
|
||||
| `lint` | `ruff check` (мягкие правила) | неопределённые имена, неиспользуемые импорты, опасные значения по умолчанию |
|
||||
| `security` | `bandit -ll` по `services/` | найдена уязвимость уровня medium+ |
|
||||
| `tests` | `pytest` для каждого сервиса с тестами, со своими `requirements.txt` | упал тест |
|
||||
| `deploy` | список изменённых сервисов → `tgit-runner` на хосте | сервис не поднялся (healthy) за 60 с |
|
||||
|
||||
## Развернуть заново
|
||||
|
||||
Шаблон — в репозитории бота: `infra/uploads-template/`. Новый пустой репозиторий → скопировать содержимое шаблона →
|
||||
push в `main` → в настройках добавить deploy key бота с правом записи.
|
||||
Reference in New Issue
Block a user