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:
@@ -76,8 +76,8 @@
|
||||
После закрытия рисков актуальный LDD-baseline — **346 тестов, 0 failures**
|
||||
(см. раздел 7). `ktlintCheck` и `detekt` прошли без замечаний. У gateway теперь есть unit-тесты публичных auth-путей и 401; маршрутизация
|
||||
gateway дополнительно проверена конфигурацией и security-матрицей ниже.
|
||||
Тот же набор команд выполняет `.gitlab-ci.yml`; на каждый push/MR добавлен
|
||||
smoke-job, полный release-evidence обязателен для тегов.
|
||||
Тот же набор команд выполняет `.woodpecker/` (Gitea + Woodpecker 3.x); на
|
||||
каждый push/MR добавлен smoke-workflow, полный release обязателен для тегов.
|
||||
|
||||
### 2.2. Upgrade-тест миграций
|
||||
|
||||
@@ -186,13 +186,12 @@ legacy-активов на production, сдачи по выбранной лаб
|
||||
Там же задан `LMS_DB_PASSWORD`; `.env.prod` не коммитится.
|
||||
- [ ] Проверить, что на сервере нет незакоммиченных изменений и выполнен
|
||||
`git pull` нужной ветки/тега.
|
||||
- [ ] **CI зелёный.** `.gitlab-ci.yml` на каждом push/MR выполняет
|
||||
`test ktlintCheck detekt evidenceCheck` и job `smoke`
|
||||
(`scripts/ldd-smoke.sh`: полный стек, health, вход админа, один курс).
|
||||
Полный `release-evidence` обязателен для тегов и запускается вручную для
|
||||
веток. `check` использует privileged-сервисы `docker:dind` для Testcontainers;
|
||||
`smoke`/`release-evidence` — shell-runner с Java 21, Docker Compose v2,
|
||||
Python 3, Node и Chromium Playwright.
|
||||
- [ ] **CI зелёный.** `.woodpecker/` (Gitea + Woodpecker 3.x) на каждом
|
||||
push/MR выполняет workflow `check` (`test ktlintCheck detekt evidenceCheck`)
|
||||
и `smoke` (`scripts/ldd-smoke.sh`: полный стек, health, вход админа, один
|
||||
курс). Полный `release` обязателен для тегов и запускается вручную для
|
||||
веток. Агент — local backend с Java 21, Docker Compose v2, Python 3, Node и
|
||||
Chromium/Firefox/WebKit; установка — [`deploy/WOODPECKER.md`](../deploy/WOODPECKER.md).
|
||||
- [ ] Заданы сроки сессии: `LMS_ACCESS_TOKEN_TTL=15m`,
|
||||
`LMS_REFRESH_TOKEN_TTL=7d`, `LMS_SESSION_TIMEOUT=7d`,
|
||||
`LMS_SESSION_ABSOLUTE_TIMEOUT=30d`, `LMS_REFRESH_TOKEN_RETENTION=30d`
|
||||
@@ -306,9 +305,9 @@ legacy-активов на production, сдачи по выбранной лаб
|
||||
WebKit = 18/18, но нет screenshot-diff и полного набора мобильных страниц.
|
||||
На Fedora WebKit запускается через Docker-образ Playwright, потому что
|
||||
системных Ubuntu-библиотек нет.
|
||||
5. **Первый реальный CI-прогон не подтверждён.** Конфигурация, smoke и
|
||||
`scripts/ci-preflight.sh` готовы, но наличие GitLab shell-runners с тегами
|
||||
`lms-shell`/`lms-release` и первый tag-job нужно проверить в GitLab.
|
||||
5. **Первый реальный CI-прогон не подтверждён.** Конфигурация `.woodpecker/`,
|
||||
smoke и `scripts/ci-preflight.sh` готовы, но Woodpecker-сервер и агент на
|
||||
сервере ещё нужно развернуть и проверить первый push-MR pipeline и tag-job.
|
||||
6. **Внешняя интеграция «Контингент» исключена из плана.** Отдельного
|
||||
anti-corruption слоя, синхронизации и внешних идентификаторов не будет без
|
||||
нового ТЗ и доступа к API.
|
||||
@@ -324,10 +323,10 @@ legacy-активов на production, сдачи по выбранной лаб
|
||||
1. **Прогнать инвентаризацию legacy-активов на production/staging** через
|
||||
`/admin/legacy-assets` или `scripts/legacy-assets.sh`, привязать нужные
|
||||
файлы к статьям, остальные удалить.
|
||||
2. **Проверить CI на реальном runner.** Убедиться, что есть shell-runners
|
||||
`lms-shell`/`lms-release` с Java 21, Docker Compose v2, Python 3,
|
||||
Node/Chromium/Firefox/WebKit; дождаться зелёного push-MR pipeline и
|
||||
tag-job `release-evidence`.
|
||||
2. **Развернуть Woodpecker и проверить CI.** Поднять server и local-backend
|
||||
агент по [`deploy/WOODPECKER.md`](../deploy/WOODPECKER.md), включить
|
||||
репозиторий, дождаться зелёных `check`/`smoke` на push-MR и `release` на
|
||||
теге.
|
||||
3. **Дальнейшее расширение E2E** — визуальная регрессия и остальные мобильные
|
||||
страницы, если UI продолжит расти.
|
||||
4. **Пакетные сдачи ведомости**, если появятся курсы, где открытие ведомости
|
||||
@@ -348,13 +347,13 @@ web-сессия с отзывом и абсолютным потолком, key
|
||||
|
||||
После этапа 6 и закрытия рисков текущая функциональность проверена через
|
||||
LDD-контур: реестр `docs/evidence/claims.json` (**51 claims, 25 P0 / 26 P1**),
|
||||
gate `./gradlew evidenceCheck`, upgrade-скрипт, runtime-smoke, smoke-job,
|
||||
gate `./gradlew evidenceCheck`, upgrade-скрипт, runtime-smoke, smoke-workflow,
|
||||
mutation testing и браузерный Playwright E2E. Результат:
|
||||
**51/51 claims proven, P0 gaps = 0, 346 тестов, 0 failures**; mutation strength
|
||||
`CourseAccessService` 75%, `PromotionPlanner` 69%; browser E2E 18/18 (6 сценариев × Chromium/Firefox/WebKit);
|
||||
конкурентные apply/rollback и масштабный нагрузочный smoke (100 групп /
|
||||
1000 студентов, 125 параллельных чтений, 0 ошибок, p95 < 1 с) зелёные.
|
||||
Smoke-job выполняется на каждом push/MR, полный `release-evidence` обязателен
|
||||
Workflow `smoke` выполняется на каждом push/MR, полный `release` обязателен
|
||||
для тегов и доступен вручную для веток. E2E нашёл и закрыл реальный дефект
|
||||
Jackson 3/Kotlin defaults. Подробности и остаточные ограничения —
|
||||
[`docs/evidence/baseline-2026-10-27.md`](evidence/baseline-2026-10-27.md).
|
||||
|
||||
Reference in New Issue
Block a user