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:
@@ -14,7 +14,7 @@
|
||||
блокирует сборку.
|
||||
- **runtime** — проверка на реально поднятом стеке. Быстрый smoke
|
||||
(`scripts/ldd-smoke.sh`) выполняется в CI на каждом push/MR; полный
|
||||
runtime/scale — в `release-evidence` и обязателен перед релизом.
|
||||
runtime/scale — в workflow `release` и обязателен перед релизом.
|
||||
|
||||
## Реестр
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
# 2. Гейт свидетельств (P0 без evidence = fail)
|
||||
./gradlew evidenceCheck
|
||||
|
||||
# 3. Быстрый smoke полного стека (то же, что CI job smoke)
|
||||
# 3. Быстрый smoke полного стека (то же, что workflow smoke)
|
||||
./scripts/ldd-smoke.sh
|
||||
|
||||
# 4. Полный runtime-smoke + scale load на одноразовой БД
|
||||
@@ -101,9 +101,9 @@ LDD-циклы выполнены 2026-10-27/28; последний — посл
|
||||
все зелёные;
|
||||
- масштабный load: 100 групп / 1000 студентов, 125 параллельных чтений,
|
||||
0 ошибок, p95 < 1 с (порог p95 < 2 с);
|
||||
- CI: job `smoke` (`ldd-smoke.sh`) на каждом push/MR; полный
|
||||
`release-evidence` (`ldd-release.sh`) обязателен для тегов и ручной для
|
||||
веток.
|
||||
- CI: Gitea + Woodpecker, workflow `smoke` (`ldd-smoke.sh`) на каждом push/MR;
|
||||
полный `release` (`ldd-release.sh`) обязателен для тегов и ручной для веток.
|
||||
Установка — `deploy/WOODPECKER.md`.
|
||||
|
||||
В ходе E2E найден и исправлен реальный дефект: Jackson 3 не применял
|
||||
Kotlin-модуль, поэтому DTO с default-значениями требовали все поля JSON
|
||||
|
||||
@@ -87,7 +87,7 @@ identity `V4–V13`, academic `V6–V12`, progress `V13`.
|
||||
|
||||
```bash
|
||||
./scripts/ldd-runtime.sh
|
||||
./scripts/ldd-smoke.sh # то же, что CI job smoke
|
||||
./scripts/ldd-smoke.sh # то же, что CI workflow smoke
|
||||
```
|
||||
|
||||
Сценарий: одноразовая БД, `bootJar`, запуск identity/academic/progress/gateway/web,
|
||||
@@ -106,8 +106,9 @@ identity `V4–V13`, academic `V6–V12`, progress `V13`.
|
||||
материалы анонимно — `401`.
|
||||
|
||||
`ldd-smoke.sh` выполняет тот же полный стек, health, вход админа и один
|
||||
доменный сценарий; это обязательный job `.gitlab-ci.yml` на каждом push/MR,
|
||||
поэтому базовый runtime-контур проверяется до merge, а не только перед релизом.
|
||||
доменный сценарий; это обязательный workflow `.woodpecker/smoke.yaml` на
|
||||
каждом push/MR, поэтому базовый runtime-контур проверяется до merge, а не
|
||||
только перед релизом.
|
||||
|
||||
Результат: **PASS**, evidence: `build/evidence/runtime.json` и
|
||||
`build/evidence/smoke.json`.
|
||||
@@ -232,17 +233,17 @@ advisory lock): два одновременных apply идемпотентны
|
||||
`./scripts/ldd-release.sh` последовательно запускает тесты/линтеры, upgrade,
|
||||
mutation, runtime + scale и browser E2E, затем финальный `evidenceCheck`.
|
||||
|
||||
В `.gitlab-ci.yml`:
|
||||
В `.woodpecker/` (Gitea + Woodpecker 3.x):
|
||||
|
||||
- `check` — `test ktlintCheck detekt evidenceCheck` на push/MR;
|
||||
- `smoke` — `ldd-smoke.sh` (полный стек, health, вход админа, один курс)
|
||||
на каждом push/MR;
|
||||
- `release-evidence` — полный `ldd-release.sh` с Chromium/Firefox/WebKit и
|
||||
Node: обязателен для тегов, для веток запускается вручную.
|
||||
на каждом push/MR, после `check`;
|
||||
- `release` — полный `ldd-release.sh` с Chromium/Firefox/WebKit и Node:
|
||||
обязателен для тегов, для веток запускается вручную.
|
||||
- smoke/release начинаются с `scripts/ci-preflight.sh`, который проверяет
|
||||
Java 21, Docker Compose v2, Python 3, Node и Playwright.
|
||||
- Первый реальный прогон на GitLab shell-runners ещё не подтверждён; локальные
|
||||
скрипты и конфигурация проверены.
|
||||
- Первый реальный прогон на Woodpecker-агенте ещё не подтверждён; локальные
|
||||
скрипты и конфигурация проверены, установка — `deploy/WOODPECKER.md`.
|
||||
|
||||
### 2.12. Найденный дефект
|
||||
|
||||
@@ -291,9 +292,10 @@ optional json fields`.
|
||||
это не N+1 по студентам, но и не пакетная выборка.
|
||||
6. **Инвентаризация legacy-активов на production не выполнена.** UI, API и
|
||||
скрипт готовы, но реальные файлы нужно привязать или удалить вручную.
|
||||
7. **Первый CI-прогон не подтверждён.** Конфигурация и preflight готовы, но
|
||||
наличие shell-runners `lms-shell`/`lms-release` проверяется в GitLab.
|
||||
8. **Полный release-evidence не на каждом коммите.** На push/MR идёт smoke,
|
||||
7. **Первый CI-прогон не подтверждён.** Конфигурация `.woodpecker/` и
|
||||
preflight готовы, но Woodpecker-сервер и local-backend агент ещё нужно
|
||||
развернуть и проверить на первом push-MR и теге.
|
||||
8. **Полный release не на каждом коммите.** На push/MR идёт smoke,
|
||||
а mutation/browser/scale — для тегов или вручную.
|
||||
9. **Интеграция «Контингент» исключена из плана** — без нового ТЗ и доступа к
|
||||
API она не проверялась и не реализуется.
|
||||
@@ -312,7 +314,7 @@ optional json fields`.
|
||||
1. прогнать инвентаризацию legacy-активов на production/staging через
|
||||
`/admin/legacy-assets` или `scripts/legacy-assets.sh` и привязать/удалить
|
||||
найденные файлы;
|
||||
2. подтвердить первый реальный CI-прогон на shell-runners и tag-job;
|
||||
2. развернуть Woodpecker и подтвердить первый push-MR pipeline и tag-job;
|
||||
3. при необходимости расширить E2E на визуальную регрессию и остальные
|
||||
мобильные страницы;
|
||||
4. пакетно отдавать сдачи в ведомости, если появятся медленные курсы.
|
||||
|
||||
Reference in New Issue
Block a user