Files
ElebobaandClaude Opus 5.5 d4dba9748d 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>
2026-10-13 23:59:41 +03:00

2.2 KiB
Raw Permalink Blame History

tgit-uploads

Общий репозиторий команды 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 бота с правом записи.