Files
ElebobaandClaude Opus 5.5 95a72437ec
CI / ruff · mypy · pytest (pull_request) Failing after 3m40s
feat(pipeline): уведомления CI/CD — PipelineWatcher, CI загрузок на Gitea Actions
- app/pipeline: протокол CIProvider, клиент Gitea Actions (прогон по head_sha, упавший
  шаг, лог джоба, ретраи), PipelineWatcher — опрос только при незавершённых push,
  сообщение о push обновляется CI ⏳ → ✅/❌ → CD 🚀/⛔, автору — отдельные уведомления
- деплой сервисов — только после зелёного CI; старый push не откатывает сервис,
  который развернёт более новый; после рестарта бот продолжает с того же места
- CI_PROVIDER=none — прежнее поведение (деплой сразу после push)
- шаблон tgit-uploads: .gitea/workflows/check.yml; .gitea/ защищён от правок из бота
- миграция 0002: старые push помечены skipped, чтобы не слать им «таймаут CI»
- ADR-016, ARCHITECTURE §2.5/§5.2, README, DEPLOY, .env.example

Refs #11

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:24:08 +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 (необязательно)
.gitea/workflows/       CI (Gitea Actions) — из Telegram не редактируется
.sourcecraft/ci.yaml    CI для SourceCraft — на будущее возвращение, сейчас не используется
.tgit/                  служебные скрипты CI — из Telegram не редактируются
ruff.toml               мягкий набор правил линтера

CI/CD (push в main)

CI — workflow check в Gitea Actions; CD делает бот, когда check зелёный.

Шаг Что делает Падает, если
compile python -m compileall синтаксическая ошибка
lint ruff check (мягкие правила) неопределённые имена, неиспользуемые импорты, опасные значения по умолчанию
security bandit -ll по services/ найдена уязвимость уровня medium+
tests pytest для каждого сервиса с тестами, со своими requirements.txt упал тест
CD (бот) изменённые сервисы → tgit-runner на хосте сервис не поднялся (healthy) за 60 с — работает прежняя версия

Развернуть заново

Шаблон — в репозитории бота: infra/uploads-template/. Новый пустой репозиторий → скопировать содержимое шаблона → push в main → в настройках добавить deploy key бота с правом записи.