infra: tgit-runner — песочница и CD сервисов #13

Closed
opened 2026-10-12 19:34:16 +03:00 by Eleboba · 2 comments
Owner

Описание

Запуск кода из services/<name>/ на хосте: ARCHITECTURE §4, ADR-005, ADR-006.

Желаемый результат

  • tgit-runner deploy|restart|probe <service> … на хосте; ключи CI и бота ограничены command= на этот скрипт.
  • Контейнер tgit-svc-<service> с флагами песочницы и метками tgit.managed/service/sha/deployed_at; HEALTHCHECK из tgit.yaml.
  • Не стал healthy за 60 с → откат на предыдущий образ, ненулевой код (CD падает).
  • Старые образы чистятся (2 последних); лимит 10 сервисов на хост.

Подзадачи

  • infra/runner/tgit-runner
  • infra/runner/svc.Dockerfile
  • infra/runner/authorized_keys.example (command=…,no-pty,no-port-forwarding)
  • infra/runner/install.sh
  • Workflow deploy в шаблоне tgit-uploads вызывает runner
  • Тесты runner на валидации аргументов
  • examples/escape_attempts — запись в FS, fork-бомба, сеть, docker.sock — всё запрещено

Анализ

Затрагиваемые файлы

Файл Что меняется
infra/runner/ новый
infra/uploads-template/.sourcecraft/ci.yaml workflow deploy

Ограничения и риски

Самая рискованная задача: чужой код рядом с прод-Vobot. Все флаги песочницы обязательны. Ревью — обязательно.

Как проверить

Пуш services/hello → контейнер с лимитами (docker inspect); escape_attempts → все попытки неуспешны; сломанный healthcheck → откат и CD ❌.


Лог выполнения

2026-10-13

  • Задача переписана под SPEC v2 (QR-доступ, меню из 4 разделов, командная модель — ADR-011…013).
## Описание Запуск кода из `services/<name>/` на хосте: [ARCHITECTURE](https://gitea.24studbank.ru/HSE/tgit/src/branch/dev/docs/ARCHITECTURE.md) §4, ADR-005, ADR-006. ## Желаемый результат - `tgit-runner deploy|restart|probe <service> …` на хосте; ключи CI и бота ограничены `command=` на этот скрипт. - Контейнер `tgit-svc-<service>` с флагами песочницы и метками `tgit.managed/service/sha/deployed_at`; `HEALTHCHECK` из `tgit.yaml`. - Не стал healthy за 60 с → откат на предыдущий образ, ненулевой код (CD падает). - Старые образы чистятся (2 последних); лимит 10 сервисов на хост. ## Подзадачи - [ ] `infra/runner/tgit-runner` - [ ] `infra/runner/svc.Dockerfile` - [ ] `infra/runner/authorized_keys.example` (`command=…,no-pty,no-port-forwarding`) - [ ] `infra/runner/install.sh` - [ ] Workflow `deploy` в шаблоне tgit-uploads вызывает runner - [ ] Тесты runner на валидации аргументов - [ ] `examples/escape_attempts` — запись в FS, fork-бомба, сеть, docker.sock — всё запрещено ## Анализ ### Затрагиваемые файлы | Файл | Что меняется | |------|--------------| | `infra/runner/` | новый | | `infra/uploads-template/.sourcecraft/ci.yaml` | workflow deploy | ### Ограничения и риски Самая рискованная задача: чужой код рядом с прод-Vobot. Все флаги песочницы обязательны. Ревью — обязательно. ## Как проверить Пуш `services/hello` → контейнер с лимитами (`docker inspect`); `escape_attempts` → все попытки неуспешны; сломанный healthcheck → откат и CD ❌. --- ## Лог выполнения ### 2026-10-13 - Задача переписана под SPEC v2 (QR-доступ, меню из 4 разделов, командная модель — ADR-011…013).
Eleboba added this to the M2 · CD и мониторинг milestone 2026-10-12 19:34:16 +03:00
Eleboba added the infrafeaturesize/2 labels 2026-10-12 19:34:16 +03:00
Eleboba self-assigned this 2026-10-12 19:34:16 +03:00
Eleboba added a new dependency 2026-10-12 19:41:43 +03:00
Eleboba changed title from infra: tgit-runner — песочница и CD приложений пользователей to infra: tgit-runner — песочница и CD сервисов 2026-10-13 22:53:27 +03:00
Author
Owner

Зависимость от #7 снята: репозиторий загрузок и ключ бота работают на Gitea (ADR-015), CI — Gitea Actions (ADR-016). #7 остаётся открытой только под SourceCraft.

Зависимость от #7 снята: репозиторий загрузок и ключ бота работают на Gitea (ADR-015), CI — Gitea Actions (ADR-016). #7 остаётся открытой только под SourceCraft.
Author
Owner

Смержено в dev через PR #49 — закрываю.

Смержено в `dev` через PR #49 — закрываю.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: HSE/tgit#13