84 lines
2.4 KiB
YAML
84 lines
2.4 KiB
YAML
# Единый merge gate: тесты, ktlint и detekt.
|
||
# Testcontainers поднимает PostgreSQL 18 через Docker-in-Docker, поэтому runner
|
||
# должен разрешать privileged-сервисы (docker:dind) и сеть до docker:2375.
|
||
stages:
|
||
- check
|
||
- smoke
|
||
- 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'
|
||
|
||
# Дымовой тест на каждый push/MR: полный стек на одноразовой БД, health,
|
||
# вход и один доменный сценарий. Полный release gate — ниже.
|
||
smoke:
|
||
stage: smoke
|
||
# Shell-runner: скрипт поднимает реальный стек на localhost и проверяет его.
|
||
# На runner нужны Java 21, Docker Compose v2, Python 3 и bash.
|
||
tags: [lms-shell]
|
||
cache:
|
||
key: "gradle-$CI_COMMIT_REF_SLUG"
|
||
paths:
|
||
- .gradle/caches
|
||
- .gradle/wrapper
|
||
script:
|
||
- ./scripts/ldd-smoke.sh
|
||
artifacts:
|
||
when: always
|
||
paths:
|
||
- build/evidence/smoke.json
|
||
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
|
||
# Shell-runner с Java 21, Docker Compose v2, Node 22, Chromium Playwright.
|
||
tags: [lms-release]
|
||
before_script:
|
||
- cd e2e && npm ci && npx playwright install 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_TAG'
|
||
when: on_success
|
||
- if: '$CI_COMMIT_BRANCH'
|
||
when: manual
|