upgrade Java-25 Kotlin-2.3.0 usw.
This commit is contained in:
@@ -9,10 +9,10 @@ RESTART_POLICY=no
|
||||
|
||||
# Docker build versions (optional overrides)
|
||||
DOCKER_VERSION=1.0.0-SNAPSHOT
|
||||
DOCKER_BUILD_DATE=2025-12-04T15:00:00Z
|
||||
DOCKER_GRADLE_VERSION=9.1.0
|
||||
DOCKER_JAVA_VERSION=21
|
||||
DOCKER_NODE_VERSION=22.21.0
|
||||
DOCKER_BUILD_DATE=2025-12-22T15:00:00Z
|
||||
DOCKER_GRADLE_VERSION=9.2.1
|
||||
DOCKER_JAVA_VERSION=25
|
||||
DOCKER_NODE_VERSION=24.12.0
|
||||
DOCKER_NGINX_VERSION=1.28.0-alpine
|
||||
|
||||
# Postgres
|
||||
|
||||
+2
-2
@@ -47,7 +47,7 @@ GF_ADMIN_PASSWORD=admin
|
||||
|
||||
# Docker build versions (optional overrides)
|
||||
DOCKER_GRADLE_VERSION=9.1.0
|
||||
DOCKER_JAVA_VERSION=21
|
||||
DOCKER_NODE_VERSION=22.21.0
|
||||
DOCKER_JAVA_VERSION=25
|
||||
DOCKER_NODE_VERSION=24.12.0
|
||||
DOCKER_NGINX_VERSION=1.28.0-alpine
|
||||
WEB_BUILD_PROFILE=dev
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ node_modules/
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
_backup/logs/
|
||||
**/*.log
|
||||
|
||||
# Kotlin/Java
|
||||
|
||||
@@ -475,9 +475,7 @@ Das System integriert sich nahtlos in die bestehende Docker-Versionsverwaltung u
|
||||
|
||||
```dockerfile
|
||||
# BEFORE: Redundante Hardcodierung in 12+ Dockerfiles
|
||||
ARG GRADLE_VERSION=9.0.0
|
||||
ARG GRADLE_VERSION=9.0.0
|
||||
ARG GRADLE_VERSION=9.0.0
|
||||
ARG GRADLE_VERSION=9.2.1
|
||||
# ... 9 weitere Male identisch wiederholt!
|
||||
```
|
||||
|
||||
@@ -486,9 +484,9 @@ ARG GRADLE_VERSION=9.0.0
|
||||
```toml
|
||||
# docker/versions.toml - SINGLE SOURCE OF TRUTH
|
||||
[versions]
|
||||
gradle = "9.0.0"
|
||||
java = "21"
|
||||
node = "20.12.0"
|
||||
gradle = "9.2.1"
|
||||
java = "25"
|
||||
node = "24.12.0"
|
||||
nginx = "1.25-alpine"
|
||||
prometheus = "v2.54.1"
|
||||
grafana = "11.3.0"
|
||||
@@ -515,8 +513,8 @@ docker/
|
||||
Verwendet von **allen** Dockerfiles:
|
||||
```bash
|
||||
# --- Build Tools ---
|
||||
GRADLE_VERSION=9.0.0
|
||||
JAVA_VERSION=21
|
||||
GRADLE_VERSION=9.2.1
|
||||
JAVA_VERSION=25
|
||||
|
||||
# --- Build Metadata ---
|
||||
BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||||
@@ -545,7 +543,7 @@ MEMBERS_SERVICE_PORT=8083
|
||||
|
||||
**Clients** (`docker/build-args/clients.env`):
|
||||
```bash
|
||||
NODE_VERSION=20.11.0
|
||||
NODE_VERSION=24.12.0
|
||||
NGINX_VERSION=1.25-alpine
|
||||
WEB_APP_PORT=4000
|
||||
DESKTOP_APP_VNC_PORT=5901
|
||||
@@ -583,10 +581,10 @@ AUTH_SERVER_PORT=8087
|
||||
./scripts/docker-versions-update.sh show
|
||||
|
||||
# Java auf Version 22 upgraden
|
||||
./scripts/docker-versions-update.sh update java 22
|
||||
./scripts/docker-versions-update.sh update java 25
|
||||
|
||||
# Gradle auf 9.1.0 upgraden
|
||||
./scripts/docker-versions-update.sh update gradle 9.1.0
|
||||
./scripts/docker-versions-update.sh update gradle 9.2.1
|
||||
|
||||
# Prometheus auf neueste Version upgraden
|
||||
./scripts/docker-versions-update.sh update prometheus v2.54.1
|
||||
@@ -630,8 +628,8 @@ api-gateway:
|
||||
dockerfile: dockerfiles/infrastructure/gateway/Dockerfile
|
||||
args:
|
||||
# Zentrale Versionen via Environment-Variablen
|
||||
GRADLE_VERSION: ${DOCKER_GRADLE_VERSION:-9.0.0}
|
||||
JAVA_VERSION: ${DOCKER_JAVA_VERSION:-21}
|
||||
GRADLE_VERSION: ${DOCKER_GRADLE_VERSION:-9.2.1}
|
||||
JAVA_VERSION: ${DOCKER_JAVA_VERSION:-25}
|
||||
BUILD_DATE: ${BUILD_DATE}
|
||||
VERSION: ${DOCKER_APP_VERSION:-1.0.0}
|
||||
SPRING_PROFILES_ACTIVE: ${DOCKER_SPRING_PROFILES_DEFAULT:-default}
|
||||
@@ -641,15 +639,15 @@ api-gateway:
|
||||
|
||||
#### **DRY-Prinzip Durchsetzung**
|
||||
✅
|
||||
- **Vor Version 3.0.0**: `GRADLE_VERSION=9.0.0` in 12 Dockerfiles
|
||||
- **Ab Version 3.0.0**: `gradle = "9.0.0"` **einmalig** in `docker/versions.toml`
|
||||
- **Vor Version 3.0.0**: `GRADLE_VERSION=9.2.1` in 12 Dockerfiles
|
||||
- **Ab Version 3.0.0**: `gradle = "9.2.1"` **einmalig** in `docker/versions.toml`
|
||||
|
||||
#### **Wartungsaufwand drastisch reduziert** ✅
|
||||
|
||||
```bash
|
||||
# BEFORE: 12 Dateien manuell editieren für Gradle-Update
|
||||
# AFTER: Ein Befehl für alle Services
|
||||
./scripts/docker-versions-update.sh update gradle 9.1.0
|
||||
./scripts/docker-versions-update.sh update gradle 9.2.1
|
||||
```
|
||||
|
||||
#### **Konsistenz garantiert** ✅
|
||||
|
||||
@@ -126,8 +126,8 @@ docker/
|
||||
Verwendet von **allen** Dockerfiles:
|
||||
```bash
|
||||
# --- Build Tools ---
|
||||
GRADLE_VERSION=9.1.0
|
||||
JAVA_VERSION=21
|
||||
GRADLE_VERSION=9.2.1
|
||||
JAVA_VERSION=25
|
||||
|
||||
# --- Build Metadata ---
|
||||
BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||||
@@ -135,8 +135,8 @@ VERSION=1.0.0
|
||||
|
||||
# --- Common Base Images ---
|
||||
ALPINE_VERSION=3.19
|
||||
ECLIPSE_TEMURIN_JDK_VERSION=21-jdk-alpine
|
||||
ECLIPSE_TEMURIN_JRE_VERSION=21-jre-alpine
|
||||
ECLIPSE_TEMURIN_JDK_VERSION=25-jdk-alpine
|
||||
ECLIPSE_TEMURIN_JRE_VERSION=25-jre-alpine
|
||||
|
||||
# --- Monitoring & Infrastructure Services ---
|
||||
DOCKER_PROMETHEUS_VERSION=v2.54.1
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import org.springframework.test.context.ActiveProfiles
|
||||
|
||||
/**
|
||||
* Basis-Test zur Überprüfung, dass der Gateway-Anwendungskontext erfolgreich lädt.
|
||||
* Verwendet Test-Profil um Produktions-Filter und externe Abhängigkeiten zu deaktivieren.
|
||||
* Verwendet ein Test-Profil, um Produktions-Filter und externe Abhängigkeiten zu deaktivieren.
|
||||
*/
|
||||
@SpringBootTest(
|
||||
classes = [GatewayApplication::class],
|
||||
|
||||
+38
-73
@@ -1,3 +1,12 @@
|
||||
import groovy.json.JsonSlurper
|
||||
import io.gitlab.arturbosch.detekt.Detekt
|
||||
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jlleitschuh.gradle.ktlint.KtlintExtension
|
||||
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.util.zip.GZIPOutputStream
|
||||
|
||||
plugins {
|
||||
// Version management plugin for dependency updates
|
||||
id("com.github.ben-manes.versions") version "0.51.0"
|
||||
@@ -101,13 +110,13 @@ subprojects {
|
||||
environment("NODE_OPTIONS", merged)
|
||||
// Also set the legacy switch to silence warnings entirely
|
||||
environment("NODE_NO_WARNINGS", "1")
|
||||
// Set Chrome binary path to avoid snap permission issues
|
||||
// Set a Chrome binary path to avoid snap permission issues
|
||||
environment("CHROME_BIN", "/usr/bin/google-chrome-stable")
|
||||
environment("CHROMIUM_BIN", "/usr/bin/chromium")
|
||||
environment("PUPPETEER_EXECUTABLE_PATH", "/usr/bin/chromium")
|
||||
}
|
||||
|
||||
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
||||
tasks.withType<KotlinCompile> {
|
||||
compilerOptions {
|
||||
freeCompilerArgs.add("-Xannotation-default-target=param-property")
|
||||
}
|
||||
@@ -117,14 +126,14 @@ subprojects {
|
||||
// Detekt & Ktlint default setup
|
||||
// ------------------------------
|
||||
plugins.withId("io.gitlab.arturbosch.detekt") {
|
||||
extensions.configure(io.gitlab.arturbosch.detekt.extensions.DetektExtension::class.java) {
|
||||
extensions.configure(DetektExtension::class.java) {
|
||||
buildUponDefaultConfig = true
|
||||
allRules = false
|
||||
autoCorrect = false
|
||||
config.setFrom(files(rootProject.file("config/detekt/detekt.yml")))
|
||||
basePath = rootDir.absolutePath
|
||||
}
|
||||
tasks.withType<io.gitlab.arturbosch.detekt.Detekt>().configureEach {
|
||||
tasks.withType<Detekt>().configureEach {
|
||||
jvmTarget = "21"
|
||||
reports {
|
||||
xml.required.set(false)
|
||||
@@ -136,13 +145,13 @@ subprojects {
|
||||
}
|
||||
|
||||
plugins.withId("org.jlleitschuh.gradle.ktlint") {
|
||||
extensions.configure(org.jlleitschuh.gradle.ktlint.KtlintExtension::class.java) {
|
||||
extensions.configure(KtlintExtension::class.java) {
|
||||
android.set(false)
|
||||
outputToConsole.set(true)
|
||||
ignoreFailures.set(false)
|
||||
reporters {
|
||||
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.CHECKSTYLE)
|
||||
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.PLAIN)
|
||||
reporter(ReporterType.CHECKSTYLE)
|
||||
reporter(ReporterType.PLAIN)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -220,11 +229,11 @@ tasks.register("archGuardNoFeatureToFeatureDeps") {
|
||||
!n.contains("test") && !n.contains("debug") // ignore test/debug configs
|
||||
}
|
||||
.forEach { cfg ->
|
||||
cfg.dependencies.withType(org.gradle.api.artifacts.ProjectDependency::class.java).forEach { dep ->
|
||||
cfg.dependencies.withType(ProjectDependency::class.java).forEach { dep ->
|
||||
// Use reflection to avoid compile-time issues with dependencyProject property
|
||||
val proj =
|
||||
try {
|
||||
dep.javaClass.getMethod("getDependencyProject").invoke(dep) as org.gradle.api.Project
|
||||
dep.javaClass.getMethod("getDependencyProject").invoke(dep) as Project
|
||||
} catch (e: Throwable) {
|
||||
null
|
||||
}
|
||||
@@ -270,7 +279,7 @@ tasks.register("checkBundleBudget") {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val parsed =
|
||||
groovy.json.JsonSlurper().parseText(text) as Map<String, Map<String, Any?>>
|
||||
JsonSlurper().parseText(text) as Map<String, Map<String, Any?>>
|
||||
val budgets =
|
||||
parsed.mapValues { (_, v) ->
|
||||
val raw = (v["rawBytes"] as Number).toLong()
|
||||
@@ -279,8 +288,8 @@ tasks.register("checkBundleBudget") {
|
||||
}
|
||||
|
||||
fun gzipSize(bytes: ByteArray): Long {
|
||||
val baos = java.io.ByteArrayOutputStream()
|
||||
java.util.zip.GZIPOutputStream(baos).use { it.write(bytes) }
|
||||
val baos = ByteArrayOutputStream()
|
||||
GZIPOutputStream(baos).use { it.write(bytes) }
|
||||
return baos.toByteArray().size.toLong()
|
||||
}
|
||||
|
||||
@@ -296,7 +305,7 @@ tasks.register("checkBundleBudget") {
|
||||
}
|
||||
|
||||
shells.forEach { shell ->
|
||||
val key = shell.path.trimStart(':').replace(':', '/') // or use colon form for budgets keys below
|
||||
val key = shell.path.trimStart(':').replace(':', '/') // or use a colon form for budgets keys below
|
||||
val colonKey = shell.path.trimStart(':').replace('/', ':').trim() // ensure ":a:b:c"
|
||||
// Budgets are keyed by a Gradle path with colons but without leading colon in config for readability
|
||||
val budgetKeyCandidates =
|
||||
@@ -307,7 +316,7 @@ tasks.register("checkBundleBudget") {
|
||||
shell.name,
|
||||
)
|
||||
|
||||
val budgetEntry = budgetKeyCandidates.asSequence().mapNotNull { budgets[it] }.firstOrNull()
|
||||
val budgetEntry = budgetKeyCandidates.firstNotNullOfOrNull { budgets[it] }
|
||||
if (budgetEntry == null) {
|
||||
report.appendLine("- ${shell.path}: No budget configured (skipping)")
|
||||
return@forEach
|
||||
@@ -383,7 +392,7 @@ tasks.register("archGuards") {
|
||||
tasks.register("staticAnalysis") {
|
||||
group = "verification"
|
||||
description = "Run static analysis (detekt, ktlint) and architecture guards"
|
||||
// These tasks are provided by plugins; only depend if tasks exist
|
||||
// Plugins provide these tasks; only 'depend on' if tasks exist
|
||||
dependsOn(
|
||||
tasks.matching { it.name == "detekt" },
|
||||
tasks.matching { it.name == "ktlintCheck" },
|
||||
@@ -395,80 +404,36 @@ tasks.register("staticAnalysis") {
|
||||
// ### DOKKA (Multi-Module) ###
|
||||
// ##################################################################
|
||||
|
||||
// Apply Dokka automatically to Kotlin subprojects to enable per-module docs
|
||||
// Apply Dokka (V2) automatically to Kotlin subprojects
|
||||
subprojects {
|
||||
plugins.withId("org.jetbrains.kotlin.jvm") {
|
||||
apply(plugin = "org.jetbrains.dokka")
|
||||
}
|
||||
plugins.withId("org.jetbrains.kotlin.multiplatform") {
|
||||
apply(plugin = "org.jetbrains.dokka")
|
||||
}
|
||||
|
||||
// Minimal sourceLink configuration when running in GitHub Actions
|
||||
tasks.withType(org.jetbrains.dokka.gradle.DokkaTask::class.java).configureEach {
|
||||
dokkaSourceSets.configureEach {
|
||||
val repo = System.getenv("GITHUB_REPOSITORY")
|
||||
if (!repo.isNullOrBlank()) {
|
||||
sourceLink {
|
||||
localDirectory.set(project.file("src"))
|
||||
remoteUrl.set(
|
||||
java.net.URI.create(
|
||||
"https://github.com/$repo/blob/main/" + project.path.trimStart(':').replace(':', '/') + "/src",
|
||||
).toURL(),
|
||||
)
|
||||
}
|
||||
}
|
||||
// Keep module names short and stable
|
||||
moduleName.set(project.path.trimStart(':'))
|
||||
}
|
||||
}
|
||||
plugins.withId("org.jetbrains.kotlin.jvm") { apply(plugin = "org.jetbrains.dokka") }
|
||||
plugins.withId("org.jetbrains.kotlin.multiplatform") { apply(plugin = "org.jetbrains.dokka") }
|
||||
}
|
||||
|
||||
// Aggregate tasks to build multi-module docs in Markdown (GFM) and HTML
|
||||
val dokkaGfmAll =
|
||||
tasks.register("dokkaGfmAll") {
|
||||
// Unified V2 aggregator: builds docs via `dokkaGenerate` in subprojects and aggregates outputs
|
||||
val dokkaAll =
|
||||
tasks.register("dokkaAll") {
|
||||
group = "documentation"
|
||||
description = "Builds Dokka GFM for all modules and aggregates outputs under build/dokka/gfm"
|
||||
// Depend on all dokkaGfm tasks that exist in subprojects
|
||||
description = "Builds Dokka (V2) for all modules and aggregates outputs under build/dokka/all"
|
||||
// Trigger Dokka generation in all subprojects that have the Dokka plugin
|
||||
dependsOn(
|
||||
subprojects
|
||||
.filter { it.plugins.hasPlugin("org.jetbrains.dokka") }
|
||||
.map { "${it.path}:dokkaGfm" },
|
||||
.map { "${it.path}:dokkaGenerate" },
|
||||
)
|
||||
doLast {
|
||||
val dest = layout.buildDirectory.dir("dokka/gfm").get().asFile
|
||||
val dest = layout.buildDirectory.dir("dokka/all").get().asFile
|
||||
if (dest.exists()) dest.deleteRecursively()
|
||||
dest.mkdirs()
|
||||
subprojects.filter { it.plugins.hasPlugin("org.jetbrains.dokka") }.forEach { p ->
|
||||
val out = p.layout.buildDirectory.dir("dokka/gfm").get().asFile
|
||||
// Dokka V2 writes into build/dokka; copy everything to keep format/plugins agnostic
|
||||
val out = p.layout.buildDirectory.dir("dokka").get().asFile
|
||||
if (out.exists()) {
|
||||
out.copyRecursively(File(dest, p.path.trimStart(':').replace(':', '/')), overwrite = true)
|
||||
}
|
||||
}
|
||||
println("[DOKKA] Aggregated GFM into ${dest.absolutePath}")
|
||||
}
|
||||
}
|
||||
|
||||
val dokkaHtmlAll =
|
||||
tasks.register("dokkaHtmlAll") {
|
||||
group = "documentation"
|
||||
description = "Builds Dokka HTML for all modules and aggregates outputs under build/dokka/html"
|
||||
dependsOn(
|
||||
subprojects
|
||||
.filter { it.plugins.hasPlugin("org.jetbrains.dokka") }
|
||||
.map { "${it.path}:dokkaHtml" },
|
||||
)
|
||||
doLast {
|
||||
val dest = layout.buildDirectory.dir("dokka/html").get().asFile
|
||||
if (dest.exists()) dest.deleteRecursively()
|
||||
dest.mkdirs()
|
||||
subprojects.filter { it.plugins.hasPlugin("org.jetbrains.dokka") }.forEach { p ->
|
||||
val out = p.layout.buildDirectory.dir("dokka/html").get().asFile
|
||||
if (out.exists()) {
|
||||
out.copyRecursively(File(dest, p.path.trimStart(':').replace(':', '/')), overwrite = true)
|
||||
}
|
||||
}
|
||||
println("[DOKKA] Aggregated HTML into ${dest.absolutePath}")
|
||||
println("[DOKKA] Aggregated Dokka V2 outputs into ${dest.absolutePath}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -491,7 +456,7 @@ tasks.withType<Exec>().configureEach {
|
||||
val merged = if (current.isNullOrBlank()) "--no-deprecation" else "$current --no-deprecation"
|
||||
environment("NODE_OPTIONS", merged)
|
||||
environment("NODE_NO_WARNINGS", "1")
|
||||
// Set Chrome binary path to avoid snap permission issues
|
||||
// Set a Chrome binary path to avoid snap permission issues
|
||||
environment("CHROME_BIN", "/usr/bin/google-chrome-stable")
|
||||
environment("CHROMIUM_BIN", "/usr/bin/chromium")
|
||||
environment("PUPPETEER_EXECUTABLE_PATH", "/usr/bin/chromium")
|
||||
|
||||
+7
-7
@@ -243,7 +243,7 @@ services:
|
||||
args:
|
||||
# Build-Args aus deinen .env Dateien (werden hier statisch benötigt für den Build)
|
||||
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.1.0}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-21}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
|
||||
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
|
||||
BUILD_DATE: "${DOCKER_BUILD_DATE}"
|
||||
labels:
|
||||
@@ -317,7 +317,7 @@ services:
|
||||
args:
|
||||
# Build-Args aus deinen .env Dateien (werden hier statisch benötigt für den Build)
|
||||
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.1.0}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-21}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
|
||||
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
|
||||
BUILD_DATE: "${DOCKER_BUILD_DATE}"
|
||||
labels:
|
||||
@@ -373,7 +373,7 @@ services:
|
||||
dockerfile: backend/services/entries/Dockerfile
|
||||
args:
|
||||
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.1.0}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-21}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
|
||||
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
|
||||
BUILD_DATE: "${DOCKER_BUILD_DATE}"
|
||||
labels:
|
||||
@@ -411,7 +411,7 @@ services:
|
||||
dockerfile: backend/services/results/results-service/Dockerfile
|
||||
args:
|
||||
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.1.0}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-21}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
|
||||
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
|
||||
BUILD_DATE: "${DOCKER_BUILD_DATE}"
|
||||
labels:
|
||||
@@ -449,7 +449,7 @@ services:
|
||||
dockerfile: backend/services/scheduling/scheduling-service/Dockerfile
|
||||
args:
|
||||
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.1.0}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-21}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
|
||||
VERSION: "${DOCKER_VERSION:-1.0.0-SNAPSHOT}"
|
||||
BUILD_DATE: "${DOCKER_BUILD_DATE}"
|
||||
labels:
|
||||
@@ -492,9 +492,9 @@ services:
|
||||
dockerfile: config/docker/nginx/web-app/Dockerfile
|
||||
args:
|
||||
GRADLE_VERSION: "${DOCKER_GRADLE_VERSION:-9.1.0}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-21}"
|
||||
JAVA_VERSION: "${DOCKER_JAVA_VERSION:-25}"
|
||||
# Frontend spezifisch:
|
||||
NODE_VERSION: "${DOCKER_NODE_VERSION:-22.21.0}"
|
||||
NODE_VERSION: "${DOCKER_NODE_VERSION:-24.12.0}"
|
||||
NGINX_IMAGE_TAG: "${DOCKER_NGINX_VERSION:-1.28.0-alpine}"
|
||||
WEB_BUILD_PROFILE: "${WEB_BUILD_PROFILE:-dev}" # dev oder prod
|
||||
# Metadaten:
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ kotlin.incremental.multiplatform=true
|
||||
kotlin.incremental.js=true
|
||||
kotlin.caching.enabled=true
|
||||
kotlin.compiler.execution.strategy=in-process
|
||||
kotlin.compiler.preciseCompilationResultsBackup=true
|
||||
# kotlin.compiler.preciseCompilationResultsBackup=true
|
||||
kotlin.stdlib.default.dependency=true
|
||||
|
||||
# Gradle Configuration
|
||||
|
||||
+41
-45
@@ -4,11 +4,11 @@
|
||||
|
||||
[versions]
|
||||
# --- Android Ecosystem ---
|
||||
agp = "8.1.4"
|
||||
# agp = "8.1.4"
|
||||
|
||||
# --- Kotlin Ecosystem ---
|
||||
kotlin = "2.2.20"
|
||||
kotlin-logging = "7.0.3"
|
||||
kotlin = "2.3.0"
|
||||
kotlin-logging = "7.0.13"
|
||||
kotlinx = "1.10.2"
|
||||
kotlinx-serialization-json = "1.9.0"
|
||||
kotlinx-datetime = "0.7.1"
|
||||
@@ -16,44 +16,37 @@ kotlinx-coroutines = "1.10.2"
|
||||
|
||||
|
||||
# --- Spring Ecosystem ---
|
||||
springBoot = "3.5.6"
|
||||
springCloud = "2025.0.0"
|
||||
springCloudGateway = "4.3.0"
|
||||
springBoot = "3.5.9"
|
||||
springCloud = "2025.1.0"
|
||||
# springCloudGateway = "4.3.0"
|
||||
springDependencyManagement = "1.1.7"
|
||||
springdoc = "2.8.13"
|
||||
springdoc = "3.0.0"
|
||||
|
||||
# --- Ktor (API Layer & Client) ---
|
||||
ktor = "3.3.3"
|
||||
|
||||
# --- DI ---
|
||||
koin = "4.1.0"
|
||||
koinCompose = "4.0.0"
|
||||
koin = "4.1.1"
|
||||
koinCompose = "4.1.1"
|
||||
|
||||
# --- Compose UI ---
|
||||
androidx-lifecycle = "2.9.4"
|
||||
composeHotReload = "1.0.0-rc02"
|
||||
composeMultiplatform = "1.9.0"
|
||||
|
||||
# coroutinesVersion = "1.10.2"
|
||||
# dateTimeVersion = "0.7.1"
|
||||
# koin = "4.1.0"
|
||||
# ktor = "3.3.3"
|
||||
# sqlDelight = "2.1.0"
|
||||
# material3 = "1.3.2"
|
||||
androidx-lifecycle = "2.9.6"
|
||||
composeHotReload = "1.0.0"
|
||||
composeMultiplatform = "1.9.3"
|
||||
|
||||
# --- Database & Persistence ---
|
||||
exposed = "0.61.0"
|
||||
postgresql = "42.7.8"
|
||||
hikari = "7.0.2"
|
||||
h2 = "2.3.232"
|
||||
flyway = "11.7.2"
|
||||
redisson = "3.52.0"
|
||||
lettuce = "6.6.0.RELEASE"
|
||||
sqldelight = "2.1.0"
|
||||
h2 = "2.4.240"
|
||||
flyway = "11.19.1"
|
||||
redisson = "4.0.0"
|
||||
lettuce = "7.2.1.RELEASE"
|
||||
sqldelight = "2.2.1"
|
||||
|
||||
# --- Service Discovery & Monitoring ---
|
||||
micrometer = "1.15.4"
|
||||
micrometerTracing = "1.5.4"
|
||||
micrometer = "1.16.1"
|
||||
micrometerTracing = "1.6.1"
|
||||
zipkin = "3.5.1"
|
||||
zipkinReporter = "3.5.1"
|
||||
|
||||
@@ -62,26 +55,29 @@ auth0Jwt = "4.5.0"
|
||||
keycloakAdminClient = "26.0.7"
|
||||
|
||||
# --- Testing ---
|
||||
junitJupiter = "5.12.2"
|
||||
junitPlatform = "1.12.2"
|
||||
mockk = "1.14.6"
|
||||
assertj = "3.27.4"
|
||||
testcontainers = "1.21.3"
|
||||
testcontainersKeycloak = "3.9.0"
|
||||
junitJupiter = "6.0.1"
|
||||
junitPlatform = "6.0.1"
|
||||
mockk = "1.14.7"
|
||||
assertj = "3.27.6"
|
||||
testcontainers = "2.0.3"
|
||||
testcontainersKeycloak = "4.0.1"
|
||||
testcontainersJunitJupiter = "1.21.4"
|
||||
testcontainersPostgresql = "1.21.4"
|
||||
testcontainersKafka = "1.21.4"
|
||||
|
||||
# --- Resilience4j ---
|
||||
resilience4j = "2.3.0"
|
||||
|
||||
# --- Utilities ---
|
||||
#uuid = "0.9.0"
|
||||
# uuid = "0.9.0"
|
||||
bignum = "0.3.10"
|
||||
logback = "1.5.19"
|
||||
caffeine = "3.2.2"
|
||||
reactorKafka = "1.3.23"
|
||||
jackson = "2.19.2"
|
||||
logback = "1.5.22"
|
||||
caffeine = "3.2.3"
|
||||
# reactorKafka = "1.3.23"
|
||||
jackson = "3.0.3"
|
||||
jakartaAnnotation = "3.0.0"
|
||||
roomCommonJvm = "2.8.2"
|
||||
uiDesktop = "1.9.3"
|
||||
roomCommonJvm = "2.8.4"
|
||||
uiDesktop = "1.7.0"
|
||||
|
||||
# --- Logging ---
|
||||
slf4j = "2.0.17"
|
||||
@@ -235,9 +231,9 @@ reactor-test = { module = "io.projectreactor:reactor-test" } # Version wird von
|
||||
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
|
||||
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj" }
|
||||
testcontainers-core = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers" }
|
||||
testcontainers-junit-jupiter = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers" }
|
||||
testcontainers-postgresql = { module = "org.testcontainers:postgresql", version.ref = "testcontainers" }
|
||||
testcontainers-kafka = { module = "org.testcontainers:kafka", version.ref = "testcontainers" }
|
||||
testcontainers-junit-jupiter = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainersJunitJupiter" }
|
||||
testcontainers-postgresql = { module = "org.testcontainers:postgresql", version.ref = "testcontainersPostgresql" }
|
||||
testcontainers-kafka = { module = "org.testcontainers:kafka", version.ref = "testcontainersKafka" }
|
||||
testcontainers-keycloak = { module = "com.github.dasniko:testcontainers-keycloak", version.ref = "testcontainersKeycloak" }
|
||||
room-common-jvm = { module = "androidx.room:room-common-jvm", version.ref = "roomCommonJvm" }
|
||||
ui-desktop = { module = "androidx.compose.ui:ui-desktop", version.ref = "uiDesktop" }
|
||||
@@ -500,8 +496,8 @@ monitoring-complete = [
|
||||
|
||||
|
||||
[plugins]
|
||||
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||
androidLibrary = { id = "com.android.library", version.ref = "agp" }
|
||||
# androidApplication = { id = "com.android.application", version.ref = "agp" }
|
||||
# androidLibrary = { id = "com.android.library", version.ref = "agp" }
|
||||
kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
||||
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
|
||||
kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
||||
@@ -524,4 +520,4 @@ foojayResolver = { id = "org.gradle.toolchains.foojay-resolver-convention", vers
|
||||
# See: https://github.com/Kotlin/dokka
|
||||
# Note: dokka 2.0.0+ matches Kotlin 2.0+; verify compatibility if bumping Kotlin
|
||||
# Using latest stable known compatible as of 2025-10
|
||||
dokka = { id = "org.jetbrains.dokka", version = "2.0.0" }
|
||||
dokka = { id = "org.jetbrains.dokka", version = "2.1.0" }
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
+23
-24
@@ -2,10 +2,10 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@cashapp/sqldelight-sqljs-worker@2.1.0":
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@cashapp/sqldelight-sqljs-worker/-/sqldelight-sqljs-worker-2.1.0.tgz#4ab898698aca9487f47fc9a42107c606c3ce81c5"
|
||||
integrity sha512-odvBljb1rUOCk3UUZgjdiAChEohYI4Fy6Tj3NUy3l6u3WV/we+tjDTJ/kC25CJKD4pv0ZlH5AL1sKsZ5clKCew==
|
||||
"@cashapp/sqldelight-sqljs-worker@2.2.1":
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@cashapp/sqldelight-sqljs-worker/-/sqldelight-sqljs-worker-2.2.1.tgz#c71776a9dddfc435d4f1e64317a7039d447ea024"
|
||||
integrity sha512-cj/llgS1T94t7rz63fI7pbi+jJx+vQofCT58KyMZb9XVRuoxb4taB5wbbBa4e/iljiuN5XIGGPFx+5PvtVh3LQ==
|
||||
|
||||
"@colors/colors@1.5.0":
|
||||
version "1.5.0"
|
||||
@@ -1041,10 +1041,10 @@ engine.io@~6.6.0:
|
||||
engine.io-parser "~5.2.1"
|
||||
ws "~8.17.1"
|
||||
|
||||
enhanced-resolve@^5.17.2:
|
||||
version "5.18.3"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
|
||||
integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
|
||||
enhanced-resolve@^5.17.3:
|
||||
version "5.18.4"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828"
|
||||
integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
@@ -1740,10 +1740,9 @@ karma-webpack@5.0.1:
|
||||
minimatch "^9.0.3"
|
||||
webpack-merge "^4.1.5"
|
||||
|
||||
karma@6.4.4:
|
||||
"karma@github:Kotlin/karma#6.4.5":
|
||||
version "6.4.4"
|
||||
resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.4.tgz#dfa5a426cf5a8b53b43cd54ef0d0d09742351492"
|
||||
integrity sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==
|
||||
resolved "https://codeload.github.com/Kotlin/karma/tar.gz/239a8fc984584f0d96b1dd750e7a5e2c79da93a6"
|
||||
dependencies:
|
||||
"@colors/colors" "1.5.0"
|
||||
body-parser "^1.19.0"
|
||||
@@ -1775,10 +1774,10 @@ kind-of@^6.0.2:
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||
|
||||
kotlin-web-helpers@2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/kotlin-web-helpers/-/kotlin-web-helpers-2.1.0.tgz#6cd4b0f0dc3baea163929c8638155b8d19c55a74"
|
||||
integrity sha512-NAJhiNB84tnvJ5EQx7iER3GWw7rsTZkX9HVHZpe7E3dDBD/dhTzqgSwNU3MfQjniy2rB04bP24WM9Z32ntUWRg==
|
||||
kotlin-web-helpers@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/kotlin-web-helpers/-/kotlin-web-helpers-3.0.0.tgz#3ed6b48f694f74bb60a737a9d7e2c0e3b29abdb9"
|
||||
integrity sha512-kdQO4AJQkUPvpLh9aglkXDRyN+CfXO7pKq+GESEnxooBFkQpytLrqZis3ABvmFN1cGw/ZQ/K38u5sRGW+NfBnw==
|
||||
dependencies:
|
||||
format-util "^1.0.5"
|
||||
|
||||
@@ -1953,10 +1952,10 @@ mkdirp@^0.5.5:
|
||||
dependencies:
|
||||
minimist "^1.2.6"
|
||||
|
||||
mocha@11.7.1:
|
||||
version "11.7.1"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.1.tgz#91948fecd624fb4bd154ed260b7e1ad3910d7c7a"
|
||||
integrity sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==
|
||||
mocha@11.7.2:
|
||||
version "11.7.2"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.2.tgz#3c0079fe5cc2f8ea86d99124debcc42bb1ab22b5"
|
||||
integrity sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==
|
||||
dependencies:
|
||||
browser-stdout "^1.3.1"
|
||||
chokidar "^4.0.1"
|
||||
@@ -2977,10 +2976,10 @@ webpack-sources@^3.3.3:
|
||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723"
|
||||
integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==
|
||||
|
||||
webpack@5.100.2:
|
||||
version "5.100.2"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.100.2.tgz#e2341facf9f7de1d702147c91bcb65b693adf9e8"
|
||||
integrity sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==
|
||||
webpack@5.101.3:
|
||||
version "5.101.3"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.101.3.tgz#3633b2375bb29ea4b06ffb1902734d977bc44346"
|
||||
integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==
|
||||
dependencies:
|
||||
"@types/eslint-scope" "^3.7.7"
|
||||
"@types/estree" "^1.0.8"
|
||||
@@ -2992,7 +2991,7 @@ webpack@5.100.2:
|
||||
acorn-import-phases "^1.0.3"
|
||||
browserslist "^4.24.0"
|
||||
chrome-trace-event "^1.0.2"
|
||||
enhanced-resolve "^5.17.2"
|
||||
enhanced-resolve "^5.17.3"
|
||||
es-module-lexer "^1.2.1"
|
||||
eslint-scope "5.1.1"
|
||||
events "^3.2.0"
|
||||
|
||||
Reference in New Issue
Block a user