- 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, чек-лист безопасности
25 lines
1.1 KiB
Docker
25 lines
1.1 KiB
Docker
# Предварительно прогретый CI-образ для Woodpecker.
|
||
# Сборка на CI VM (доверенный администратором коммит):
|
||
# ./scripts/ci-build-image.sh lms-ci:1
|
||
# Образ содержит только зависимости; исходники в пайплайне берутся из checkout.
|
||
FROM docker:27-dind
|
||
|
||
RUN apk add --no-cache openjdk21-jdk python3 bash
|
||
|
||
WORKDIR /opt/lms-warmup
|
||
|
||
COPY gradle gradle
|
||
COPY gradlew settings.gradle.kts build.gradle.kts gradle.properties ./
|
||
COPY buildSrc buildSrc
|
||
COPY config config
|
||
COPY libs libs
|
||
COPY services services
|
||
COPY web web
|
||
|
||
# Прогреваем Gradle-кэш и плагины. Это ускоряет check/smoke/release,
|
||
# при этом кэш остаётся внутри неизменяемого образа, а не в общем volume.
|
||
RUN ./gradlew --no-daemon testClasses --console=plain
|
||
|
||
# Исходники нужны были только для прогрева кэша; в образе их не оставляем.
|
||
RUN rm -rf /opt/lms-warmup
|