diff --git a/Jenkinsfile b/Jenkinsfile
index ebf30e8097..82341e4b00 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -7,9 +7,6 @@ JobContext.set(this)
final def gitCommitTag = '[Jenkins | ' + env.JOB_BASE_NAME + ']';
-final def testDbManagerHost = "gcn-testdb-manager.gtx-dev.svc"
-final def testDbManagerPort = "8080"
-
def branchName = null
def version = null
def releaseVersion = ""
@@ -291,7 +288,7 @@ spec:
// Login to docker.gentics.com so that the tests can pull all Mesh images
authDockerRegistry("docker.gentics.com", "docker.gentics.com")
authDockerRegistry("docker.gentics.com", "push.docker.gentics.com")
- withEnv(["TESTMANAGER_HOSTNAME=" + testDbManagerHost, "TESTMANAGER_PORT=" + testDbManagerPort, "TESTCONTAINERS_RYUK_DISABLED=true"]) {
+ withEnv(["TESTCONTAINERS_RYUK_DISABLED=true"]) {
sh "mvn -B -Dstyle.color=always -U -Dskip.integration.tests -Dui.skip.integrationTest=true " +
" -fae -Dmaven.test.failure.ignore=true " + mvnArguments + mvnProjects + " clean " + mvnGoal
}
diff --git a/base-lib/pom.xml b/base-lib/pom.xml
index e30c4cd1bc..223529923a 100644
--- a/base-lib/pom.xml
+++ b/base-lib/pom.xml
@@ -22,6 +22,8 @@
UTF-8
yyyyMMdd-HHmmss
+
+ testdb-mariadb
8
@@ -57,6 +59,7 @@
+
org.codehaus.mojo
build-helper-maven-plugin
diff --git a/build/testdb/initdb/01-gcn-testdb-accounts.sql b/build/testdb/initdb/01-gcn-testdb-accounts.sql
new file mode 100644
index 0000000000..aeff73e85f
--- /dev/null
+++ b/build/testdb/initdb/01-gcn-testdb-accounts.sql
@@ -0,0 +1,15 @@
+--
+-- Account used by the Gentics CMS test suites on the local test database container.
+-- See build/testdb/README.md.
+--
+-- The gcn-testdb-manager hands this account out to the tests and runs
+-- GRANT ALL PRIVILEGES ON *.* to node@'%' IDENTIFIED BY ''
+-- for every database it prepares. Since MariaDB 10.4 that statement does not create the
+-- account implicitly any more, so it is created here. The empty password is required:
+-- the manager always reports an empty password back to the tests
+-- (com.gentics.testutils.testdbmanager.ManagerResponse#toProperties).
+--
+CREATE USER IF NOT EXISTS 'node'@'%';
+GRANT ALL PRIVILEGES ON *.* TO 'node'@'%' WITH GRANT OPTION;
+
+FLUSH PRIVILEGES;
diff --git a/cms-js-lib/pom.xml b/cms-js-lib/pom.xml
index be7cff30ef..bedd30c776 100644
--- a/cms-js-lib/pom.xml
+++ b/cms-js-lib/pom.xml
@@ -19,6 +19,8 @@
UTF-8
yyyyMMdd-HHmmss
+
+ true
diff --git a/cms-oss-changelog/src/changelog/entries/2026/08/8893.GPU-2602.enhancement b/cms-oss-changelog/src/changelog/entries/2026/08/8893.GPU-2602.enhancement
new file mode 100644
index 0000000000..72198bf869
--- /dev/null
+++ b/cms-oss-changelog/src/changelog/entries/2026/08/8893.GPU-2602.enhancement
@@ -0,0 +1 @@
+Gentics CMS is now tested against MariaDB 12.3 automatically
\ No newline at end of file
diff --git a/cms-oss-doc/src/main/source/gcn_compatibility_list.textile b/cms-oss-doc/src/main/source/gcn_compatibility_list.textile
index 877b9fb365..ed0f5420e5 100644
--- a/cms-oss-doc/src/main/source/gcn_compatibility_list.textile
+++ b/cms-oss-doc/src/main/source/gcn_compatibility_list.textile
@@ -13,8 +13,9 @@ h4. MariaDB
Gentics CMS supports the Long Term Support (LTS) versions of MariaDB.
|_.Major Version |_.Minor Versions |_.Supported |_.Notes |
+| 12 | 12.3 | Yes[1] | |
| 11 | 11.4 | Yes | |
-| 10 | 10.6, 10.11 | Yes[1] | Since Gentics CMS 6.0.0 |
+| 10 | 10.6, 10.11 | Yes | Since Gentics CMS 6.0.0 |
NOTE: For MariaDB versions 11.6 and up, the setting @innodb_snapshot_isolation@ must be disabled in the configuration.
diff --git a/pom.xml b/pom.xml
index 9e880ea1b9..9417cb9f66 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,24 @@
5.8.1
2.7.2
+ 0.49.0
+ false
+ localhost
+ IfNotPresent
+ testdb-mariadb,testdb-manager
+ testdb-mariadb,testdb-manager
+ 33306
+ 38080
+ mariadb:12.3
+ 3000
+ root
+ testdb
+ ${maven.multiModuleProjectDirectory}/build/testdb/initdb/01-gcn-testdb-accounts.sql
+ docker.gentics.com/apps/gcn-testdb-manager:master
+ 5
+ 40
+ 4
+
3.1.2
16
4
@@ -345,6 +363,88 @@
+
+ io.fabric8
+ docker-maven-plugin
+ ${docker.maven.plugin.version}
+
+ ${testdb.docker.skip}
+ ${testdb.docker.images}
+ ${testdb.showLogs}
+ true
+
+
+ testdb-mariadb
+ gentics/cms-oss-testdb-mariadb:local
+
+ ${testdb.mariadb.image}
+
+ /docker-entrypoint-initdb.d
+
+ initdb
+
+
+ ${testdb.initdb.script}
+ .
+
+
+
+
+
+
+
+
+ --port=${testdb.mariadb.port}
+ --transaction-isolation=READ-COMMITTED
+ --binlog-format=ROW
+ --log-bin=mysqld-bin
+ --max-allowed-packet=67108864
+ --max-connections=${testdb.mariadb.maxConnections}
+
+
+
+ Europe/Vienna
+ ${testdb.mariadb.password}
+
+
+ ${testdb.mariadb.port}:${testdb.mariadb.port}
+ ${testdb.manager.port}:${testdb.manager.port}
+
+
+ .*port: ${testdb.mariadb.port} mariadb.org binary distribution.*
+
+
+
+
+
+ testdb-manager
+ ${testdb.manager.image}
+
+ ${testdb.pullPolicy}
+
+ container
+ testdb-mariadb
+
+
+ Europe/Vienna
+ ${testdb.manager.port}
+ ${testdb.host}
+ ${testdb.mariadb.port}
+ ${testdb.mariadb.user}
+ ${testdb.mariadb.password}
+ ${testdb.manager.pool.capacity}
+ ${testdb.manager.gcndb.limit}
+ ${testdb.manager.filler.threads}
+
+
+ .*msg=Listening.*
+
+
+
+
+
+
+
org.codehaus.mojo
jslint-maven-plugin
@@ -435,6 +535,130 @@
+
+
+
+ testdb-containers
+
+
+ src/test/java
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ io.fabric8
+ docker-maven-plugin
+
+
+
+ testdb-start
+ generate-test-resources
+
+ build
+ start
+
+
+
+
+ testdb-stop
+ test
+
+ stop
+
+
+
+
+
+
+
+
+
+ local-testdb
+
+
+ !testdb.docker.skip
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+ ${testdb.host}
+ ${testdb.manager.port}
+
+ ${testdb.host}
+ ${testdb.mariadb.port}
+ ${testdb.mariadb.user}
+ ${testdb.mariadb.password}
+ ${testdb.host}
+ ${testdb.mariadb.port}
+ ${testdb.mariadb.user}
+ ${testdb.mariadb.password}
+
+
+
+
+
+
+
+
+
+
+ no-testdb-for-skipped-tests
+
+
+ skipTests
+ true
+
+
+
+ true
+
+
+
+ no-testdb-for-skipped-unit-tests
+
+
+ skip.unit.tests
+ true
+
+
+
+ true
+
+
+
+ no-testdb-for-skipped-test-compile
+
+
+ maven.test.skip
+ true
+
+
+
+ true
+
+
+
+
gentics.nexus.releases-oss