Добавить единый CI-прогон и workflow

scripts/ci.sh собирает все решения, гоняет тесты всех сервисов, сканирует уязвимые NuGet-зависимости и собирает фронт; build.sh/test.sh расширены на все решения. Плюс .github/workflows/ci.yml. Закрывает BL-CI.
This commit is contained in:
Rustam Khalimov
2026-09-11 17:46:03 +03:00
parent 1d7c9980ba
commit be457d7286
7 changed files with 110 additions and 20 deletions
@@ -367,13 +367,17 @@ DEAL_MTLS_ENABLED=0|1 DEAL_MTLS_CERT_PASSWORD=... DEAL_DEFAULT_AI_BU
Секреты — только через env/secret-хранилище, не в коде и не в репозитории.
### CI/CD
- Сборка: `scripts/build.sh` (core) + сервисные sln — 0 warnings/0 errors (`TreatWarningsAsErrors`);
тесты: `scripts/test.sh` (unit core + `npm run lint:i18n`) + сервисные тесты. Фронт — `npm run build`.
- Единый прогон: `scripts/ci.sh` (BL-CI, 2026-09-11) сборка всех 5 решений (`scripts/build.sh`),
тесты всех сервисов (`scripts/test.sh`: core/telegram/ai/ml/storage + `npm run lint:i18n`),
скан уязвимых NuGet-зависимостей (`dotnet list package --vulnerable --include-transitive`),
сборка фронта (`npm ci && npm run build`). Сборка — 0 warnings/0 errors (`TreatWarningsAsErrors`).
- Готовый workflow: `.github/workflows/ci.yml` (setup-dotnet 10 + setup-node 20 → `sh scripts/ci.sh`);
первый прогон в удалённом CI — при публикации репозитория.
- Нагрузочный прогон: `scripts/loadtest/` (bash+curl и k6-вариант; логин admin/admin → контейнеры/карточки;
RPS/avg/p95; см. README рядом).
- Доставка на VPS: сборка образов → `docker compose ... up -d --build`.
- Внешний CI/SAST и k8s — вне этапа (заделы). Скан уязвимостей зависимостей выполнен вручную
(`dotnet list package --vulnerable`, `npm audit`) — чисто на 2026-09-10.
- Результат локального прогона `scripts/ci.sh` (2026-09-11): core 1315, telegram 130, ai 52, ml 38,
storage 9 — всё PASS; фронт `lint:i18n`/`build` зелёные. k8s — вне этапа (задел).
---
@@ -942,8 +946,9 @@ docker exec deal-postgres psql -U deal -d deal -c '\dt tenant_*.*'
### 6. Тесты и сборка (из корня репозитория)
```sh
sh scripts/build.sh # dotnet build Deal.sln (ожидается 0 warnings / 0 errors)
sh scripts/test.sh # dotnet test tests/Deal.Tests.Unit (ожидается 1275 PASS — этап 12)
sh scripts/build.sh # сборка всех 5 решений (0 warnings / 0 errors)
sh scripts/test.sh # тесты всех сервисов + lint:i18n (core 1315, telegram 130, ai 52, ml 38, storage 9)
sh scripts/ci.sh # полный CI-прогон: build + test + скан уязвимостей + сборка фронта
```
Сквозные приёмки этапов — curl-сценарии на :5080 в `.superpowers/sdd/deal-stage{4,5}-projects/`