Files
LMS/.gitlab-ci.yml

84 lines
2.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Единый 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