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:
2026-10-28 22:50:23 +03:00
parent 685916c4bd
commit f3d614bb33
15 changed files with 287 additions and 137 deletions

View File

@@ -1,18 +1,22 @@
# Merge gate: тесты, линтеры и evidence.
# Выполняется на Woodpecker-агенте с local backend: нужны Java 21, Docker
# (Testcontainers), Docker Compose v2, Python 3 и bash.
# Merge gate: тесты, линтеры и evidence в изолированном Docker-in-Docker.
# Агент с меткой isolation=dedicated-vm работает на отдельной VM; хост-Docker
# сокет в шаг не монтируется.
labels:
isolation: dedicated-vm
when:
- event: [push, pull_request]
steps:
- name: check
image: bash
image: lms-ci:1
privileged: true
environment:
DOCKER_HOST: unix:///var/run/docker.sock
commands:
- ./scripts/ci-preflight.sh
- ./scripts/ci-dind.sh
- ./gradlew --no-daemon test ktlintCheck detekt evidenceCheck
# Один общий слот: smoke/release поднимают реальный стек на localhost,
# параллельный запуск занял бы порты 8080–8090.
concurrency:
limit: 1
group: lms-ci