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:
@@ -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
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
# Полный release gate: тесты, миграции, mutation, runtime/scale и
|
||||
# Chromium/Firefox/WebKit E2E. Запускается на тег или вручную.
|
||||
# Полный release gate в изолированном Docker-in-Docker-шаге на отдельной VM.
|
||||
# Запускается на тег или вручную. Хост-Docker сокет не монтируется.
|
||||
labels:
|
||||
isolation: dedicated-vm
|
||||
|
||||
when:
|
||||
- event: [tag, manual]
|
||||
|
||||
steps:
|
||||
- name: release
|
||||
image: bash
|
||||
image: lms-ci:1
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
commands:
|
||||
# ldd-migration-upgrade.sh сравнивает ветку с master; в CI клон может быть shallow.
|
||||
- git fetch --unshallow origin || true
|
||||
- git fetch origin master:refs/heads/master || true
|
||||
- ./scripts/ci-dind.sh
|
||||
- cd e2e && npm ci && cd ..
|
||||
- ./scripts/ci-preflight.sh --release
|
||||
- ./scripts/ldd-release.sh
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# Дымовой тест на каждый push/MR: полный стек, health, вход админа,
|
||||
# один доменный сценарий. Полный release gate — в release.yaml.
|
||||
# Дымовой тест на каждый push/MR в изолированном Docker-in-Docker-шаге.
|
||||
# Шаг сам поднимает dockerd внутри себя, поэтому не получает хост-Docker сокет.
|
||||
labels:
|
||||
isolation: dedicated-vm
|
||||
|
||||
when:
|
||||
- event: [push, pull_request]
|
||||
|
||||
@@ -8,8 +11,12 @@ depends_on:
|
||||
|
||||
steps:
|
||||
- name: smoke
|
||||
image: bash
|
||||
image: lms-ci:1
|
||||
privileged: true
|
||||
environment:
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
commands:
|
||||
- ./scripts/ci-dind.sh
|
||||
- ./scripts/ci-preflight.sh
|
||||
- ./scripts/ldd-smoke.sh
|
||||
|
||||
|
||||
Reference in New Issue
Block a user