Deal — единая кодовая база
ci / build-test (push) Canceled after 0s

SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/
Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue,
контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер),
Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог).

Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0,
тесты 1340/130/52/38/9 зелёные.
This commit is contained in:
Rustam Khalimov
2026-09-11 23:56:47 +03:00
commit 27c7831910
1383 changed files with 158436 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
# Адрес инстанса Gitea
GITEA_INSTANCE_URL=https://gitea.khomegeneric.keenetic.pro
# Токен регистрации раннера: Gitea -> Site Administration (или репозиторий) -> Actions -> Runners
# -> Create new runner; либо API:
# curl -sk -u rust:ПАРОЛЬ -X GET \
# https://gitea.khomegeneric.keenetic.pro/api/v1/repos/rust/Deal/actions/runners/registration-token
RUNNER_TOKEN=
# Имя раннера в интерфейсе Gitea
RUNNER_NAME=deal-runner
# Метки для runs-on (по умолчанию хватает ubuntu-latest)
# RUNNER_LABELS=ubuntu-latest:docker://gitea/runner-images:ubuntu-latest
+34
View File
@@ -0,0 +1,34 @@
# Gitea Actions Runner (Deal CI)
Раннер для `.gitea/workflows/ci.yml`. Workflow требует метку `ubuntu-latest`;
job-контейнер — `gitea/runner-images:ubuntu-latest`, .NET 10 и Node 20 ставятся
шагами `setup-dotnet`/`setup-node` внутри job'а.
## Поднять на любой машине с Docker (в той же сети, что Gitea)
```sh
cp .env.example .env # вписать RUNNER_TOKEN
docker compose up -d
```
Токен: Gitea → **Site Administration → Actions → Runners → Create new runner**
или API (см. `.env.example`).
Проверка: Gitea → репозиторий → **Actions → Runners** — раннер `deal-runner`
должен быть Idle. Далее любой `git push` в `main` запускает workflow
(`.gitea/workflows/ci.yml`: `sh scripts/ci.sh` — сборка 5 решений, тесты,
скан уязвимостей, сборка и линтер фронта).
## Перенос на сервер Gitea
1. Скопировать каталог на сервер, заполнить `.env`, `docker compose up -d`.
2. Локальный раннер погасить: `docker compose down` (каталог `data/` содержит
регистрацию — при переносе можно удалить и перерегистрировать).
## Заметки
- Первая строка pulls ~1.5 GB (`gitea/runner-images:ubuntu-latest` + SDK ~200 MB
при первом прогоне); последующие прогоны — инкрементальные.
- `restart: unless-stopped` — раннер переживает перезагрузку хоста.
- Токен регистрации используется один раз при `register`; хранить его в
репозитории нельзя — только в `.env``.gitignore`).
+18
View File
@@ -0,0 +1,18 @@
services:
runner:
image: gitea/act_runner:latest
container_name: deal-act-runner
restart: unless-stopped
depends_on: []
environment:
# Адрес инстанса Gitea и токен регистрации — в .env рядом с этим файлом
GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?заполните .env}
GITEA_RUNNER_REGISTRATION_TOKEN: ${RUNNER_TOKEN:?заполните .env}
GITEA_RUNNER_NAME: ${RUNNER_NAME:-deal-runner}
# Метки, по которым workflow находит раннер: runs-on: ubuntu-latest
GITEA_RUNNER_LABELS: ${RUNNER_LABELS:-ubuntu-latest:docker://gitea/runner-images:ubuntu-latest,ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04}
volumes:
# Раннер запускает job-контейнеры через docker хоста
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
privileged: false