ci: перевести merge gate на Gitea + Woodpecker

- .woodpecker/check.yaml, smoke.yaml, release.yaml
- local-backend агент: Java 21, Docker Compose v2, Python 3, Node/Playwright
- concurrency lms-ci, чтобы smoke/release не занимали порты одновременно
- deploy/WOODPECKER.md: server, OAuth Gitea, systemd-агент, security note
- удалён .gitlab-ci.yml
This commit is contained in:
2026-10-28 20:11:14 +03:00
parent 1e1e9ae0e4
commit 685916c4bd
13 changed files with 310 additions and 161 deletions

View File

@@ -2,7 +2,8 @@
**Дата:** 2026-10-28.
**Ветка:** `feature/groups-courses` (последняя история — `git log --oneline`).
**Последний коммит перед этой итерацией:** `3aae2b8` (`docs: handoff после закрытия продуктовых рисков`).
**HEAD до переделки CI:** `d98c3b0` (`feat: закрыть остаточный backlog`);
история CI-правки — следующий коммит в `git log`.
**Пуш:** не выполнялся.
**Рабочее дерево:** чистое. `exports/` и `texput.log` игнорируются и в коммиты не входят.
@@ -122,13 +123,15 @@
инвентаризация активов).
- Runtime/load: 100 групп / 1000 студентов, 125 параллельных чтений,
0 ошибок, p95 < 1 c.
- CI:
- CI: Gitea + Woodpecker 3.x, конфигурация в `.woodpecker/`:
- `check` на push/MR: тесты, ktlint, detekt, `evidenceCheck`;
- `smoke` на push/MR: preflight + полный стек, health, вход админа, один курс;
- `release-evidence` обязателен для тегов, вручную для веток: тесты,
миграции, mutation, runtime/load, browser E2E, финальный evidence.
- `smoke` на push/MR: после `check` — preflight + полный стек, health,
вход админа, один курс;
- `release` на тег или вручную: тесты, миграции, mutation, runtime/load,
browser E2E, финальный evidence.
- `scripts/ci-preflight.sh` проверяет Java 21, Docker Compose v2, Python 3,
Node и Playwright; первый реальный GitLab pipeline ещё не подтверждён.
Node и Playwright. Установка server/agent — `deploy/WOODPECKER.md`.
- Первый реальный Woodpecker pipeline ещё не подтверждён.
- Полный `./scripts/ldd-release.sh` локально прошёл; browser E2E — 18/18.
### 1.9. Миграции
@@ -172,7 +175,7 @@
# 2. Полный LDD release (долго, нужны Docker/Java/Node + Chromium/Firefox/WebKit)
./scripts/ldd-release.sh
# 3. Быстрый smoke (то же, что CI smoke)
# 3. Быстрый smoke (то же, что workflow smoke)
./scripts/ldd-smoke.sh
# 4. Отдельные проверки
@@ -208,11 +211,11 @@ cat build/reports/evidence/index.md
у обычных пользователей.
2. **Первый реальный CI-прогон.**
Конфиг, smoke и `scripts/ci-preflight.sh` готовы, но нужно убедиться, что в
GitLab есть shell-runners с тегами `lms-shell` (smoke) и `lms-release`
(полный release), Java 21, Docker Compose v2, Python 3, Node и браузерами
Chromium/Firefox/WebKit. `check` использует privileged `docker:dind`.
Дождаться зелёного push-MR pipeline и первого tag-job `release-evidence`.
Развернуть Woodpecker server и local-backend агент по
`deploy/WOODPECKER.md`, включить репозиторий в Woodpecker и дождаться
зелёных workflow `check`/`smoke` на push-MR и `release` на теге. Агенту
нужны Java 21, Docker Compose v2, Python 3, Node и браузеры
Chromium/Firefox/WebKit.
3. **Визуальная регрессия и мобильный набор E2E.**
Сейчас 6 сценариев × 3 браузера, без screenshot-diff. Добавлять по мере
@@ -297,4 +300,6 @@ cat build/reports/evidence/index.md
- `web/.../admin/AdminAuditController.kt`, `LegacyAssetsController.kt`.
- `services/gateway/.../JwtAuthenticationFilter.kt`.
- `scripts/ldd-*.sh`, `scripts/ci-preflight.sh`, `scripts/legacy-assets.sh`.
- `deploy/backup.sh`, `deploy/deploy.sh`, `deploy/DEPLOY.md`.
- `.woodpecker/{check,smoke,release}.yaml` — CI на Gitea + Woodpecker.
- `deploy/backup.sh`, `deploy/deploy.sh`, `deploy/DEPLOY.md`,
`deploy/WOODPECKER.md`.