ci: изолировать пайплайны на отдельной VM
- Woodpecker workflows требуют агент с меткой isolation=dedicated-vm - шаги выполняются в lms-ci:1 с nested dockerd, без хост-Docker сокета - ci/Dockerfile: прогретый immutable-образ (Java, Python, Node, Gradle-кэш) - ci-dind.sh поднимает dockerd внутри privileged-шага; ci-build-image.sh собирает образ - deploy/WOODPECKER.md: отдельная VM, firewall, отсутствие production-секретов, trusted repo, чек-лист безопасности
This commit is contained in:
@@ -190,8 +190,9 @@ legacy-активов на production, сдачи по выбранной лаб
|
||||
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).
|
||||
веток. Агент — Docker backend на отдельной VM, шаги в nested dind; 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`
|
||||
@@ -323,10 +324,10 @@ legacy-активов на production, сдачи по выбранной лаб
|
||||
1. **Прогнать инвентаризацию legacy-активов на production/staging** через
|
||||
`/admin/legacy-assets` или `scripts/legacy-assets.sh`, привязать нужные
|
||||
файлы к статьям, остальные удалить.
|
||||
2. **Развернуть Woodpecker и проверить CI.** Поднять server и local-backend
|
||||
агент по [`deploy/WOODPECKER.md`](../deploy/WOODPECKER.md), включить
|
||||
репозиторий, дождаться зелёных `check`/`smoke` на push-MR и `release` на
|
||||
теге.
|
||||
2. **Развернуть Woodpecker и проверить CI.** Поднять server и Docker-backend
|
||||
агент на отдельной VM по [`deploy/WOODPECKER.md`](../deploy/WOODPECKER.md),
|
||||
включить репозиторий, дождаться зелёных `check`/`smoke` на push-MR и
|
||||
`release` на теге.
|
||||
3. **Дальнейшее расширение E2E** — визуальная регрессия и остальные мобильные
|
||||
страницы, если UI продолжит расти.
|
||||
4. **Пакетные сдачи ведомости**, если появятся курсы, где открытие ведомости
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# 17. Handoff: состояние проекта после закрытия продуктовых рисков
|
||||
|
||||
**Дата:** 2026-10-28.
|
||||
**Ветка:** `feature/groups-courses` (последняя история — `git log --oneline`).
|
||||
**HEAD до переделки CI:** `d98c3b0` (`feat: закрыть остаточный backlog`);
|
||||
история CI-правки — следующий коммит в `git log`.
|
||||
**Ветка:** `feature/groups-courses`.
|
||||
**История:** `git log --oneline`; последние изменения — Woodpecker CI и
|
||||
изоляция тестовой среды на отдельной VM.
|
||||
**Пуш:** не выполнялся.
|
||||
**Рабочее дерево:** чистое. `exports/` и `texput.log` игнорируются и в коммиты не входят.
|
||||
|
||||
@@ -129,6 +129,8 @@
|
||||
вход админа, один курс;
|
||||
- `release` на тег или вручную: тесты, миграции, mutation, runtime/load,
|
||||
browser E2E, финальный evidence.
|
||||
- workflows требуют метку `isolation=dedicated-vm`; шаги идут в nested dind
|
||||
без хост-Docker сокета, агент — на отдельной VM без production-доступа.
|
||||
- `scripts/ci-preflight.sh` проверяет Java 21, Docker Compose v2, Python 3,
|
||||
Node и Playwright. Установка server/agent — `deploy/WOODPECKER.md`.
|
||||
- Первый реальный Woodpecker pipeline ещё не подтверждён.
|
||||
@@ -211,11 +213,10 @@ cat build/reports/evidence/index.md
|
||||
у обычных пользователей.
|
||||
|
||||
2. **Первый реальный CI-прогон.**
|
||||
Развернуть Woodpecker server и local-backend агент по
|
||||
Развернуть Woodpecker server и Docker-backend агент на отдельной VM по
|
||||
`deploy/WOODPECKER.md`, включить репозиторий в Woodpecker и дождаться
|
||||
зелёных workflow `check`/`smoke` на push-MR и `release` на теге. Агенту
|
||||
нужны Java 21, Docker Compose v2, Python 3, Node и браузеры
|
||||
Chromium/Firefox/WebKit.
|
||||
зелёных workflow `check`/`smoke` на push-MR и `release` на теге. Шаги идут
|
||||
в nested dind; VM не имеет доступа к production и production-секретам.
|
||||
|
||||
3. **Визуальная регрессия и мобильный набор E2E.**
|
||||
Сейчас 6 сценариев × 3 браузера, без screenshot-diff. Добавлять по мере
|
||||
@@ -299,7 +300,9 @@ cat build/reports/evidence/index.md
|
||||
`SessionCookieRefreshFilter.kt`.
|
||||
- `web/.../admin/AdminAuditController.kt`, `LegacyAssetsController.kt`.
|
||||
- `services/gateway/.../JwtAuthenticationFilter.kt`.
|
||||
- `scripts/ldd-*.sh`, `scripts/ci-preflight.sh`, `scripts/legacy-assets.sh`.
|
||||
- `scripts/ldd-*.sh`, `scripts/ci-preflight.sh`, `scripts/ci-dind.sh`,
|
||||
`scripts/ci-build-image.sh`, `scripts/legacy-assets.sh`.
|
||||
- `.woodpecker/{check,smoke,release}.yaml` — CI на Gitea + Woodpecker.
|
||||
- `ci/Dockerfile` — прогретый образ `lms-ci:1` для изолированного dind.
|
||||
- `deploy/backup.sh`, `deploy/deploy.sh`, `deploy/DEPLOY.md`,
|
||||
`deploy/WOODPECKER.md`.
|
||||
|
||||
@@ -240,6 +240,8 @@ mutation, runtime + scale и browser E2E, затем финальный `evidenc
|
||||
на каждом push/MR, после `check`;
|
||||
- `release` — полный `ldd-release.sh` с Chromium/Firefox/WebKit и Node:
|
||||
обязателен для тегов, для веток запускается вручную.
|
||||
- workflows требуют метку `isolation=dedicated-vm`; агент работает на
|
||||
отдельной VM, шаги — в `lms-ci:1` с nested dockerd и без хост-Docker сокета.
|
||||
- smoke/release начинаются с `scripts/ci-preflight.sh`, который проверяет
|
||||
Java 21, Docker Compose v2, Python 3, Node и Playwright.
|
||||
- Первый реальный прогон на Woodpecker-агенте ещё не подтверждён; локальные
|
||||
@@ -293,8 +295,8 @@ optional json fields`.
|
||||
6. **Инвентаризация legacy-активов на production не выполнена.** UI, API и
|
||||
скрипт готовы, но реальные файлы нужно привязать или удалить вручную.
|
||||
7. **Первый CI-прогон не подтверждён.** Конфигурация `.woodpecker/` и
|
||||
preflight готовы, но Woodpecker-сервер и local-backend агент ещё нужно
|
||||
развернуть и проверить на первом push-MR и теге.
|
||||
preflight готовы, но Woodpecker-сервер и Docker-backend агент на отдельной
|
||||
VM ещё нужно развернуть и проверить на первом push-MR и теге.
|
||||
8. **Полный release не на каждом коммите.** На push/MR идёт smoke,
|
||||
а mutation/browser/scale — для тегов или вручную.
|
||||
9. **Интеграция «Контингент» исключена из плана** — без нового ТЗ и доступа к
|
||||
|
||||
Reference in New Issue
Block a user