Files
tgit/infra/uploads-template
ElebobaandClaude Opus 5.5 c016b47a8a feat(bot): клиент SourceCraft API — прогоны, логи кубов, sha коммита, ретраи
- SourceCraftClient (httpx): list_runs, get_run, get_cube_logs (постранично), run_commit_sha;
  ретраи на сетевые ошибки и 5xx с экспоненциальной задержкой, 4xx — SourceCraftError без повторов
- модели: RunStatus/EventType из swagger, «1970-01-01» = не задано, failed_cubes без служебных #-кубов
- у прогона в API нет sha → куб check/meta в tgit-uploads печатает TGIT_COMMIT_SHA (ADR-014)
- CLI: python -m app.sourcecraft.cli runs
- тесты на реальных ответах API (фикстуры), порог покрытия 45 → 80

Refs #10

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:02:52 +03:00
..

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 бота с правом записи.