From cbaf4e6c9ae768a079bc1ab94c8a49c37b4bf741 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Tue, 5 May 2026 20:24:44 +0300 Subject: [PATCH] =?UTF-8?q?ci(e2e):=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20maven-e2e=20job=20+=20surefire=20profile?= =?UTF-8?q?=20e2e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ordinis-app/pom.xml: - surefire excludes **/e2e/*E2ETest.java по умолчанию (быстрые unit без Docker) - profile `e2e`: combine.self override снимает excludes + includes только e2e .gitlab-ci.yml: новый job maven-e2e: - maven image + docker:29.1.2-dind service (тот же что docker-* jobs) - DOCKER_HOST=tcp://docker:2375, TESTCONTAINERS_HOST_OVERRIDE=docker, RYUK_DISABLED=true - mvn -pl ordinis-app -am -P e2e test - artifact: junit reports - rules: backend-changes (как maven-test) Локально: mvn -pl ordinis-app -am test # быстро, без Docker mvn -pl ordinis-app -am -P e2e test # с Docker, ~23 sec для 12 тестов В CI оба job'а параллельно после path-filter. e2e будет ловить регрессии типа audit_log INET/scope filter gap которые мы уже нашли через эти тесты. --- .gitlab-ci.yml | 28 ++++++++++++++++++++++++++++ ordinis-app/pom.xml | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ba21327..ad636ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -68,6 +68,34 @@ maven-test: rules: - changes: *backend-changes +# Е2Е тесты через Testcontainers (Postgres+Kafka). Профиль `e2e` в +# ordinis-app/pom.xml включает их (default surefire excludes e2e директорию). +# Требует docker:dind service для testcontainers — обычный maven-test runner +# не имеет Docker. +maven-e2e: + stage: test + image: repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 + services: + - name: repo.nstart.cloud/library/docker:29.1.2-dind + alias: docker + command: ["--tls=false"] + variables: + DOCKER_HOST: "tcp://docker:2375" + DOCKER_TLS_CERTDIR: "" + TESTCONTAINERS_HOST_OVERRIDE: "docker" + TESTCONTAINERS_RYUK_DISABLED: "true" + script: + - for i in $(seq 1 30); do docker -H tcp://docker:2375 info >/dev/null 2>&1 && break; sleep 1; done + - mvn $MAVEN_CLI_OPTS -pl ordinis-app -am -P e2e test + artifacts: + when: always + reports: + junit: '**/target/surefire-reports/TEST-*.xml' + expire_in: 1 week + rules: + - changes: *backend-changes + # Можно сделать allow_failure: true если e2e будут флакать — пока нет. + # ─── BUILD (Maven jars) ──────────────────────── # maven-package всегда запускается: docker backend jobs нуждаются в jar даже # при frontend-only PR (иначе backend образы не пересобрать → ImagePullBackOff diff --git a/ordinis-app/pom.xml b/ordinis-app/pom.xml index 657e6a4..2b5d1a0 100644 --- a/ordinis-app/pom.xml +++ b/ordinis-app/pom.xml @@ -119,6 +119,12 @@ org.apache.maven.plugins maven-surefire-plugin + + + **/e2e/*E2ETest.java + @@ -126,6 +132,10 @@ ${env.DOCKER_HOST} 1.45 true + + ${env.TESTCONTAINERS_HOST_OVERRIDE} 1.45 @@ -134,4 +144,26 @@ + + + + + e2e + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + **/e2e/*E2ETest.java + + + + + + +