# Единый merge gate: тесты, ktlint и detekt. # Testcontainers поднимает PostgreSQL 18 через Docker-in-Docker, поэтому runner # должен разрешать privileged-сервисы (docker:dind) и сеть до docker:2375. stages: - check - release-evidence variables: GRADLE_OPTS: "-Dorg.gradle.daemon=false" GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle" DOCKER_HOST: "tcp://docker:2375" DOCKER_TLS_CERTDIR: "" TESTCONTAINERS_HOST_OVERRIDE: "docker" check: stage: check image: eclipse-temurin:21-jdk services: - name: docker:27-dind alias: docker cache: key: "gradle-$CI_COMMIT_REF_SLUG" paths: - .gradle/caches - .gradle/wrapper script: - ./gradlew --no-daemon test ktlintCheck detekt evidenceCheck artifacts: when: always paths: - build/reports/evidence/index.md rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_COMMIT_BRANCH' # Ручной release gate: runtime, mutation и browser evidence. # Нужен privileged docker:dind; Chromium и Node ставятся в before_script. release-evidence: stage: release-evidence image: eclipse-temurin:21-jdk services: - name: docker:27-dind alias: docker before_script: - apt-get update - apt-get install -y nodejs npm - cd e2e && npm ci && npx playwright install --with-deps chromium && cd .. cache: key: "gradle-$CI_COMMIT_REF_SLUG" paths: - .gradle/caches - .gradle/wrapper script: - ./scripts/ldd-release.sh artifacts: when: always paths: - build/evidence/ - build/reports/evidence/ rules: - if: '$CI_COMMIT_BRANCH' when: manual