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

9
scripts/ci-build-image.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Собирает предварительно прогретый CI-образ на CI VM.
# Образ immutable: исходники пайплайна берутся из checkout, кэш Gradle — из образа.
set -euo pipefail
cd "$(dirname "$0")/.."
tag="${1:-lms-ci:1}"
docker build -f ci/Dockerfile -t "$tag" .
echo "Готово: $tag"
echo "Образ используется в .woodpecker/*.yaml как image: $tag"